Introduce an interface separating the GC and the VM,
authorSean Gillespie <segilles@microsoft.com>
Thu, 8 Sep 2016 18:27:24 +0000 (11:27 -0700)
committerSean Gillespie <segilles@microsoft.com>
Thu, 8 Sep 2016 18:27:24 +0000 (11:27 -0700)
commit6519911fbccbec049f9592484f69c213b4b78264
treecfb37485afcc96a1780e106a4f99d192ff42ab2a
parentcda9b0fc9a5f206b391b1bd104e43bd6c29aad7f
Introduce an interface separating the GC and the VM,
modifying the VM to utilize this interface.

Introduce an interface separating the GC and the rest of the VM

Remove static members of both IGCHeap and IGCHeapInternal and move the management of the singular GC heap to the VM.

Rename uses of IGCHeap in the VM to GCHeapHolder, as well as other misc. renames throughout the VM and GC.

Split each interface function into categories, document them, use consistent formatting across the interface

Undo some accidental find/replace collateral damage

Remove all ifdefs from the GC interface

Deduplicate function declarations between IGCHeap and IGCHeapInternal, expose AllocAlign8 through the interface and the reference to alloc_context to repair the ARM build

Paper cut: false -> nullptr

Repair the ARM and x86 builds

Rename GCHeapHolder -> GCHeapUtilities and address documentation feedback

Rebase against master

Rename gcholder.h/cpp -> gcheaputilities.h/cpp

Fix an uninitialized field on alloc_context causing test failures on clang

Rename the include guard for gcheaputilities.h

Un-breaks SOS by making the following changes:
  1) Instructs the DAC to look for IGCHeap::gcHeapType by name,
     instead of assuming that it exists near g_pGCHeap,
  2) Eliminate all virtual calls on IGCHeap in the DAC, since we cannot
     dispatch on an object in another process,
  3) Because of 2, expose the number of generations past the GC interface
     using a static variable on IGCHeap that the DAC can read directly.

repair the Windows build
94 files changed:
src/classlibnative/bcltype/arraynative.cpp
src/classlibnative/bcltype/system.cpp
src/debug/daccess/daccess.cpp
src/debug/daccess/dacdbiimpl.cpp
src/debug/daccess/enummem.cpp
src/debug/daccess/request.cpp
src/debug/daccess/request_svr.cpp
src/gc/env/gcenv.ee.h
src/gc/gc.cpp
src/gc/gc.h
src/gc/gccommon.cpp
src/gc/gcee.cpp
src/gc/gcimpl.h
src/gc/gcinterface.h [new file with mode: 0644]
src/gc/gcpriv.h
src/gc/gcscan.cpp
src/gc/handletable.cpp
src/gc/handletablecore.cpp
src/gc/handletablescan.cpp
src/gc/objecthandle.cpp
src/gc/sample/GCSample.cpp
src/gc/sample/gcenv.ee.cpp
src/gc/sample/gcenv.h
src/inc/dacvars.h
src/inc/stresslog.h
src/strongname/api/common.h
src/vm/CMakeLists.txt
src/vm/amd64/asmconstants.h
src/vm/amd64/excepamd64.cpp
src/vm/amd64/jitinterfaceamd64.cpp
src/vm/appdomain.cpp
src/vm/appdomain.hpp
src/vm/arm/asmconstants.h
src/vm/arm/stubs.cpp
src/vm/ceeload.cpp
src/vm/ceemain.cpp
src/vm/classcompat.cpp
src/vm/codeman.cpp
src/vm/commemoryfailpoint.cpp
src/vm/common.h
src/vm/comutilnative.cpp
src/vm/corhost.cpp
src/vm/crossgencompile.cpp
src/vm/crst.cpp
src/vm/debugdebugger.cpp
src/vm/domainfile.cpp
src/vm/dwreport.cpp
src/vm/eetoprofinterfaceimpl.cpp
src/vm/eventtrace.cpp
src/vm/excep.cpp
src/vm/finalizerthread.cpp
src/vm/frames.cpp
src/vm/gccover.cpp
src/vm/gcenv.ee.cpp
src/vm/gcheaputilities.cpp [new file with mode: 0644]
src/vm/gcheaputilities.h [new file with mode: 0644]
src/vm/gchelpers.cpp
src/vm/gchost.cpp
src/vm/gcinterface.h [moved from src/vm/gc.h with 87% similarity]
src/vm/gcstress.h
src/vm/hash.cpp
src/vm/i386/excepx86.cpp
src/vm/i386/jitinterfacex86.cpp
src/vm/i386/virtualcallstubcpu.hpp
src/vm/interoputil.cpp
src/vm/interpreter.cpp
src/vm/jithelpers.cpp
src/vm/jitinterface.cpp
src/vm/jitinterfacegen.cpp
src/vm/marshalnative.cpp
src/vm/mdaassistants.cpp
src/vm/memberload.cpp
src/vm/message.cpp
src/vm/methodtable.cpp
src/vm/nativeoverlapped.h
src/vm/object.cpp
src/vm/prestub.cpp
src/vm/profattach.cpp
src/vm/profilinghelper.cpp
src/vm/proftoeeinterfaceimpl.cpp
src/vm/rcwwalker.cpp
src/vm/runtimecallablewrapper.cpp
src/vm/safehandle.cpp
src/vm/siginfo.cpp
src/vm/stubhelpers.cpp
src/vm/syncblk.cpp
src/vm/syncclean.cpp
src/vm/testhookmgr.cpp
src/vm/threadpoolrequest.cpp
src/vm/threads.cpp
src/vm/threads.h
src/vm/threadsuspend.cpp
src/vm/vars.hpp
src/vm/win32threadpool.cpp