diff options
author | Aditya Mandaleeka <adityam@microsoft.com> | 2017-04-05 19:31:32 -0700 |
---|---|---|
committer | Aditya Mandaleeka <adityam@microsoft.com> | 2017-04-07 15:01:59 -0700 |
commit | 7721f89f517f09f90d46a1078f0d26caf3b310c0 (patch) | |
tree | b3ef15e44a07ec27df233375f3437ec247995ca9 /src/gc/gchandletable.cpp | |
parent | 273e63414deccefd1ad048062e4d1ebfe5e5eb50 (diff) | |
download | coreclr-7721f89f517f09f90d46a1078f0d26caf3b310c0.tar.gz coreclr-7721f89f517f09f90d46a1078f0d26caf3b310c0.tar.bz2 coreclr-7721f89f517f09f90d46a1078f0d26caf3b310c0.zip |
Add creation of special handle types to IGCHandleTable.
Diffstat (limited to 'src/gc/gchandletable.cpp')
-rw-r--r-- | src/gc/gchandletable.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/gc/gchandletable.cpp b/src/gc/gchandletable.cpp index c4b16886b2..f8222b193a 100644 --- a/src/gc/gchandletable.cpp +++ b/src/gc/gchandletable.cpp @@ -37,3 +37,21 @@ OBJECTHANDLE GCHandleTable::CreateHandleOfType(void* table, Object* object, int { return ::HndCreateHandle((HHANDLETABLE)table, type, ObjectToOBJECTREF(object)); } + +OBJECTHANDLE GCHandleTable::CreateGlobalHandleOfType(Object* object, int type) +{ + return ::HndCreateHandle(g_HandleTableMap.pBuckets[0]->pTable[GetCurrentThreadHomeHeapNumber()], type, ObjectToOBJECTREF(object)); +} + +OBJECTHANDLE GCHandleTable::CreateHandleWithExtraInfo(void* table, Object* object, int type, void* pExtraInfo) +{ + return ::HndCreateHandle((HHANDLETABLE)table, type, ObjectToOBJECTREF(object), reinterpret_cast<uintptr_t>(pExtraInfo)); +} + +OBJECTHANDLE GCHandleTable::CreateDependentHandle(void* table, Object* primary, Object* secondary) +{ + OBJECTHANDLE handle = ::HndCreateHandle((HHANDLETABLE)table, HNDTYPE_DEPENDENT, ObjectToOBJECTREF(primary)); + ::SetDependentHandleSecondary(handle, ObjectToOBJECTREF(secondary)); + + return handle; +}
\ No newline at end of file |