#ifndef FEATURE_REDHAWK
GCHandleStore* store = new (nothrow) GCHandleStore();
if (store == nullptr)
+ {
return nullptr;
+ }
bool success = ::Ref_InitializeHandleTableBucket(&store->_underlyingBucket, context);
if (!success)
}
#ifndef FEATURE_REDHAWK
-HandleTableBucket* Ref_CreateHandleTableBucket(void* context)
-{
- HandleTableBucket* result = new (nothrow) HandleTableBucket();
- if (result == nullptr)
- return nullptr;
-
- if (!Ref_InitializeHandleTableBucket(result, context))
- {
- delete result;
- return nullptr;
- }
-
- return result;
-}
-
bool Ref_InitializeHandleTableBucket(HandleTableBucket* bucket, void* context)
{
CONTRACTL
HndDestroyHandleTable(pBucket->pTable[uCPUindex]);
}
delete [] pBucket->pTable;
- delete pBucket;
}
int getSlotNumber(ScanContext* sc)
*/
bool Ref_Initialize();
void Ref_Shutdown();
-HandleTableBucket* Ref_CreateHandleTableBucket(void* context);
bool Ref_InitializeHandleTableBucket(HandleTableBucket* bucket, void* context);
BOOL Ref_HandleAsyncPinHandles(async_pin_enum_fn callback, void* context);
void Ref_RelocateAsyncPinHandles(HandleTableBucket *pSource, HandleTableBucket *pTarget, void (*clearIfComplete)(Object*), void (*setHandle)(Object*, OBJECTHANDLE));
#ifdef FEATURE_APPDOMAIN_RESOURCE_MONITORING
// NOTE: it's important that we initialize ARM data structures before calling
- // Ref_CreateHandleTableBucket, this is because AD::Init() can race with GC
+ // IGCHandleManager::CreateHandleStore, this is because AD::Init() can race with GC
// and once we add ourselves to the handle table map the GC can start walking
// our handles and calling AD::RecordSurvivedBytes() which touches ARM data.
if (GCHeapUtilities::IsServerHeap())