Changeset 112320 in webkit for trunk/Source/JavaScriptCore
- Timestamp:
- Mar 27, 2012, 2:54:40 PM (13 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r112313 r112320 1 2012-03-27 Filip Pizlo <[email protected]> 2 3 DFG OSR exit should not generate an exit for variables of inlinees if the 4 inlinees are not in scope 5 https://bugs.webkit.org/show_bug.cgi?id=82312 6 7 Reviewed by Oliver Hunt. 8 9 * bytecode/CodeBlock.h: 10 (JSC::baselineCodeBlockForInlineCallFrame): 11 (JSC): 12 (JSC::baselineCodeBlockForOriginAndBaselineCodeBlock): 13 * dfg/DFGOSRExit.cpp: 14 (JSC::DFG::computeNumVariablesForCodeOrigin): 15 (DFG): 16 (JSC::DFG::OSRExit::OSRExit): 17 1 18 2012-03-27 Matt Lilek <[email protected]> 2 19 -
trunk/Source/JavaScriptCore/bytecode/CodeBlock.h
r109705 r112320 1386 1386 }; 1387 1387 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 1388 1396 inline CodeBlock* baselineCodeBlockForOriginAndBaselineCodeBlock(const CodeOrigin& codeOrigin, CodeBlock* baselineCodeBlock) 1389 1397 { 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); 1395 1400 return baselineCodeBlock; 1396 1401 } -
trunk/Source/JavaScriptCore/dfg/DFGOSRExit.cpp
r108677 r112320 34 34 namespace JSC { namespace DFG { 35 35 36 static unsigned computeNumVariablesForCodeOrigin( 37 CodeBlock* codeBlock, const CodeOrigin& codeOrigin) 38 { 39 if (!codeOrigin.inlineCallFrame) 40 return codeBlock->m_numCalleeRegisters; 41 return 42 codeOrigin.inlineCallFrame->stackOffset + 43 baselineCodeBlockForInlineCallFrame(codeOrigin.inlineCallFrame)->m_numCalleeRegisters; 44 } 45 36 46 OSRExit::OSRExit(ExitKind kind, JSValueSource jsValueSource, MethodOfGettingAValueProfile valueProfile, MacroAssembler::Jump check, SpeculativeJIT* jit, unsigned recoveryIndex) 37 47 : m_jsValueSource(jsValueSource) … … 44 54 , m_count(0) 45 55 , m_arguments(jit->m_arguments.size()) 46 , m_variables( jit->m_variables.size())56 , m_variables(computeNumVariablesForCodeOrigin(jit->m_jit.graph().m_profiledBlock, jit->m_codeOriginForOSR)) 47 57 , m_lastSetOperand(jit->m_lastSetOperand) 48 58 {
Note:
See TracChangeset
for help on using the changeset viewer.