--- old/src/share/vm/oops/instanceRefKlass.inline.hpp 2015-10-08 22:15:47.138316651 +0200 +++ new/src/share/vm/oops/instanceRefKlass.inline.hpp 2015-10-08 22:15:47.090317798 +0200 @@ -46,7 +46,10 @@ ReferenceProcessor* rp = closure->_ref_processor; if (!oopDesc::is_null(heap_oop)) { oop referent = oopDesc::decode_heap_oop_not_null(heap_oop); - if (!referent->is_gc_marked() && (rp != NULL) && + if (UseShenandoahGC) { + referent = ShenandoahBarrierSet::resolve_and_update_oop_static(referent_addr, referent); + } + if ((UseShenandoahGC || !referent->is_gc_marked()) && (rp != NULL) && rp->discover_reference(obj, reference_type())) { return; } else if (contains(referent_addr)) {