}
}
+Volatile<BOOL> g_bIsGarbageCollectorFullyInitialized = FALSE;
+
+void SetGarbageCollectorFullyInitialized()
+{
+ LIMITED_METHOD_CONTRACT;
+
+ g_bIsGarbageCollectorFullyInitialized = TRUE;
+}
+
+// Tells whether the garbage collector is fully initialized
+// Stronger than IsGCHeapInitialized
+BOOL IsGarbageCollectorFullyInitialized()
+{
+ LIMITED_METHOD_CONTRACT;
+
+ return g_bIsGarbageCollectorFullyInitialized;
+}
// ---------------------------------------------------------------------------
// %%Function: EEStartupHelper
#ifndef CROSSGEN_COMPILE
+ // This isn't done as part of InitializeGarbageCollector() above because thread
+ // creation requires AppDomains to have been set up.
+ FinalizerThread::FinalizerThreadCreate();
+
+ // Now we really have fully initialized the garbage collector
+ SetGarbageCollectorFullyInitialized();
+
#ifndef FEATURE_PAL
// Watson initialization must precede InitializeDebugger() and InstallUnhandledExceptionFilter()
// because on CoreCLR when Waston is enabled, debugging service needs to be enabled and UEF will be used.
}
-
-
-
-
-
//*****************************************************************************
BOOL ExecuteDLL_ReturnOrThrow(HRESULT hr, BOOL fFromThunk)
{
return SUCCEEDED(hr);
}
-
-
-
-
-Volatile<BOOL> g_bIsGarbageCollectorFullyInitialized = FALSE;
-
-void SetGarbageCollectorFullyInitialized()
-{
- LIMITED_METHOD_CONTRACT;
-
- g_bIsGarbageCollectorFullyInitialized = TRUE;
-}
-
-// Tells whether the garbage collector is fully initialized
-// Stronger than IsGCHeapInitialized
-BOOL IsGarbageCollectorFullyInitialized()
-{
- LIMITED_METHOD_CONTRACT;
-
- return g_bIsGarbageCollectorFullyInitialized;
-}
-
//
// Initialize the Garbage Collector
//
hr = pGCHeap->Initialize();
IfFailThrow(hr);
-
- // Thread for running finalizers...
- FinalizerThread::FinalizerThreadCreate();
-
- // Now we really have fully initialized the garbage collector
- SetGarbageCollectorFullyInitialized();
}
/*****************************************************************************/