Ignore:
Timestamp:
Sep 13, 2013, 5:28:57 PM (12 years ago)
Author:
[email protected]
Message:

FTL JIT broke after r155711
https://bugs.webkit.org/show_bug.cgi?id=121332

Reviewed by Geoffrey Garen.

Fixed OSR entry to use the local variable's index instead of its VirtualRegister.
Initialized ExitArgumentForOperand::m_operand to InvalidVirtualRegister instead of -1.
Fixed compileCallOrConstruct() to update locals on callframe going down.
Fixed prepareOSREntry() to grow stack down if needed.

  • ftl/FTLExitArgumentForOperand.h:

(JSC::FTL::ExitArgumentForOperand::ExitArgumentForOperand):

  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileExtractOSREntryLocal):
(JSC::FTL::LowerDFGToLLVM::compileCallOrConstruct):

  • ftl/FTLOSREntry.cpp:

(JSC::FTL::prepareOSREntry):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ftl/FTLOSREntry.cpp

    r155023 r155735  
    7878        scratch[local] = JSValue::encode(values.local(local));
    7979   
    80     unsigned stackFrameSize = entryCodeBlock->m_numCalleeRegisters;
    81     if (!vm.interpreter->stack().grow(&exec->registers()[stackFrameSize])) {
     80    int stackFrameSize = entryCodeBlock->m_numCalleeRegisters;
     81    if (!vm.interpreter->stack().grow(&exec->registers()[localToOperand(stackFrameSize)])) {
    8282        if (Options::verboseOSR())
    8383            dataLog("    OSR failed bcause stack growth failed.\n");
Note: See TracChangeset for help on using the changeset viewer.