diff options
Diffstat (limited to 'src/vm')
-rw-r--r-- | src/vm/eeconfig.h | 1 | ||||
-rw-r--r-- | src/vm/gcenv.ee.cpp | 2 | ||||
-rw-r--r-- | src/vm/gchelpers.cpp | 16 |
3 files changed, 13 insertions, 6 deletions
diff --git a/src/vm/eeconfig.h b/src/vm/eeconfig.h index bcd767b210..60d8b70157 100644 --- a/src/vm/eeconfig.h +++ b/src/vm/eeconfig.h @@ -827,7 +827,6 @@ public: DWORD GetHostTestThreadAbort() const {LIMITED_METHOD_CONTRACT; return testThreadAbort;} #define INJECTFAULT_LOADERHEAP 0x1 -#define INJECTFAULT_HANDLETABLE 0x1 #define INJECTFAULT_GCHEAP 0x2 #define INJECTFAULT_SO 0x4 #define INJECTFAULT_GMHEAP 0x8 diff --git a/src/vm/gcenv.ee.cpp b/src/vm/gcenv.ee.cpp index 7f9d269432..581d7fc40a 100644 --- a/src/vm/gcenv.ee.cpp +++ b/src/vm/gcenv.ee.cpp @@ -357,7 +357,7 @@ uint8_t* GCToEEInterface::GetLoaderAllocatorObjectForGC(Object* pObject) } CONTRACTL_END; - return pObject->GetMethodTable()->GetLoaderAllocatorObjectForGC(); + return pObject->GetGCSafeMethodTable()->GetLoaderAllocatorObjectForGC(); } bool GCToEEInterface::IsPreemptiveGCDisabled() diff --git a/src/vm/gchelpers.cpp b/src/vm/gchelpers.cpp index 4684edeaf5..b4f018f87d 100644 --- a/src/vm/gchelpers.cpp +++ b/src/vm/gchelpers.cpp @@ -238,12 +238,16 @@ inline Object* Alloc(size_t size, BOOL bFinalize, BOOL bContainsPointers ) INTERIOR_STACK_PROBE_FOR(GetThread(), static_cast<unsigned>(DEFAULT_ENTRY_PROBE_AMOUNT * 1.5)); if (GCHeapUtilities::UseThreadAllocationContexts()) { - retVal = GCHeapUtilities::GetGCHeap()->Alloc(GetThreadAllocContext(), size, flags); + gc_alloc_context *threadContext = GetThreadAllocContext(); + GCStress<gc_on_alloc>::MaybeTrigger(threadContext); + retVal = GCHeapUtilities::GetGCHeap()->Alloc(threadContext, size, flags); } else { GlobalAllocLockHolder holder(&g_global_alloc_lock); - retVal = GCHeapUtilities::GetGCHeap()->Alloc(&g_global_alloc_context, size, flags); + gc_alloc_context *globalContext = &g_global_alloc_context; + GCStress<gc_on_alloc>::MaybeTrigger(globalContext); + retVal = GCHeapUtilities::GetGCHeap()->Alloc(globalContext, size, flags); } @@ -279,12 +283,16 @@ inline Object* AllocAlign8(size_t size, BOOL bFinalize, BOOL bContainsPointers, INTERIOR_STACK_PROBE_FOR(GetThread(), static_cast<unsigned>(DEFAULT_ENTRY_PROBE_AMOUNT * 1.5)); if (GCHeapUtilities::UseThreadAllocationContexts()) { - retVal = GCHeapUtilities::GetGCHeap()->AllocAlign8(GetThreadAllocContext(), size, flags); + gc_alloc_context *threadContext = GetThreadAllocContext(); + GCStress<gc_on_alloc>::MaybeTrigger(threadContext); + retVal = GCHeapUtilities::GetGCHeap()->AllocAlign8(threadContext, size, flags); } else { GlobalAllocLockHolder holder(&g_global_alloc_lock); - retVal = GCHeapUtilities::GetGCHeap()->AllocAlign8(&g_global_alloc_context, size, flags); + gc_alloc_context *globalContext = &g_global_alloc_context; + GCStress<gc_on_alloc>::MaybeTrigger(globalContext); + retVal = GCHeapUtilities::GetGCHeap()->AllocAlign8(globalContext, size, flags); } if (!retVal) |