Remove GetHandleTableForHandle and add CreateDuplicateHandle.
authorAditya Mandaleeka <adityam@microsoft.com>
Wed, 12 Apr 2017 00:58:14 +0000 (17:58 -0700)
committerAditya Mandaleeka <adityam@microsoft.com>
Wed, 12 Apr 2017 01:29:32 +0000 (18:29 -0700)
src/gc/gchandletable.cpp
src/gc/gchandletableimpl.h
src/gc/gcinterface.h
src/vm/threads.cpp

index 77c1ad19fe6fd6c7badc80dd30f3ab709f0797fc..a2303c2e97f69bdb12ffcb04af721da18f3f3d15 100644 (file)
@@ -28,11 +28,6 @@ void* GCHandleTable::GetHandleContext(OBJECTHANDLE handle)
     return (void*)((uintptr_t)::HndGetHandleTableADIndex(::HndGetHandleTable(handle)).m_dwIndex);
 }
 
-void* GCHandleTable::GetHandleTableForHandle(OBJECTHANDLE handle)
-{
-    return (void*)::HndGetHandleTable(handle);
-}
-
 OBJECTHANDLE GCHandleTable::CreateHandleOfType(void* table, Object* object, int type)
 {
     return ::HndCreateHandle((HHANDLETABLE)table, type, ObjectToOBJECTREF(object));
@@ -56,6 +51,11 @@ OBJECTHANDLE GCHandleTable::CreateDependentHandle(void* table, Object* primary,
     return handle;
 }
 
+OBJECTHANDLE GCHandleTable::CreateDuplicateHandle(OBJECTHANDLE handle)
+{
+    return ::HndCreateHandle(HndGetHandleTable(handle), HNDTYPE_DEFAULT, ObjectFromHandle(handle));
+}
+
 void GCHandleTable::DestroyHandleOfType(OBJECTHANDLE handle, int type)
 {
     ::HndDestroyHandle(::HndGetHandleTable(handle), type, handle);
index df803a2c4f52fcaa19fe048de9d16c4bc73c4356..bfcab2096bba7d953da9dc96508924da97b8c182 100644 (file)
@@ -16,8 +16,6 @@ public:
 
     virtual void* GetHandleContext(OBJECTHANDLE handle);
 
-    virtual void* GetHandleTableForHandle(OBJECTHANDLE handle);
-
     virtual OBJECTHANDLE CreateHandleOfType(void* table, Object* object, int type);
 
     virtual OBJECTHANDLE CreateHandleWithExtraInfo(void* table, Object* object, int type, void* pExtraInfo);
@@ -26,6 +24,8 @@ public:
 
     virtual OBJECTHANDLE CreateGlobalHandleOfType(Object* object, int type);
 
+    virtual OBJECTHANDLE CreateDuplicateHandle(OBJECTHANDLE handle);
+
     virtual void DestroyHandleOfType(OBJECTHANDLE handle, int type);
 
     virtual void DestroyHandleOfUnknownType(OBJECTHANDLE handle);
index 7c62a82135e900c0bed16f99eb971b7a8e383869..f2c4bdd369a910da02144f1630d6356cf4b30d49 100644 (file)
@@ -411,8 +411,6 @@ public:
 
     virtual void* GetHandleContext(OBJECTHANDLE handle) = 0;
 
-    virtual void* GetHandleTableForHandle(OBJECTHANDLE handle) = 0;
-
     virtual OBJECTHANDLE CreateHandleOfType(void* table, Object* object, int type) = 0;
 
     virtual OBJECTHANDLE CreateHandleWithExtraInfo(void* table, Object* object, int type, void* pExtraInfo) = 0;
@@ -421,6 +419,8 @@ public:
 
     virtual OBJECTHANDLE CreateGlobalHandleOfType(Object* object, int type) = 0;
 
+    virtual OBJECTHANDLE CreateDuplicateHandle(OBJECTHANDLE handle) = 0;
+
     virtual void DestroyHandleOfType(OBJECTHANDLE handle, int type) = 0;
 
     virtual void DestroyHandleOfUnknownType(OBJECTHANDLE handle) = 0;
index 9af5aa4bcc3456785590a0d90769fe20176b9186..a126d1c81665d1e34a5a0b7508134462758505a6 100644 (file)
@@ -5075,11 +5075,10 @@ void Thread::SafeUpdateLastThrownObject(void)
         EX_TRY
         {
             IGCHandleTable *pHandleTable = GCHandleTableUtilities::GetGCHandleTable();
-            void* table = pHandleTable->GetHandleTableForHandle(hThrowable);
 
             // Creating a duplicate handle here ensures that the AD of the last thrown object
             // matches the domain of the current throwable.
-            OBJECTHANDLE duplicateHandle = pHandleTable->CreateHandleOfType(table, OBJECTREFToObject(ObjectFromHandle(hThrowable)), HNDTYPE_DEFAULT);
+            OBJECTHANDLE duplicateHandle = pHandleTable->CreateDuplicateHandle(hThrowable);
             SetLastThrownObjectHandle(duplicateHandle);
         }
         EX_CATCH