Ignore:
Timestamp:
Oct 1, 2011, 3:03:22 PM (14 years ago)
Author:
[email protected]
Message:

All of JSC's heuristics should be in one place for easier tuning
https://bugs.webkit.org/show_bug.cgi?id=69201

Reviewed by Oliver Hunt.

This makes it possible to change tiered compilation heuristics in
one place (Heuristics.cpp) without recompiling the whole project.

It also makes it possible to enable setting heuristics using
environment variables. This is off by default. When turned on, it
makes tuning the system much easier.

(JSC::CodeBlock::shouldOptimizeNow):

  • bytecode/CodeBlock.h:
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::exitSpeculativeWithOSR):

  • jit/JIT.cpp:

(JSC::JIT::emitOptimizationCheck):

  • runtime/Heuristics.cpp: Added.

(JSC::Heuristics::parse):
(JSC::Heuristics::setHeuristic):
(JSC::Heuristics::initializeHeuristics):

  • runtime/Heuristics.h: Added.
  • runtime/InitializeThreading.cpp:

(JSC::initializeThreadingOnce):

File:
1 edited

Legend:

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

    r95930 r96463  
    19731973#endif
    19741974
    1975     if (m_optimizationDelayCounter >= 5)
     1975    if (m_optimizationDelayCounter >= Heuristics::maximumOptimizationDelay)
    19761976        return true;
    19771977   
     
    19991999#endif
    20002000
    2001     if ((!numberOfNonArgumentValueProfiles || (double)numberOfLiveNonArgumentValueProfiles / numberOfNonArgumentValueProfiles >= 0.75)
    2002         && (!numberOfValueProfiles() || (double)numberOfSamplesInProfiles / ValueProfile::numberOfBuckets / numberOfValueProfiles() >= 0.25))
     2001    if ((!numberOfNonArgumentValueProfiles || (double)numberOfLiveNonArgumentValueProfiles / numberOfNonArgumentValueProfiles >= Heuristics::desiredProfileLivenessRate)
     2002        && (!numberOfValueProfiles() || (double)numberOfSamplesInProfiles / ValueProfile::numberOfBuckets / numberOfValueProfiles() >= Heuristics::desiredProfileFullnessRate))
    20032003        return true;
    20042004   
Note: See TracChangeset for help on using the changeset viewer.