diff options
Diffstat (limited to 'src/vm/tieredcompilation.h')
-rw-r--r-- | src/vm/tieredcompilation.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/vm/tieredcompilation.h b/src/vm/tieredcompilation.h index 9f6187244a..95dbb741fc 100644 --- a/src/vm/tieredcompilation.h +++ b/src/vm/tieredcompilation.h @@ -25,7 +25,12 @@ public: #endif void Init(ADID appDomainId); - BOOL OnMethodCalled(MethodDesc* pMethodDesc, DWORD currentCallCount); + + void InitiateTier1CountingDelay(); + void OnTier0JitInvoked(); + + void OnMethodCalled(MethodDesc* pMethodDesc, DWORD currentCallCount, BOOL* shouldStopCountingCallsRef, BOOL* wasPromotedToTier1Ref); + void OnMethodCallCountingStoppedWithoutTier1Promotion(MethodDesc* pMethodDesc); void AsyncPromoteMethodToTier1(MethodDesc* pMethodDesc); static void ShutdownAllDomains(); void Shutdown(BOOL fBlockUntilAsyncWorkIsComplete); @@ -33,6 +38,11 @@ public: private: + static VOID WINAPI Tier1DelayTimerCallback(PVOID parameter, BOOLEAN timerFired); + static void Tier1DelayTimerCallbackInAppDomain(LPVOID parameter); + void Tier1DelayTimerCallbackWorker(); + static void ResumeCountingCalls(MethodDesc* pMethodDesc); + static DWORD StaticOptimizeMethodsCallback(void* args); void OptimizeMethodsCallback(); void OptimizeMethod(NativeCodeVersion nativeCodeVersion); @@ -50,6 +60,12 @@ private: DWORD m_countOptimizationThreadsRunning; DWORD m_callCountOptimizationThreshhold; DWORD m_optimizationQuantumMs; + + SpinLock m_tier1CountingDelayLock; + SArray<MethodDesc*>* m_methodsPendingCountingForTier1; + HANDLE m_tier1CountingDelayTimerHandle; + bool m_wasTier0JitInvokedSinceCountingDelayReset; + CLREvent m_asyncWorkDoneEvent; }; |