diff options
author | Scott Mosier <smosier@microsoft.com> | 2016-07-23 01:20:01 +0300 |
---|---|---|
committer | Scott Mosier <smosier@microsoft.com> | 2016-07-23 01:20:01 +0300 |
commit | 0683b3c358663b09096006a3ba522ac2748e79a8 (patch) | |
tree | eefbaadbaa668786f8ff29fac09c187c8594fbe0 /src/Native/Runtime/startup.cpp | |
parent | 5c95f2b2738c2a03409c78cf2a4002d9b0461a47 (diff) |
GC fixes for server GC in CoreRT
- g_mark_stack_busy should be declared as 'int*' instead of 'BOOL*'
- fix some unreferenced parameter errors when building server GC
- fix some code to use Interlocked / GCToEEInterface
- fix frozen_object_p for server GC
- add NumaNodeInfo / CPUGroupInfo shells with non-useful implementations
MRT changes for server GC
- Add RH_UseServerGC config setting
- Fix startup to init the GC to the right kind based on the config setting
- Fix GCToOSInterface::CreateThread to pass the right value to the stub thread
Build changes to stand up "mrt150.dll"
- Add a new DLL to the build, called mrt150.dll. This DLL is targeting win32 (not UWP-restricted) APIs, contains both WKS and SVR GCs, and statically links the CRT. This is just an initial prototype, so none of this is set in stone. This DLL can be tested by renaming it to mrt100_app.dll. :-)
- update the AddNutcExports.pl script to wrap any exports that get forwarded to the CRT in a macro. These macros change based on whether or not we're statically linking the CRT. If we are (i.e. mrt150.dll), they just export the API, if we aren't (i.e. mrt100_app.dll), then they forward to the correct CRT DLL.
I presume that Server GC isn't 100% configured correctly on PN, because this is the first time it has been run like this and there are still a bunch of #ifdef FEATURE_REDHAWK / CORECLR / etc. that haven't necessarily been rationalized against our desire to converge the configurations across runtimes.
[tfs-changeset: 1619005]
Diffstat (limited to 'src/Native/Runtime/startup.cpp')
-rw-r--r-- | src/Native/Runtime/startup.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/Native/Runtime/startup.cpp b/src/Native/Runtime/startup.cpp index 85b2bee1f..400b24e92 100644 --- a/src/Native/Runtime/startup.cpp +++ b/src/Native/Runtime/startup.cpp @@ -87,8 +87,13 @@ bool InitDLL(HANDLE hPalInstance) // @TODO: currently we're always forcing a workstation GC. // @TODO: GC per-instance vs per-DLL state separation - if (!RedhawkGCInterface::InitializeSubsystems(RedhawkGCInterface::GCType_Workstation)) + RedhawkGCInterface::GCType gcType = g_pRhConfig->GetUseServerGC() + ? RedhawkGCInterface::GCType_Server + : RedhawkGCInterface::GCType_Workstation; + + if (!RedhawkGCInterface::InitializeSubsystems(gcType)) return false; + STARTUP_TIMELINE_EVENT(GC_INIT_COMPLETE); #ifdef STRESS_LOG |