diff options
author | Koundinya Veluri <kouvel@users.noreply.github.com> | 2019-02-07 17:51:29 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-07 17:51:29 -0800 |
commit | 19ed7168345d34336cbc5a334b3fca36046a1af1 (patch) | |
tree | 97077ea53d9ffb565a61952c2ad31ac3e8a749f7 /src/vm/tieredcompilation.h | |
parent | aa8e508302816656477d2ba4a1ec691dfb7af9b1 (diff) | |
download | coreclr-19ed7168345d34336cbc5a334b3fca36046a1af1.tar.gz coreclr-19ed7168345d34336cbc5a334b3fca36046a1af1.tar.bz2 coreclr-19ed7168345d34336cbc5a334b3fca36046a1af1.zip |
Add config option to disable tier 0 JIT (#22370)
Add config option to disable tier 0 JIT
Fixes https://github.com/dotnet/coreclr/issues/21856
- For methods that don't have pregenerated code, using tier 0 JIT can improve startup perf, and disabling tier 0 JIT can be useful to sacrifice some startup time to avoid issues of running tier 0 code for too long. In some cases, it may also be desirable to avoid tiering up much later.
- A fixed value for the call count indicates that tier 0 call counting is disabled. When disabled, the method starts at tier 1.
- Also modified call counting to start from a predetermined threshold and count down to zero, as it simplifies some things, allows for methods to have different thresholds, and likely is what we would want eventually anyway
- Took a small step towards eliminating knowledge of specific tier levels in code that should not care, though more is to be done there
Diffstat (limited to 'src/vm/tieredcompilation.h')
-rw-r--r-- | src/vm/tieredcompilation.h | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/vm/tieredcompilation.h b/src/vm/tieredcompilation.h index 072f8e16c4..2c021b89ec 100644 --- a/src/vm/tieredcompilation.h +++ b/src/vm/tieredcompilation.h @@ -34,9 +34,8 @@ public: #ifdef FEATURE_TIERED_COMPILATION public: - static bool RequiresCallCounting(MethodDesc* pMethodDesc); - void OnMethodCalled(MethodDesc* pMethodDesc, DWORD currentCallCount, BOOL* shouldStopCountingCallsRef, BOOL* wasPromotedToTier1Ref); - void OnMethodCallCountingStoppedWithoutTier1Promotion(MethodDesc* pMethodDesc); + void OnTier0MethodCalled(MethodDesc* pMethodDesc, bool isFirstCall, int currentCallCountLimit, BOOL* shouldStopCountingCallsRef, BOOL* wasPromotedToNextTierRef); + void OnMethodCallCountingStoppedWithoutTierPromotion(MethodDesc* pMethodDesc); void AsyncPromoteMethodToTier1(MethodDesc* pMethodDesc); void Shutdown(); static CORJIT_FLAGS GetJitFlags(NativeCodeVersion nativeCodeVersion); @@ -69,7 +68,6 @@ private: ADID m_domainId; BOOL m_isAppDomainShuttingDown; DWORD m_countOptimizationThreadsRunning; - DWORD m_callCountOptimizationThreshhold; DWORD m_optimizationQuantumMs; SArray<MethodDesc*>* m_methodsPendingCountingForTier1; HANDLE m_tieringDelayTimerHandle; |