⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 179851 in webkit


Ignore:
Timestamp:
Feb 9, 2015, 3:39:57 PM (12 years ago)
Author:
fpizlo@apple.com
Message:

DFG call codegen should resolve the callee operand as late as possible
https://bugs.webkit.org/show_bug.cgi?id=141398

Reviewed by Mark Lam.

This is mostly a benign restructuring to help with the implementation of
https://bugs.webkit.org/show_bug.cgi?id=141332.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r179840 r179851  
     12015-02-09  Filip Pizlo  <fpizlo@apple.com>
     2
     3        DFG call codegen should resolve the callee operand as late as possible
     4        https://bugs.webkit.org/show_bug.cgi?id=141398
     5
     6        Reviewed by Mark Lam.
     7       
     8        This is mostly a benign restructuring to help with the implementation of
     9        https://bugs.webkit.org/show_bug.cgi?id=141332.
     10
     11        * dfg/DFGSpeculativeJIT32_64.cpp:
     12        (JSC::DFG::SpeculativeJIT::emitCall):
     13        * dfg/DFGSpeculativeJIT64.cpp:
     14        (JSC::DFG::SpeculativeJIT::emitCall):
     15
    1162015-02-08  Filip Pizlo  <fpizlo@apple.com>
    217
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp

    r179538 r179851  
    650650
    651651    Edge calleeEdge = m_jit.graph().m_varArgChildren[node->firstChild()];
    652     JSValueOperand callee(this, calleeEdge);
    653     GPRReg calleeTagGPR = callee.tagGPR();
    654     GPRReg calleePayloadGPR = callee.payloadGPR();
    655     use(calleeEdge);
    656652
    657653    // The call instruction's first child is either the function (normal call) or the
     
    662658
    663659    m_jit.store32(MacroAssembler::TrustedImm32(numArgs), calleeFramePayloadSlot(JSStack::ArgumentCount));
    664     m_jit.store32(calleePayloadGPR, calleeFramePayloadSlot(JSStack::Callee));
    665     m_jit.store32(calleeTagGPR, calleeFrameTagSlot(JSStack::Callee));
    666660
    667661    for (int i = 0; i < numPassedArgs; i++) {
     
    675669        m_jit.store32(argPayloadGPR, calleeArgumentPayloadSlot(i + dummyThisArgument));
    676670    }
     671
     672    JSValueOperand callee(this, calleeEdge);
     673    GPRReg calleeTagGPR = callee.tagGPR();
     674    GPRReg calleePayloadGPR = callee.payloadGPR();
     675    use(calleeEdge);
     676    m_jit.store32(calleePayloadGPR, calleeFramePayloadSlot(JSStack::Callee));
     677    m_jit.store32(calleeTagGPR, calleeFrameTagSlot(JSStack::Callee));
    677678
    678679    flushRegisters();
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp

    r179538 r179851  
    636636   
    637637    Edge calleeEdge = m_jit.graph().m_varArgChildren[node->firstChild()];
    638     JSValueOperand callee(this, calleeEdge);
    639     GPRReg calleeGPR = callee.gpr();
    640     use(calleeEdge);
    641    
    642638    // The call instruction's first child is the function; the subsequent children are the
    643639    // arguments.
     
    647643   
    648644    m_jit.store32(MacroAssembler::TrustedImm32(numArgs), calleeFramePayloadSlot(JSStack::ArgumentCount));
    649     m_jit.store64(calleeGPR, calleeFrameSlot(JSStack::Callee));
    650645   
    651646    for (int i = 0; i < numPassedArgs; i++) {
     
    658653    }
    659654
     655    JSValueOperand callee(this, calleeEdge);
     656    GPRReg calleeGPR = callee.gpr();
     657    use(calleeEdge);
     658    m_jit.store64(calleeGPR, calleeFrameSlot(JSStack::Callee));
     659   
    660660    flushRegisters();
    661661
Note: See TracChangeset for help on using the changeset viewer.