summaryrefslogtreecommitdiff
path: root/src/vm
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm')
-rw-r--r--src/vm/eeconfig.h1
-rw-r--r--src/vm/gcenv.ee.cpp2
-rw-r--r--src/vm/gchelpers.cpp16
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)