< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp

Print this page
rev 58162 : 8237632: Shenandoah fails some vmTestbase_nsk_jvmti tests with "Forwardee must point to a heap address"

*** 138,148 **** template <class T> oop ShenandoahBarrierSet::load_reference_barrier_mutator_work(oop obj, T* load_addr) { assert(ShenandoahLoadRefBarrier, "should be enabled"); shenandoah_assert_in_cset(load_addr, obj); ! oop fwd = resolve_forwarded_not_null(obj); if (obj == fwd) { assert(_heap->is_gc_in_progress_mask(ShenandoahHeap::EVACUATION | ShenandoahHeap::TRAVERSAL), "evac should be in progress"); ShenandoahEvacOOMScope oom_evac_scope; --- 138,148 ---- template <class T> oop ShenandoahBarrierSet::load_reference_barrier_mutator_work(oop obj, T* load_addr) { assert(ShenandoahLoadRefBarrier, "should be enabled"); shenandoah_assert_in_cset(load_addr, obj); ! oop fwd = resolve_forwarded_not_null_mutator(obj); if (obj == fwd) { assert(_heap->is_gc_in_progress_mask(ShenandoahHeap::EVACUATION | ShenandoahHeap::TRAVERSAL), "evac should be in progress"); ShenandoahEvacOOMScope oom_evac_scope;
*** 171,181 **** HeapWord* cur = cast_from_oop<HeapWord*>(obj) + obj->size(); size_t count = 0; while ((cur < r->top()) && ctx->is_marked(oop(cur)) && (count++ < max)) { oop cur_oop = oop(cur); ! if (cur_oop == resolve_forwarded_not_null(cur_oop)) { _heap->evacuate_object(cur_oop, thread); } cur = cur + cur_oop->size(); } } --- 171,181 ---- HeapWord* cur = cast_from_oop<HeapWord*>(obj) + obj->size(); size_t count = 0; while ((cur < r->top()) && ctx->is_marked(oop(cur)) && (count++ < max)) { oop cur_oop = oop(cur); ! if (cur_oop == resolve_forwarded_not_null_mutator(cur_oop)) { _heap->evacuate_object(cur_oop, thread); } cur = cur + cur_oop->size(); } }
< prev index next >