Changeset 163027 in webkit for trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
- Timestamp:
- Jan 29, 2014, 11:18:54 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
r162940 r163027 191 191 { 192 192 JITGetByIdGenerator gen( 193 m_jit.codeBlock(), codeOrigin, usedRegisters(), GPRInfo::callFrameRegister,194 JSValueRegs( baseGPR), JSValueRegs(resultGPR), spillMode != NeedToSpill);193 m_jit.codeBlock(), codeOrigin, usedRegisters(), JSValueRegs(baseGPR), 194 JSValueRegs(resultGPR), spillMode != NeedToSpill); 195 195 gen.generateFastPath(m_jit); 196 196 … … 211 211 { 212 212 JITPutByIdGenerator gen( 213 m_jit.codeBlock(), codeOrigin, usedRegisters(), GPRInfo::callFrameRegister, 214 JSValueRegs(baseGPR), JSValueRegs(valueGPR), scratchGPR, false, 215 m_jit.ecmaModeFor(codeOrigin), putKind); 213 m_jit.codeBlock(), codeOrigin, usedRegisters(), JSValueRegs(baseGPR), 214 JSValueRegs(valueGPR), scratchGPR, false, m_jit.ecmaModeFor(codeOrigin), putKind); 216 215 gen.generateFastPath(m_jit); 217 216 … … 664 663 int numArgs = numPassedArgs + dummyThisArgument; 665 664 666 m_jit.store32(MacroAssembler::TrustedImm32(numArgs), calleeFramePayloadSlot(numArgs, JSStack::ArgumentCount)); 667 m_jit.store64(GPRInfo::callFrameRegister, calleeFrameCallerFrame(numArgs)); 668 m_jit.store64(calleeGPR, calleeFrameSlot(numArgs, JSStack::Callee)); 665 m_jit.store32(MacroAssembler::TrustedImm32(numArgs), calleeFramePayloadSlot(JSStack::ArgumentCount)); 666 m_jit.store64(calleeGPR, calleeFrameSlot(JSStack::Callee)); 669 667 670 668 for (int i = 0; i < numPassedArgs; i++) { … … 674 672 use(argEdge); 675 673 676 m_jit.store64(argGPR, calleeArgumentSlot( numArgs,i + dummyThisArgument));674 m_jit.store64(argGPR, calleeArgumentSlot(i + dummyThisArgument)); 677 675 } 678 676 … … 683 681 684 682 JITCompiler::DataLabelPtr targetToCheck; 685 JITCompiler::Jump ListslowPath;683 JITCompiler::Jump slowPath; 686 684 687 685 m_jit.emitStoreCodeOrigin(node->codeOrigin); 688 686 689 m_jit.addPtr(TrustedImm32(calleeFrameOffset(numArgs)), GPRInfo::callFrameRegister); 690 691 slowPath.append(m_jit.branchPtrWithPatch(MacroAssembler::NotEqual, calleeGPR, targetToCheck, MacroAssembler::TrustedImmPtr(0))); 687 slowPath = m_jit.branchPtrWithPatch(MacroAssembler::NotEqual, calleeGPR, targetToCheck, MacroAssembler::TrustedImmPtr(0)); 692 688 693 689 m_jit.loadPtr(MacroAssembler::Address(calleeGPR, OBJECT_OFFSETOF(JSFunction, m_scope)), resultGPR); 694 m_jit.store64(resultGPR, MacroAssembler::Address(GPRInfo::callFrameRegister, static_cast<ptrdiff_t>(sizeof(Register)) *JSStack::ScopeChain));690 m_jit.store64(resultGPR, calleeFrameSlot(JSStack::ScopeChain)); 695 691 696 692 JITCompiler::Call fastCall = m_jit.nearCall(); 697 693 698 694 JITCompiler::Jump done = m_jit.jump(); 699 695 700 696 slowPath.link(&m_jit); 697 698 if (m_jit.graph().m_plan.willTryToTierUp) { 699 m_jit.add32( 700 TrustedImm32(1), 701 MacroAssembler::AbsoluteAddress( 702 m_jit.jitCode()->slowPathCalls.begin() + m_jit.currentJSCallIndex())); 703 } 701 704 702 705 m_jit.move(calleeGPR, GPRInfo::regT0); // Callee needs to be in regT0 … … 3201 3204 addSlowPathGenerator( 3202 3205 slowPathCall( 3203 slowPath, this, operationArrayPush, NoResult,storageLengthGPR,3206 slowPath, this, operationArrayPush, storageLengthGPR, 3204 3207 valueGPR, baseGPR)); 3205 3208 … … 3225 3228 addSlowPathGenerator( 3226 3229 slowPathCall( 3227 slowPath, this, operationArrayPushDouble, NoResult,storageLengthGPR,3230 slowPath, this, operationArrayPushDouble, storageLengthGPR, 3228 3231 valueFPR, baseGPR)); 3229 3232 … … 3389 3392 m_jit.move(op1.gpr(), GPRInfo::returnValueGPR); 3390 3393 3391 // Grab the return address. 3392 m_jit.emitGetReturnPCFromCallFrameHeaderPtr(GPRInfo::regT1); 3393 // Restore our caller's "r". 3394 m_jit.emitGetCallerFrameFromCallFrameHeaderPtr(GPRInfo::callFrameRegister); 3395 // Return. 3396 m_jit.restoreReturnAddressBeforeReturn(GPRInfo::regT1); 3394 m_jit.emitFunctionEpilogue(); 3397 3395 m_jit.ret(); 3398 3396
Note:
See TracChangeset
for help on using the changeset viewer.