Ignore:
Timestamp:
Dec 15, 2011, 1:29:37 PM (13 years ago)
Author:
[email protected]
Message:

Use more macrology in JSC::Options
https://bugs.webkit.org/show_bug.cgi?id=72938

Patch by Andy Wingo <[email protected]> on 2011-12-15
Reviewed by Filip Pizlo.

  • runtime/Options.cpp:

(JSC::Options::initializeOptions):

  • runtime/Options.h: Use macros to ensure that all heuristics are

declared and have initializers.

File:
1 edited

Legend:

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

    r102917 r102978  
    3131namespace JSC { namespace Options {
    3232
    33 extern unsigned maximumOptimizationCandidateInstructionCount;
     33// maximumInliningDepth is the maximum depth of inline stack, so 1 = no
     34// inlining, 2 = one level, etc
    3435
    35 extern unsigned maximumFunctionForCallInlineCandidateInstructionCount;
    36 extern unsigned maximumFunctionForConstructInlineCandidateInstructionCount;
     36// couldTakeSlowCaseThreshold shouldn't be zero because some ops will spuriously
     37// take slow case, for example for linking or caching.
    3738
    38 extern unsigned maximumInliningDepth; // Depth of inline stack, so 1 = no inlining, 2 = one level, etc.
     39#define FOR_EACH_HEURISTIC(m) \
     40    m(unsigned, maximumOptimizationCandidateInstructionCount, 1000) \
     41    \
     42    m(unsigned, maximumFunctionForCallInlineCandidateInstructionCount, 150) \
     43    m(unsigned, maximumFunctionForConstructInlineCandidateInstructionCount, 80) \
     44    \
     45    m(unsigned, maximumInliningDepth, 5)                              \
     46    \
     47    m(int32_t, executionCounterValueForOptimizeAfterWarmUp,      -1000) \
     48    m(int32_t, executionCounterValueForOptimizeAfterLongWarmUp,  -5000) \
     49    m(int32_t, executionCounterValueForDontOptimizeAnytimeSoon,  std::numeric_limits<int32_t>::min()) \
     50    m(int32_t, executionCounterValueForOptimizeSoon,             -1000) \
     51    m(int32_t, executionCounterValueForOptimizeNextInvocation,   0) \
     52    \
     53    m(int32_t, executionCounterIncrementForLoop,       1) \
     54    m(int32_t, executionCounterIncrementForReturn,     15) \
     55    \
     56    m(unsigned, desiredSpeculativeSuccessFailRatio,    6) \
     57    \
     58    m(double,   likelyToTakeSlowCaseThreshold,         0.15) \
     59    m(double,   couldTakeSlowCaseThreshold,            0.05) \
     60    m(unsigned, likelyToTakeSlowCaseMinimumCount,      100) \
     61    m(unsigned, couldTakeSlowCaseMinimumCount,         10) \
     62    \
     63    m(double,   osrExitProminenceForFrequentExitSite,  0.3) \
     64    \
     65    m(unsigned, largeFailCountThresholdBase,           20) \
     66    m(unsigned, largeFailCountThresholdBaseForLoop,    1) \
     67    \
     68    m(unsigned, reoptimizationRetryCounterMax,         0) \
     69    m(unsigned, reoptimizationRetryCounterStep,        1) \
     70    \
     71    m(unsigned, minimumOptimizationDelay,              1) \
     72    m(unsigned, maximumOptimizationDelay,              5) \
     73    m(double, desiredProfileLivenessRate,              0.75) \
     74    m(double, desiredProfileFullnessRate,              0.35) \
     75    \
     76    m(double,   doubleVoteRatioForDoubleFormat,        2) \
     77    \
     78    m(unsigned, minimumNumberOfScansBetweenRebalance,  10000) \
     79    m(unsigned, gcMarkStackSegmentSize,                0) \
     80    m(unsigned, minimumNumberOfCellsToKeep,            10) \
     81    m(unsigned, maximumNumberOfSharedSegments,         3) \
     82    m(unsigned, sharedStackWakeupThreshold,            1) \
     83    m(unsigned, numberOfGCMarkers,                     0) \
     84    m(unsigned, opaqueRootMergeThreshold,              1000)
    3985
    40 extern int32_t executionCounterValueForOptimizeAfterWarmUp;
    41 extern int32_t executionCounterValueForOptimizeAfterLongWarmUp;
    42 extern int32_t executionCounterValueForDontOptimizeAnytimeSoon;
    43 extern int32_t executionCounterValueForOptimizeSoon;
    44 extern int32_t executionCounterValueForOptimizeNextInvocation;
     86#define FOR_EACH_OPTION(m) \
     87    FOR_EACH_HEURISTIC(m)
    4588
    46 extern int32_t executionCounterIncrementForLoop;
    47 extern int32_t executionCounterIncrementForReturn;
    48 
    49 extern unsigned desiredSpeculativeSuccessFailRatio;
    50 
    51 extern double likelyToTakeSlowCaseThreshold;
    52 extern double couldTakeSlowCaseThreshold;
    53 extern unsigned likelyToTakeSlowCaseMinimumCount;
    54 extern unsigned couldTakeSlowCaseMinimumCount;
    55 
    56 extern double osrExitProminenceForFrequentExitSite;
    57 
    58 extern unsigned largeFailCountThresholdBase;
    59 extern unsigned largeFailCountThresholdBaseForLoop;
    60 
    61 extern unsigned reoptimizationRetryCounterMax;
    62 extern unsigned reoptimizationRetryCounterStep;
    63 
    64 extern unsigned minimumOptimizationDelay;
    65 extern unsigned maximumOptimizationDelay;
    66 extern double desiredProfileLivenessRate;
    67 extern double desiredProfileFullnessRate;
    68 
    69 extern double doubleVoteRatioForDoubleFormat;
    70 
    71 extern unsigned minimumNumberOfScansBetweenRebalance;
    72 extern unsigned gcMarkStackSegmentSize;
    73 extern unsigned minimumNumberOfCellsToKeep;
    74 extern unsigned maximumNumberOfSharedSegments;
    75 extern unsigned sharedStackWakeupThreshold;
    76 extern unsigned numberOfGCMarkers;
    77 extern unsigned opaqueRootMergeThreshold;
     89#define DECLARE(type, cname, default_val) extern type cname;
     90FOR_EACH_OPTION(DECLARE)
     91#undef DECLARE
    7892
    7993void initializeOptions();
Note: See TracChangeset for help on using the changeset viewer.