Fix creation of the NUMA node to heap number map
authorJan Vorlicek <janvorli@microsoft.com>
Fri, 26 Apr 2019 09:53:41 +0000 (11:53 +0200)
committerJan Vorlicek <janvorli@microsoft.com>
Fri, 26 Apr 2019 11:55:11 +0000 (13:55 +0200)
commit0491266ef35b9eaae8a48b2bc0763f5451302188
tree125106c1605477169e75e304bf2f81d2ce0b3979
parent6ef0ce491d205287b32dc6ba11752d149a29d4b7
Fix creation of the NUMA node to heap number map

The current implementation assumes that the NUMA nodes of CPUs
used for GC threads form a zero based continous range. However that
doesn't have to be true for cases when user selects only a subset of the
available CPUs for the GC heap threads using the
COMPlus_GCHeapAffinitizeMask or COMPlus_GCHeapAffinitizeRanges. The
selected CPUs may belong only to a subset of NUMA nodes that don't
necessarily start at node 0 or form a continuous range.

This change fixes the algorithm that initializes the
numa_node_to_heap_map lookup array so that it works correctly even in
such cases.

Commit migrated from https://github.com/dotnet/coreclr/commit/9733c30b27ca90d3eeb07928df6e6e5861c203bb
src/coreclr/src/gc/gc.cpp