|
@@ -53,35 +53,8 @@
|
|
|
// objc-internal.h //
|
|
// objc-internal.h //
|
|
|
/////////////////////
|
|
/////////////////////
|
|
|
|
|
|
|
|
-#if __LP64__
|
|
|
|
|
-#define OBJC_HAVE_TAGGED_POINTERS 1
|
|
|
|
|
-#endif
|
|
|
|
|
-
|
|
|
|
|
#if OBJC_HAVE_TAGGED_POINTERS
|
|
#if OBJC_HAVE_TAGGED_POINTERS
|
|
|
|
|
|
|
|
-#if TARGET_OS_OSX && __x86_64__
|
|
|
|
|
-// 64-bit Mac - tag bit is LSB
|
|
|
|
|
-# define OBJC_MSB_TAGGED_POINTERS 0
|
|
|
|
|
-#else
|
|
|
|
|
-// Everything else - tag bit is MSB
|
|
|
|
|
-# define OBJC_MSB_TAGGED_POINTERS 1
|
|
|
|
|
-#endif
|
|
|
|
|
-
|
|
|
|
|
-#if OBJC_MSB_TAGGED_POINTERS
|
|
|
|
|
-# define _OBJC_TAG_MASK (1UL<<63)
|
|
|
|
|
-# define _OBJC_TAG_EXT_MASK (0xfUL<<60)
|
|
|
|
|
-#else
|
|
|
|
|
-# define _OBJC_TAG_MASK 1UL
|
|
|
|
|
-# define _OBJC_TAG_EXT_MASK 0xfUL
|
|
|
|
|
-#endif
|
|
|
|
|
-
|
|
|
|
|
-//////////////////////////////////////
|
|
|
|
|
-// originally _objc_isTaggedPointer //
|
|
|
|
|
-//////////////////////////////////////
|
|
|
|
|
-static BOOL flex_isTaggedPointer(const void *ptr) {
|
|
|
|
|
- return ((uintptr_t)ptr & _OBJC_TAG_MASK) == _OBJC_TAG_MASK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
///////////////////
|
|
///////////////////
|
|
|
// objc-object.h //
|
|
// objc-object.h //
|
|
|
///////////////////
|
|
///////////////////
|
|
@@ -89,11 +62,11 @@ static BOOL flex_isTaggedPointer(const void *ptr) {
|
|
|
////////////////////////////////////////////////
|
|
////////////////////////////////////////////////
|
|
|
// originally objc_object::isExtTaggedPointer //
|
|
// originally objc_object::isExtTaggedPointer //
|
|
|
////////////////////////////////////////////////
|
|
////////////////////////////////////////////////
|
|
|
-static BOOL flex_isExtTaggedPointer(const void *ptr) {
|
|
|
|
|
|
|
+NS_INLINE BOOL flex_isExtTaggedPointer(const void *ptr) {
|
|
|
return ((uintptr_t)ptr & _OBJC_TAG_EXT_MASK) == _OBJC_TAG_EXT_MASK;
|
|
return ((uintptr_t)ptr & _OBJC_TAG_EXT_MASK) == _OBJC_TAG_EXT_MASK;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+#endif // OBJC_HAVE_TAGGED_POINTERS
|
|
|
|
|
|
|
|
/////////////////////////////////////
|
|
/////////////////////////////////////
|
|
|
// FLEXObjectInternal //
|
|
// FLEXObjectInternal //
|
|
@@ -102,6 +75,10 @@ static BOOL flex_isExtTaggedPointer(const void *ptr) {
|
|
|
|
|
|
|
|
extern "C" {
|
|
extern "C" {
|
|
|
|
|
|
|
|
|
|
+BOOL FLEXPointerIsTaggedPointer(const void *pointer) {
|
|
|
|
|
+ return flex_isTaggedPointer(pointer);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
BOOL FLEXPointerIsReadable(const void *inPtr) {
|
|
BOOL FLEXPointerIsReadable(const void *inPtr) {
|
|
|
kern_return_t error = KERN_SUCCESS;
|
|
kern_return_t error = KERN_SUCCESS;
|
|
|
|
|
|