1.1 --- a/src/share/vm/oops/instanceRefKlass.cpp Fri Jul 10 16:01:20 2009 -0700 1.2 +++ b/src/share/vm/oops/instanceRefKlass.cpp Tue Jul 14 15:40:39 2009 -0700 1.3 @@ -28,13 +28,14 @@ 1.4 template <class T> 1.5 static void specialized_oop_follow_contents(instanceRefKlass* ref, oop obj) { 1.6 T* referent_addr = (T*)java_lang_ref_Reference::referent_addr(obj); 1.7 - oop referent = oopDesc::load_decode_heap_oop(referent_addr); 1.8 + T heap_oop = oopDesc::load_heap_oop(referent_addr); 1.9 debug_only( 1.10 if(TraceReferenceGC && PrintGCDetails) { 1.11 gclog_or_tty->print_cr("instanceRefKlass::oop_follow_contents " INTPTR_FORMAT, obj); 1.12 } 1.13 ) 1.14 - if (referent != NULL) { 1.15 + if (!oopDesc::is_null(heap_oop)) { 1.16 + oop referent = oopDesc::decode_heap_oop_not_null(heap_oop); 1.17 if (!referent->is_gc_marked() && 1.18 MarkSweep::ref_processor()-> 1.19 discover_reference(obj, ref->reference_type())) { 1.20 @@ -81,13 +82,14 @@ 1.21 ParCompactionManager* cm, 1.22 oop obj) { 1.23 T* referent_addr = (T*)java_lang_ref_Reference::referent_addr(obj); 1.24 - oop referent = oopDesc::load_decode_heap_oop(referent_addr); 1.25 + T heap_oop = oopDesc::load_heap_oop(referent_addr); 1.26 debug_only( 1.27 if(TraceReferenceGC && PrintGCDetails) { 1.28 gclog_or_tty->print_cr("instanceRefKlass::oop_follow_contents " INTPTR_FORMAT, obj); 1.29 } 1.30 ) 1.31 - if (referent != NULL) { 1.32 + if (!oopDesc::is_null(heap_oop)) { 1.33 + oop referent = oopDesc::decode_heap_oop_not_null(heap_oop); 1.34 if (PSParallelCompact::mark_bitmap()->is_unmarked(referent) && 1.35 PSParallelCompact::ref_processor()-> 1.36 discover_reference(obj, ref->reference_type())) { 1.37 @@ -182,9 +184,10 @@ 1.38 } \ 1.39 \ 1.40 T* referent_addr = (T*)java_lang_ref_Reference::referent_addr(obj); \ 1.41 - oop referent = oopDesc::load_decode_heap_oop(referent_addr); \ 1.42 - if (referent != NULL && contains(referent_addr)) { \ 1.43 + T heap_oop = oopDesc::load_heap_oop(referent_addr); \ 1.44 + if (!oopDesc::is_null(heap_oop) && contains(referent_addr)) { \ 1.45 ReferenceProcessor* rp = closure->_ref_processor; \ 1.46 + oop referent = oopDesc::decode_heap_oop_not_null(heap_oop); \ 1.47 if (!referent->is_gc_marked() && (rp != NULL) && \ 1.48 rp->discover_reference(obj, reference_type())) { \ 1.49 return size; \