[Local GC] Break EE dependency on GC's generation table and alloc lock in single...
authorSean Gillespie <sean@swgillespie.me>
Fri, 17 Mar 2017 00:18:28 +0000 (17:18 -0700)
committerGitHub <noreply@github.com>
Fri, 17 Mar 2017 00:18:28 +0000 (17:18 -0700)
commit1b827b5a82f8c6f8a9ed760ee127938dea5a7ea4
tree6187e2b2fb4e7858b39298cf60afcc2f838dcdd1
parent54368dad5842089ed7b6a444fa50116d2c0a0b09
[Local GC] Break EE dependency on GC's generation table and alloc lock in single-proc scenarios (#10065)

* Remove usage of the generation table from the EE by introducing an
EE-owned GC alloc context used for allocations on single-proc machines.

* Move the GC alloc lock to the EE side of the interface

* Repair the Windows ARM build

* Move the decision to use per-thread alloc contexts to the EE

* Rename the lock used by StartNoGCRegion and EndNoGCRegion to be more indicative of what it is protecting

* Address code review feedback 2 (enumerate the global alloc context as a part of GCToEEInterface)

* Code review feedback (3)

* Address code review feedback (move some GC-internal globals to gcimpl.h and gc.cpp)

* g_global_alloc_lock is a dword, not a qword - fixes a deadlock

* Move GlobalAllocLock to gchelpers.cpp and switch to preemptive mode when spinning

* Repair the Windows x86 build
20 files changed:
.gitignore
src/gc/gc.cpp
src/gc/gc.h
src/gc/gccommon.cpp
src/gc/gcimpl.h
src/gc/gcinterface.h
src/gc/gcpriv.h
src/gc/sample/gcenv.ee.cpp
src/vm/amd64/JitHelpers_Slow.asm
src/vm/amd64/asmconstants.h
src/vm/arm/stubs.cpp
src/vm/ceeload.cpp
src/vm/gcenv.ee.cpp
src/vm/gcenv.ee.h
src/vm/gcheaputilities.cpp
src/vm/gcheaputilities.h
src/vm/gchelpers.cpp
src/vm/i386/jitinterfacex86.cpp
src/vm/jithelpers.cpp
src/vm/jitinterfacegen.cpp