Fix trigger for tier 1 call counting delay (#17477)
authorKoundinya Veluri <kouvel@users.noreply.github.com>
Tue, 10 Apr 2018 04:46:10 +0000 (21:46 -0700)
committerGitHub <noreply@github.com>
Tue, 10 Apr 2018 04:46:10 +0000 (21:46 -0700)
Fix trigger for tier 1 call counting delay

The trigger was taking into account all non-tier-1 JIT invocations to delay call counting, even for those methods that are not eligible for tiering. In the AllReady benchmark, some dynamic methods were being jitted frequently enough to not allow tier 1 call counting to begin. Fixed to count only eligible methods jitted at tier 0, such that methods not eligible for tiering don't interfere with the tiering heuristics.

src/vm/prestub.cpp

index 5e9fc11..5f37ff9 100644 (file)
@@ -734,8 +734,10 @@ PCODE MethodDesc::JitCompileCodeLockedEventWrapper(PrepareCodeConfig* pConfig, J
     }
 
 #ifdef FEATURE_TIERED_COMPILATION
-    if (g_pConfig->TieredCompilation() && !flags.IsSet(CORJIT_FLAGS::CORJIT_FLAG_TIER1))
+    if (g_pConfig->TieredCompilation() && flags.IsSet(CORJIT_FLAGS::CORJIT_FLAG_TIER0))
     {
+        // The flag above is only set (in TieredCompilationManager::GetJitFlags()) when this method was eligible for tiered
+        // compilation at the time when it was checked, and a tier 0 JIT was requested for this method
         GetAppDomain()->GetTieredCompilationManager()->OnTier0JitInvoked();
     }
 #endif // FEATURE_TIERED_COMPILATION