Ignore:
Timestamp:
Jan 29, 2014, 11:18:54 AM (12 years ago)
Author:
[email protected]
Message:

Merge the jsCStack branch
https://bugs.webkit.org/show_bug.cgi?id=127763

Reviewed by Mark Hahnenberg.

Source/JavaScriptCore:

Changes from http://svn.webkit.org/repository/webkit/branches/jsCStack
up to changeset 162958.

Source/WebCore:

Changes from http://svn.webkit.org/repository/webkit/branches/jsCStack
up to changeset 162958.

Source/WTF:

Changes from http://svn.webkit.org/repository/webkit/branches/jsCStack
up to changeset 162958.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp

    r162940 r163027  
    191191{
    192192    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);
    195195    gen.generateFastPath(m_jit);
    196196   
     
    211211{
    212212    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);
    216215    gen.generateFastPath(m_jit);
    217216   
     
    664663    int numArgs = numPassedArgs + dummyThisArgument;
    665664   
    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));
    669667   
    670668    for (int i = 0; i < numPassedArgs; i++) {
     
    674672        use(argEdge);
    675673       
    676         m_jit.store64(argGPR, calleeArgumentSlot(numArgs, i + dummyThisArgument));
     674        m_jit.store64(argGPR, calleeArgumentSlot(i + dummyThisArgument));
    677675    }
    678676
     
    683681
    684682    JITCompiler::DataLabelPtr targetToCheck;
    685     JITCompiler::JumpList slowPath;
     683    JITCompiler::Jump slowPath;
    686684
    687685    m_jit.emitStoreCodeOrigin(node->codeOrigin);
    688686   
    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));
    692688
    693689    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));
    695691
    696692    JITCompiler::Call fastCall = m_jit.nearCall();
    697    
     693
    698694    JITCompiler::Jump done = m_jit.jump();
    699695   
    700696    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    }
    701704   
    702705    m_jit.move(calleeGPR, GPRInfo::regT0); // Callee needs to be in regT0
     
    32013204            addSlowPathGenerator(
    32023205                slowPathCall(
    3203                     slowPath, this, operationArrayPush, NoResult, storageLengthGPR,
     3206                    slowPath, this, operationArrayPush, storageLengthGPR,
    32043207                    valueGPR, baseGPR));
    32053208       
     
    32253228            addSlowPathGenerator(
    32263229                slowPathCall(
    3227                     slowPath, this, operationArrayPushDouble, NoResult, storageLengthGPR,
     3230                    slowPath, this, operationArrayPushDouble, storageLengthGPR,
    32283231                    valueFPR, baseGPR));
    32293232       
     
    33893392        m_jit.move(op1.gpr(), GPRInfo::returnValueGPR);
    33903393
    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();
    33973395        m_jit.ret();
    33983396       
Note: See TracChangeset for help on using the changeset viewer.