Ignore:
Timestamp:
Mar 27, 2012, 2:54:40 PM (13 years ago)
Author:
[email protected]
Message:

DFG OSR exit should not generate an exit for variables of inlinees if the
inlinees are not in scope
https://bugs.webkit.org/show_bug.cgi?id=82312

Reviewed by Oliver Hunt.

  • bytecode/CodeBlock.h:

(JSC::baselineCodeBlockForInlineCallFrame):
(JSC):
(JSC::baselineCodeBlockForOriginAndBaselineCodeBlock):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::computeNumVariablesForCodeOrigin):
(DFG):
(JSC::DFG::OSRExit::OSRExit):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.h

    r109705 r112320  
    13861386    };
    13871387
     1388    inline CodeBlock* baselineCodeBlockForInlineCallFrame(InlineCallFrame* inlineCallFrame)
     1389    {
     1390        ASSERT(inlineCallFrame);
     1391        ExecutableBase* executable = inlineCallFrame->executable.get();
     1392        ASSERT(executable->structure()->classInfo() == &FunctionExecutable::s_info);
     1393        return static_cast<FunctionExecutable*>(executable)->baselineCodeBlockFor(inlineCallFrame->isCall ? CodeForCall : CodeForConstruct);
     1394    }
     1395   
    13881396    inline CodeBlock* baselineCodeBlockForOriginAndBaselineCodeBlock(const CodeOrigin& codeOrigin, CodeBlock* baselineCodeBlock)
    13891397    {
    1390         if (codeOrigin.inlineCallFrame) {
    1391             ExecutableBase* executable = codeOrigin.inlineCallFrame->executable.get();
    1392             ASSERT(executable->structure()->classInfo() == &FunctionExecutable::s_info);
    1393             return static_cast<FunctionExecutable*>(executable)->baselineCodeBlockFor(codeOrigin.inlineCallFrame->isCall ? CodeForCall : CodeForConstruct);
    1394         }
     1398        if (codeOrigin.inlineCallFrame)
     1399            return baselineCodeBlockForInlineCallFrame(codeOrigin.inlineCallFrame);
    13951400        return baselineCodeBlock;
    13961401    }
Note: See TracChangeset for help on using the changeset viewer.