From efd4d357f009e4509a6147f390d2d9fde7d717d0 Mon Sep 17 00:00:00 2001 From: Aditya Mandaleeka Date: Thu, 6 Apr 2017 17:57:25 -0700 Subject: [PATCH] Move handle null checks to VM side. --- src/gc/handletable.h | 12 ------------ src/gc/objecthandle.h | 2 -- src/vm/gchandletableutilities.h | 15 +++++++++++++++ 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/gc/handletable.h b/src/gc/handletable.h index 5b0299f..ebf8c62 100644 --- a/src/gc/handletable.h +++ b/src/gc/handletable.h @@ -216,18 +216,6 @@ FORCEINLINE BOOL HndIsNull(OBJECTHANDLE handle) } - -/* - * inline handle checking - */ -FORCEINLINE BOOL HndCheckForNullUnchecked(OBJECTHANDLE handle) -{ - LIMITED_METHOD_CONTRACT; - - return (handle == NULL || (*(_UNCHECKED_OBJECTREF *)handle) == NULL); -} - - /* * * Checks handle value for null or special value used for free handles in cache. diff --git a/src/gc/objecthandle.h b/src/gc/objecthandle.h index 73d363f..40927cf 100644 --- a/src/gc/objecthandle.h +++ b/src/gc/objecthandle.h @@ -30,8 +30,6 @@ #define StoreObjectInHandle(handle, object) HndAssignHandle(handle, object) #define InterlockedCompareExchangeObjectInHandle(handle, object, oldObj) HndInterlockedCompareExchangeHandle(handle, object, oldObj) #define StoreFirstObjectInHandle(handle, object) HndFirstAssignHandle(handle, object) -#define ObjectHandleIsNull(handle) HndIsNull(handle) -#define IsHandleNullUnchecked(handle) HndCheckForNullUnchecked(handle) typedef DPTR(struct HandleTableMap) PTR_HandleTableMap; typedef DPTR(struct HandleTableBucket) PTR_HandleTableBucket; diff --git a/src/vm/gchandletableutilities.h b/src/vm/gchandletableutilities.h index a631b55..6db6213 100644 --- a/src/vm/gchandletableutilities.h +++ b/src/vm/gchandletableutilities.h @@ -45,6 +45,21 @@ inline OBJECTREF ObjectFromHandle(OBJECTHANDLE handle) return UNCHECKED_OBJECTREF_TO_OBJECTREF(*PTR_UNCHECKED_OBJECTREF(handle)); } +// Quick inline check for whether a handle is null +inline BOOL IsHandleNullUnchecked(OBJECTHANDLE handle) +{ + LIMITED_METHOD_CONTRACT; + + return (handle == NULL || (*(_UNCHECKED_OBJECTREF *)handle) == NULL); +} + +inline BOOL ObjectHandleIsNull(OBJECTHANDLE handle) +{ + LIMITED_METHOD_CONTRACT; + + return *(Object **)handle == NULL; +} + #ifndef DACCESS_COMPILE // Handle creation convenience functions -- 2.7.4