summaryrefslogtreecommitdiff
path: root/src/vm/method.cpp
diff options
context:
space:
mode:
authorKoundinya Veluri <kouvel@users.noreply.github.com>2019-04-03 06:51:43 -0700
committerGitHub <noreply@github.com>2019-04-03 06:51:43 -0700
commitb4390c41f29af20e4cb77d296940bb6c4649ee86 (patch)
tree79939a83a5e20e3938eea5d53f84ea12865e56ee /src/vm/method.cpp
parent5144947b45832e170b2eb3b8f909ec49d7122eaa (diff)
downloadcoreclr-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.cpp4
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()) &&