Ignore:
Timestamp:
Apr 21, 2016, 7:28:00 PM (9 years ago)
Author:
[email protected]
Message:

FTL should handle exceptions in operationInOptimize
https://bugs.webkit.org/show_bug.cgi?id=156885

Reviewed by Michael Saboff.

For some reasone we didn't handle any exceptions in "in" when we called
operationInOptimize in the FTL.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpAssumingJITType):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileIn):

  • ftl/FTLPatchpointExceptionHandle.h: Add comments explaining which

function to use for different exception types.

  • jsc.cpp:

(GlobalObject::finishCreation):
(functionNoFTL):

  • runtime/Executable.cpp:

(JSC::ScriptExecutable::ScriptExecutable):

  • runtime/Executable.h:

(JSC::ScriptExecutable::setNeverFTLOptimize):
(JSC::ScriptExecutable::neverFTLOptimize):

  • tests/stress/in-ftl-exception-check.js: Added.

(foo):
(bar):
(catch):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/runtime/Executable.h

    r198980 r199863  
    358358    void setNeverInline(bool value) { m_neverInline = value; }
    359359    void setNeverOptimize(bool value) { m_neverOptimize = value; }
     360    void setNeverFTLOptimize(bool value) { m_neverFTLOptimize = value; }
    360361    void setDidTryToEnterInLoop(bool value) { m_didTryToEnterInLoop = value; }
    361362    bool neverInline() const { return m_neverInline; }
    362363    bool neverOptimize() const { return m_neverOptimize; }
     364    bool neverFTLOptimize() const { return m_neverFTLOptimize; }
    363365    bool didTryToEnterInLoop() const { return m_didTryToEnterInLoop; }
    364366    bool isInliningCandidate() const { return !neverInline(); }
     
    420422    bool m_neverInline : 1;
    421423    bool m_neverOptimize : 1;
     424    bool m_neverFTLOptimize : 1;
    422425    bool m_isArrowFunctionContext : 1;
    423426    unsigned m_derivedContextType : 2; // DerivedContextType
Note: See TracChangeset for help on using the changeset viewer.