Remove CPU groups handling from the gc.cpp
authorJan Vorlicek <janvorli@microsoft.com>
Mon, 25 Mar 2019 19:52:07 +0000 (20:52 +0100)
committerJan Vorlicek <janvorli@microsoft.com>
Wed, 3 Apr 2019 19:12:02 +0000 (21:12 +0200)
commite8f67e96b3433626b0c7f5cb56681aeb87729871
tree952048f524595aab7921e8b166ad4082e3e36ee4
parent825be341494c3a8e3344544d606e96495ec2170f
Remove CPU groups handling from the gc.cpp

This change removes all explicit manipulation and handling of CPU groups
from the gc.cpp and hides it behind the GCToOSInterface. This is a step
to prepare for removing the CPU groups emulation on Unix. In fact, I've
already updated the standalone Unix GC to be able to affinitize GC
threads to any subset of CPUs and added previously missing support for
the affinity setting itself. The NUMA support still remains missing there.

It also adds a new way to specify GC thread affinitization that is not
limited to 64 threads. Instead of affinity mask stored in 64 bit
integer, we now use a bitset that can contain as many processors as
GC can support. And there is a new GC config to specify the affinity in
a form of a range list.

Commit migrated from https://github.com/dotnet/coreclr/commit/67f1116cea421ebbe516fafc963e213cc6f0e117
13 files changed:
src/coreclr/src/gc/env/gcenv.base.h
src/coreclr/src/gc/env/gcenv.os.h
src/coreclr/src/gc/gc.cpp
src/coreclr/src/gc/gcconfig.h
src/coreclr/src/gc/unix/config.h.in
src/coreclr/src/gc/unix/configure.cmake
src/coreclr/src/gc/unix/gcenv.unix.cpp
src/coreclr/src/gc/windows/gcenv.windows.cpp
src/coreclr/src/inc/corerror.xml
src/coreclr/src/pal/prebuilt/corerror/mscorurt.rc
src/coreclr/src/pal/prebuilt/inc/corerror.h
src/coreclr/src/vm/gcenv.ee.cpp
src/coreclr/src/vm/gcenv.os.cpp