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/FTLLowerDFGToLLVM.cpp

    r155564 r155735  
    547547        EncodedJSValue* buffer = static_cast<EncodedJSValue*>(
    548548            m_ftlState.jitCode->ftlForOSREntry()->entryBuffer()->dataBuffer());
    549         setJSValue(m_out.load64(m_out.absolute(buffer + m_node->unlinkedLocal())));
     549        setJSValue(m_out.load64(m_out.absolute(buffer + operandToLocal(m_node->unlinkedLocal()))));
    550550    }
    551551   
     
    18641864        LValue calleeFrame = m_out.add(
    18651865            m_callFrame,
    1866             m_out.constIntPtr(sizeof(Register) * codeBlock()->m_numCalleeRegisters));
     1866            m_out.constIntPtr(sizeof(Register) * localToOperand(codeBlock()->m_numCalleeRegisters)));
    18671867       
    18681868        m_out.store32(
Note: See TracChangeset for help on using the changeset viewer.