57 inline bool ZAddress::is_weak_bad(uintptr_t value) { 58 return value & ZAddressWeakBadMask; 59 } 60 61 inline bool ZAddress::is_weak_good(uintptr_t value) { 62 return !is_weak_bad(value) && !is_null(value); 63 } 64 65 inline bool ZAddress::is_weak_good_or_null(uintptr_t value) { 66 return !is_weak_bad(value); 67 } 68 69 inline bool ZAddress::is_marked(uintptr_t value) { 70 return value & ZAddressMetadataMarked; 71 } 72 73 inline bool ZAddress::is_finalizable(uintptr_t value) { 74 return value & ZAddressMetadataFinalizable; 75 } 76 77 inline bool ZAddress::is_remapped(uintptr_t value) { 78 return value & ZAddressMetadataRemapped; 79 } 80 81 inline uintptr_t ZAddress::offset(uintptr_t value) { 82 return value & ZAddressOffsetMask; 83 } 84 85 inline uintptr_t ZAddress::good(uintptr_t value) { 86 return address(offset(value) | ZAddressGoodMask); 87 } 88 89 inline uintptr_t ZAddress::good_or_null(uintptr_t value) { 90 return is_null(value) ? 0 : good(value); 91 } 92 93 inline uintptr_t ZAddress::finalizable_good(uintptr_t value) { 94 return address(offset(value) | ZAddressMetadataFinalizable | ZAddressGoodMask); 95 } 96 | 57 inline bool ZAddress::is_weak_bad(uintptr_t value) { 58 return value & ZAddressWeakBadMask; 59 } 60 61 inline bool ZAddress::is_weak_good(uintptr_t value) { 62 return !is_weak_bad(value) && !is_null(value); 63 } 64 65 inline bool ZAddress::is_weak_good_or_null(uintptr_t value) { 66 return !is_weak_bad(value); 67 } 68 69 inline bool ZAddress::is_marked(uintptr_t value) { 70 return value & ZAddressMetadataMarked; 71 } 72 73 inline bool ZAddress::is_finalizable(uintptr_t value) { 74 return value & ZAddressMetadataFinalizable; 75 } 76 77 inline bool ZAddress::is_finalizable_good(uintptr_t value) { 78 return is_finalizable(value) && is_good(value ^ ZAddressMetadataFinalizable); 79 } 80 81 inline bool ZAddress::is_remapped(uintptr_t value) { 82 return value & ZAddressMetadataRemapped; 83 } 84 85 inline uintptr_t ZAddress::offset(uintptr_t value) { 86 return value & ZAddressOffsetMask; 87 } 88 89 inline uintptr_t ZAddress::good(uintptr_t value) { 90 return address(offset(value) | ZAddressGoodMask); 91 } 92 93 inline uintptr_t ZAddress::good_or_null(uintptr_t value) { 94 return is_null(value) ? 0 : good(value); 95 } 96 97 inline uintptr_t ZAddress::finalizable_good(uintptr_t value) { 98 return address(offset(value) | ZAddressMetadataFinalizable | ZAddressGoodMask); 99 } 100 |