Changeset 39020 in webkit for trunk/JavaScriptCore/jit/JIT.cpp
- Timestamp:
- Dec 4, 2008, 10:58:40 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JIT.cpp
r38992 r39020 566 566 int skip = instruction[i + 3].u.operand + m_codeBlock->needsFullScopeChain; 567 567 568 emitGet VirtualRegister(RegisterFile::ScopeChain, X86::eax, i);568 emitGetFromCallFrameHeader(RegisterFile::ScopeChain, X86::eax); 569 569 while (skip--) 570 570 __ movl_mr(FIELD_OFFSET(ScopeChainNode, next), X86::eax, X86::eax); … … 579 579 int skip = instruction[i + 2].u.operand + m_codeBlock->needsFullScopeChain; 580 580 581 emitGet VirtualRegister(RegisterFile::ScopeChain, X86::edx, i);581 emitGetFromCallFrameHeader(RegisterFile::ScopeChain, X86::edx); 582 582 emitGetVirtualRegister(instruction[i + 3].u.operand, X86::eax, i); 583 583 while (skip--) … … 609 609 610 610 // Grab the return address. 611 emitGet VirtualRegister(RegisterFile::ReturnPC, X86::edx, i);611 emitGetFromCallFrameHeader(RegisterFile::ReturnPC, X86::edx); 612 612 613 613 // Restore our caller's "r". 614 emitGet VirtualRegister(RegisterFile::CallerFrame, X86::edi,i);614 emitGetFromCallFrameHeader(RegisterFile::CallerFrame, X86::edi); 615 615 616 616 // Return. … … 948 948 case op_eq: { 949 949 emitGetVirtualRegisters(instruction[i + 2].u.operand, X86::eax, instruction[i + 3].u.operand, X86::edx, i); 950 emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, i);950 emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, X86::ecx, i); 951 951 __ cmpl_rr(X86::edx, X86::eax); 952 952 __ sete_r(X86::eax); … … 1072 1072 case op_neq: { 1073 1073 emitGetVirtualRegisters(instruction[i + 2].u.operand, X86::eax, instruction[i + 3].u.operand, X86::edx, i); 1074 emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, i);1074 emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, X86::ecx, i); 1075 1075 __ cmpl_rr(X86::eax, X86::edx); 1076 1076 … … 1099 1099 case op_bitxor: { 1100 1100 emitGetVirtualRegisters(instruction[i + 2].u.operand, X86::eax, instruction[i + 3].u.operand, X86::edx, i); 1101 emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, i);1101 emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, X86::ecx, i); 1102 1102 __ xorl_rr(X86::edx, X86::eax); 1103 1103 emitFastArithReTagImmediate(X86::eax); … … 1116 1116 case op_bitor: { 1117 1117 emitGetVirtualRegisters(instruction[i + 2].u.operand, X86::eax, instruction[i + 3].u.operand, X86::edx, i); 1118 emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, i);1118 emitJumpSlowCaseIfNotImmNums(X86::eax, X86::edx, X86::ecx, i); 1119 1119 __ orl_rr(X86::edx, X86::eax); 1120 1120 emitPutVirtualRegister(instruction[i + 1].u.operand); … … 2006 2006 if (m_codeBlock->codeType == FunctionCode) { 2007 2007 // In the case of a fast linked call, we do not set this up in the caller. 2008 __ movl_i32m(reinterpret_cast<unsigned>(m_codeBlock), RegisterFile::CodeBlock * static_cast<int>(sizeof(Register)), X86::edi);2008 emitPutImmediateToCallFrameHeader(m_codeBlock, RegisterFile::CodeBlock); 2009 2009 2010 2010 emitGetCTIParam(CTI_ARGS_registerFile, X86::eax); … … 2141 2141 JmpSrc hasCodeBlock1 = __ jne(); 2142 2142 __ popl_r(X86::ebx); 2143 __restoreArgumentReference();2143 restoreArgumentReference(); 2144 2144 emitPutCTIParam(X86::edi, CTI_ARGS_callFrame); 2145 2145 JmpSrc callJSFunction1 = __ call(); … … 2155 2155 emitPutCTIArg(X86::ebx, 4); 2156 2156 emitPutCTIArg(X86::eax, 12); 2157 __restoreArgumentReference();2157 restoreArgumentReference(); 2158 2158 emitPutCTIParam(X86::edi, CTI_ARGS_callFrame); 2159 2159 JmpSrc callArityCheck1 = __ call(); … … 2168 2168 __ popl_r(X86::ebx); 2169 2169 emitPutCTIArg(X86::ebx, 4); 2170 __restoreArgumentReference();2170 restoreArgumentReference(); 2171 2171 emitPutCTIParam(X86::edi, CTI_ARGS_callFrame); 2172 2172 JmpSrc callDontLazyLinkCall = __ call(); … … 2183 2183 JmpSrc hasCodeBlock2 = __ jne(); 2184 2184 __ popl_r(X86::ebx); 2185 __restoreArgumentReference();2185 restoreArgumentReference(); 2186 2186 emitPutCTIParam(X86::edi, CTI_ARGS_callFrame); 2187 2187 JmpSrc callJSFunction2 = __ call(); … … 2197 2197 emitPutCTIArg(X86::ebx, 4); 2198 2198 emitPutCTIArg(X86::eax, 12); 2199 __restoreArgumentReference();2199 restoreArgumentReference(); 2200 2200 emitPutCTIParam(X86::edi, CTI_ARGS_callFrame); 2201 2201 JmpSrc callArityCheck2 = __ call(); … … 2210 2210 __ popl_r(X86::ebx); 2211 2211 emitPutCTIArg(X86::ebx, 4); 2212 __restoreArgumentReference();2212 restoreArgumentReference(); 2213 2213 emitPutCTIParam(X86::edi, CTI_ARGS_callFrame); 2214 2214 JmpSrc callLazyLinkCall = __ call(); … … 2225 2225 JmpSrc hasCodeBlock3 = __ jne(); 2226 2226 __ popl_r(X86::ebx); 2227 __restoreArgumentReference();2227 restoreArgumentReference(); 2228 2228 emitPutCTIParam(X86::edi, CTI_ARGS_callFrame); 2229 2229 JmpSrc callJSFunction3 = __ call(); … … 2239 2239 emitPutCTIArg(X86::ebx, 4); 2240 2240 emitPutCTIArg(X86::eax, 12); 2241 __restoreArgumentReference();2241 restoreArgumentReference(); 2242 2242 emitPutCTIParam(X86::edi, CTI_ARGS_callFrame); 2243 2243 JmpSrc callArityCheck3 = __ call();
Note:
See TracChangeset
for help on using the changeset viewer.