So I can safely do this? (Macro rewritten as inline function)

static inline __attribute__((always_inline)) BOOL objc_isSmallObject(id obj)
{
        return (((intptr_t)obj) & 1) ? YES : NO;
}

在 2013-6-8,上午4:10,David Chisnall <[email protected]> 写道:

> On 7 Jun 2013, at 16:29, Luboš Doležel <[email protected]> wrote:
> 
>> for toll-free bridging in CoreBase, I need a way to detect whether the 
>> incoming pointer is a small object encoded in a pointer and act accordingly 
>> (treat it as an ObjC object and avoid reading it).
> 
> In objc/runtime.h, there is a constant SMALL_OBJECT_MASK.  If ptr & 
> SMALL_OBJECT_MASK == 0, then the pointer is not a small object.
> 
> On 32-bit platforms, the low bit of the pointer will be 0.  On 64-bit 
> platforms, the low 3 bits will always be zero.
> 
> David
> 
> 
> _______________________________________________
> Gnustep-dev mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/gnustep-dev


_______________________________________________
Gnustep-dev mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/gnustep-dev

Reply via email to