Changeset 44838 in webkit for trunk/JavaScriptCore/jit
- Timestamp:
- Jun 18, 2009, 7:32:29 PM (16 years ago)
- Location:
- trunk/JavaScriptCore/jit
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITOpcodes.cpp
r44796 r44838 623 623 stubCall.call(); 624 624 ASSERT(regT0 == returnValueRegister); 625 #if PLATFORM(X86_64) 626 addPtr(Imm32(0x48), X86::esp); 627 pop(X86::ebx); 628 pop(X86::r15); 629 pop(X86::r14); 630 pop(X86::r13); 631 pop(X86::r12); 632 pop(X86::ebp); 633 ret(); 634 #else 635 addPtr(Imm32(0x1c), X86::esp); 636 pop(X86::ebx); 637 pop(X86::edi); 638 pop(X86::esi); 639 pop(X86::ebp); 640 ret(); 625 #ifndef NDEBUG 626 // cti_op_throw always changes it's return address, 627 // this point in the code should never be reached. 628 breakpoint(); 641 629 #endif 642 630 } -
trunk/JavaScriptCore/jit/JITStubs.cpp
r44796 r44838 78 78 COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x1c, JITStackFrame_stub_argument_space_matches_ctiTrampoline); 79 79 80 asm (80 asm volatile ( 81 81 ".globl " SYMBOL_STRING(ctiTrampoline) "\n" 82 82 SYMBOL_STRING(ctiTrampoline) ":" "\n" … … 98 98 ); 99 99 100 asm (100 asm volatile ( 101 101 ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" 102 102 SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n" … … 113 113 ); 114 114 115 asm volatile ( 116 ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n" 117 SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n" 118 "addl $0x1c, %esp" "\n" 119 "popl %ebx" "\n" 120 "popl %edi" "\n" 121 "popl %esi" "\n" 122 "popl %ebp" "\n" 123 "ret" "\n" 124 ); 125 115 126 #elif COMPILER(GCC) && PLATFORM(X86_64) 116 127 … … 125 136 COMPILE_ASSERT(offsetof(struct JITStackFrame, savedRBX) == 0x48, JITStackFrame_stub_argument_space_matches_ctiTrampoline); 126 137 127 asm (138 asm volatile ( 128 139 ".globl " SYMBOL_STRING(ctiTrampoline) "\n" 129 140 SYMBOL_STRING(ctiTrampoline) ":" "\n" … … 151 162 ); 152 163 153 asm (164 asm volatile ( 154 165 ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" 155 166 SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n" … … 166 177 ); 167 178 179 asm volatile ( 180 ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n" 181 SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n" 182 "addq $0x48, %rsp" "\n" 183 "popq %rbx" "\n" 184 "popq %r15" "\n" 185 "popq %r14" "\n" 186 "popq %r13" "\n" 187 "popq %r12" "\n" 188 "popq %rbp" "\n" 189 "ret" "\n" 190 ); 191 168 192 #elif COMPILER(GCC) && PLATFORM(ARM_V7) 169 193 … … 183 207 COMPILE_ASSERT(offsetof(struct JITStackFrame, enabledProfilerReference) == 0x3c, JITStackFrame_enabledProfilerReference_offset_matches_ctiTrampoline); 184 208 185 asm volatile 209 asm volatile ( 186 210 ".text" "\n" 187 211 ".align 2" "\n" … … 290 314 } 291 315 } 316 317 __declspec(naked) void ctiOpThrowNotCaught() 318 { 319 __asm { 320 add esp, 0x1c; 321 pop ebx; 322 pop edi; 323 pop esi; 324 pop ebp; 325 ret; 326 } 327 } 292 328 } 293 329 … … 2313 2349 if (!handler) { 2314 2350 *stackFrame.exception = exceptionValue; 2351 STUB_SET_RETURN_ADDRESS(reinterpret_cast<void*>(ctiOpThrowNotCaught)); 2315 2352 return JSValue::encode(jsNull()); 2316 2353 } -
trunk/JavaScriptCore/jit/JITStubs.h
r44796 r44838 183 183 184 184 extern "C" void ctiVMThrowTrampoline(); 185 extern "C" void ctiOpThrowNotCaught(); 185 186 extern "C" EncodedJSValue ctiTrampoline( 186 187 #if PLATFORM(X86_64)
Note:
See TracChangeset
for help on using the changeset viewer.