Skip to content
  • fpizlo@apple.com's avatar
    Forced OSR exits should lead to recompilation based on count, not rate · 3cb7e2c7
    fpizlo@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=83247
    <rdar://problem/10720925>
    
    Reviewed by Geoff Garen.
            
    Track which OSR exits happen because of inadequate coverage. Count them
    separately. If the count reaches a threshold, immediately trigger
    reoptimization.
            
    This is in contrast to the recompilation trigger for all other OSR exits.
    Normally recomp is triggered when the exit rate exceeds a certain ratio.
            
    Looks like a slight V8 speedup (sub 1%).
    
    * bytecode/CodeBlock.cpp:
    (JSC::CodeBlock::CodeBlock):
    * bytecode/CodeBlock.h:
    (JSC::CodeBlock::forcedOSRExitCounter):
    (JSC::CodeBlock::addressOfForcedOSRExitCounter):
    (JSC::CodeBlock::offsetOfForcedOSRExitCounter):
    (JSC::CodeBlock::shouldReoptimizeNow):
    (JSC::CodeBlock::shouldReoptimizeFromLoopNow):
    (CodeBlock):
    * bytecode/DFGExitProfile.h:
    (JSC::DFG::exitKindToString):
    * dfg/DFGOSRExitCompiler.cpp:
    (JSC::DFG::OSRExitCompiler::handleExitCounts):
    (DFG):
    * dfg/DFGOSRExitCompiler.h:
    (OSRExitCompiler):
    * dfg/DFGOSRExitCompiler32_64.cpp:
    (JSC::DFG::OSRExitCompiler::compileExit):
    * dfg/DFGOSRExitCompiler64.cpp:
    (JSC::DFG::OSRExitCompiler::compileExit):
    * dfg/DFGOperations.cpp:
    * dfg/DFGSpeculativeJIT.cpp:
    (JSC::DFG::SpeculativeJIT::compileGetIndexedPropertyStorage):
    * dfg/DFGSpeculativeJIT32_64.cpp:
    (JSC::DFG::SpeculativeJIT::compile):
    * dfg/DFGSpeculativeJIT64.cpp:
    (JSC::DFG::SpeculativeJIT::compile):
    * runtime/Options.cpp:
    (Options):
    (JSC::Options::initializeOptions):
    * runtime/Options.h:
    (Options):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@113552 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    3cb7e2c7