summaryrefslogtreecommitdiff
path: root/src/gc/gchandletable.cpp
diff options
context:
space:
mode:
authorAditya Mandaleeka <adityam@microsoft.com>2017-04-05 19:31:32 -0700
committerAditya Mandaleeka <adityam@microsoft.com>2017-04-07 15:01:59 -0700
commit7721f89f517f09f90d46a1078f0d26caf3b310c0 (patch)
treeb3ef15e44a07ec27df233375f3437ec247995ca9 /src/gc/gchandletable.cpp
parent273e63414deccefd1ad048062e4d1ebfe5e5eb50 (diff)
downloadcoreclr-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.cpp18
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