diff options
author | Koundinya Veluri <kouvel@users.noreply.github.com> | 2019-04-03 06:51:43 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-03 06:51:43 -0700 |
commit | b4390c41f29af20e4cb77d296940bb6c4649ee86 (patch) | |
tree | 79939a83a5e20e3938eea5d53f84ea12865e56ee /src/vm/method.cpp | |
parent | 5144947b45832e170b2eb3b8f909ec49d7122eaa (diff) | |
download | coreclr-b4390c41f29af20e4cb77d296940bb6c4649ee86.tar.gz coreclr-b4390c41f29af20e4cb77d296940bb6c4649ee86.tar.bz2 coreclr-b4390c41f29af20e4cb77d296940bb6c4649ee86.zip |
[Preview 4] Disable tier 0 JIT (quick JIT) by default, rename config option (#23599)
Disable tier 0 JIT (quick JIT) by default, rename config option
- Tier 0 JIT is being called quick JIT in config options, renamed DisableTier0Jit to StartupTierQuickJit
- Disabled quick JIT by default, the current plan is to do that for preview 4
- Concerns were that code produced by quick JIT may be slow, may allocate more, may use more stack space, and may be much larger than optimized code, and there there may be many cases where these things lead to regressions when the span of time between startup and steady-state is important
- The thought was that with quick JIT disabled, tiering overhead from call counting and backgorund jitting with optimizations would be less, and perf during any point in time would be closer to 2.x releases
- This mostly loses the startup perf gains from tiering. It may also be slightly slower compared with tiering off due to some overhead. When quick JIT is disabled for the startup tier, made a change to disable tiered compilation for methods in modules that are not R2R'ed since they will not be tiered currently anyway. The overhead and regression in R2R'ed modules will be looked into separately to see if it can be reduced.
Fixes https://github.com/dotnet/coreclr/issues/22998
Fixes https://github.com/dotnet/coreclr/issues/19751
Diffstat (limited to 'src/vm/method.cpp')
-rw-r--r-- | src/vm/method.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/vm/method.cpp b/src/vm/method.cpp index d180014a3a..2f6a9b4997 100644 --- a/src/vm/method.cpp +++ b/src/vm/method.cpp @@ -4803,6 +4803,10 @@ bool MethodDesc::DetermineAndSetIsEligibleForTieredCompilation() // Functional requirement CodeVersionManager::IsMethodSupported(this) && + // Policy - If quick JIT is disabled for the startup tier and the module is not ReadyToRun, the method would effectively + // not be tiered currently, so make the method ineligible for tiering to avoid some unnecessary overhead + (g_pConfig->TieredCompilation_QuickJit() || GetModule()->IsReadyToRun()) && + // Policy - Debugging works much better with unoptimized code !CORDisableJITOptimizations(GetModule()->GetDebuggerInfoBits()) && |