Differences From Artifact [696420866c]:
- File src/runtime/tagged-pointer.m — part of check-in [0bfac2b513] at 2020-07-12 11:50:29 on branch tagged-pointers — Obfuscate tagged pointers (user: js, size: 2130) [annotate] [blame] [check-ins using] [more...]
To Artifact [347f048030]:
- File
src/runtime/tagged-pointer.m
— part of check-in
[2fee820b5d]
at
2020-09-29 22:21:14
on branch trunk
— runtime: Make object_isTaggedPointer() a function
If it is an inline, changing how tagged pointers work internally would
break the ABI and require recompiling everything, making future changes
harder. (user: js, size: 2236) [annotate] [blame] [check-ins using] [more...]
︙ | ︙ | |||
47 48 49 50 51 52 53 54 55 56 57 58 59 60 | i = taggedPointerClassesCount++; objc_tagged_pointer_classes[i] = class; objc_global_mutex_unlock(); return i; } Class object_getTaggedPointerClass(id object) { uintptr_t pointer = (uintptr_t)object ^ objc_tagged_pointer_secret; pointer &= (1 << TAGGED_POINTER_BITS) - 1; | > > > > > > > > | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | i = taggedPointerClassesCount++; objc_tagged_pointer_classes[i] = class; objc_global_mutex_unlock(); return i; } bool object_isTaggedPointer(id object) { uintptr_t pointer = (uintptr_t)object; return pointer & 1; } Class object_getTaggedPointerClass(id object) { uintptr_t pointer = (uintptr_t)object ^ objc_tagged_pointer_secret; pointer &= (1 << TAGGED_POINTER_BITS) - 1; |
︙ | ︙ |