133 |
133 |
134 inline narrowOop oopDesc::encode_heap_oop_not_null(oop v) { |
134 inline narrowOop oopDesc::encode_heap_oop_not_null(oop v) { |
135 assert(!is_null(v), "oop value can never be zero"); |
135 assert(!is_null(v), "oop value can never be zero"); |
136 address heap_base = Universe::heap_base(); |
136 address heap_base = Universe::heap_base(); |
137 uint64_t result = (uint64_t)(pointer_delta((void*)v, (void*)heap_base, 1) >> LogMinObjAlignmentInBytes); |
137 uint64_t result = (uint64_t)(pointer_delta((void*)v, (void*)heap_base, 1) >> LogMinObjAlignmentInBytes); |
138 assert((result & 0xffffffff00000000L) == 0, "narrow oop overflow"); |
138 assert((result & 0xffffffff00000000ULL) == 0, "narrow oop overflow"); |
139 return (narrowOop)result; |
139 return (narrowOop)result; |
140 } |
140 } |
141 |
141 |
142 inline narrowOop oopDesc::encode_heap_oop(oop v) { |
142 inline narrowOop oopDesc::encode_heap_oop(oop v) { |
143 return (is_null(v)) ? (narrowOop)0 : encode_heap_oop_not_null(v); |
143 return (is_null(v)) ? (narrowOop)0 : encode_heap_oop_not_null(v); |