181 void InstanceRefKlass::trace_reference_gc(const char *s, oop obj) { |
181 void InstanceRefKlass::trace_reference_gc(const char *s, oop obj) { |
182 T* referent_addr = (T*) java_lang_ref_Reference::referent_addr_raw(obj); |
182 T* referent_addr = (T*) java_lang_ref_Reference::referent_addr_raw(obj); |
183 T* discovered_addr = (T*) java_lang_ref_Reference::discovered_addr_raw(obj); |
183 T* discovered_addr = (T*) java_lang_ref_Reference::discovered_addr_raw(obj); |
184 |
184 |
185 log_develop_trace(gc, ref)("InstanceRefKlass %s for obj " PTR_FORMAT, s, p2i(obj)); |
185 log_develop_trace(gc, ref)("InstanceRefKlass %s for obj " PTR_FORMAT, s, p2i(obj)); |
186 log_develop_trace(gc, ref)(" referent_addr/* " PTR_FORMAT " / " PTR_FORMAT, |
186 if (java_lang_ref_Reference::is_phantom(obj)) { |
187 p2i(referent_addr), p2i((oop)HeapAccess<ON_UNKNOWN_OOP_REF | AS_NO_KEEPALIVE>::oop_load_at(obj, java_lang_ref_Reference::referent_offset))); |
187 log_develop_trace(gc, ref)(" referent_addr/* " PTR_FORMAT " / " PTR_FORMAT, |
|
188 p2i(referent_addr), p2i((oop)HeapAccess<ON_PHANTOM_OOP_REF | AS_NO_KEEPALIVE>::oop_load(referent_addr))); |
|
189 } else { |
|
190 log_develop_trace(gc, ref)(" referent_addr/* " PTR_FORMAT " / " PTR_FORMAT, |
|
191 p2i(referent_addr), p2i((oop)HeapAccess<ON_WEAK_OOP_REF | AS_NO_KEEPALIVE>::oop_load(referent_addr))); |
|
192 } |
188 log_develop_trace(gc, ref)(" discovered_addr/* " PTR_FORMAT " / " PTR_FORMAT, |
193 log_develop_trace(gc, ref)(" discovered_addr/* " PTR_FORMAT " / " PTR_FORMAT, |
189 p2i(discovered_addr), p2i((oop)HeapAccess<AS_NO_KEEPALIVE>::oop_load(discovered_addr))); |
194 p2i(discovered_addr), p2i((oop)HeapAccess<AS_NO_KEEPALIVE>::oop_load(discovered_addr))); |
190 } |
195 } |
191 #endif |
196 #endif |
192 |
197 |