--- old/src/hotspot/share/gc/shenandoah/shenandoahBarrierSetClone.inline.hpp 2020-04-03 22:12:24.164521009 +0200 +++ new/src/hotspot/share/gc/shenandoah/shenandoahBarrierSetClone.inline.hpp 2020-04-03 22:12:24.061521648 +0200 @@ -84,6 +84,7 @@ void ShenandoahBarrierSet::clone_evacuation(oop obj) { assert(_heap->is_evacuation_in_progress(), "only during evacuation"); if (need_bulk_update(cast_from_oop(obj))) { + ShenandoahEvacOOMScope oom_evac_scope; ShenandoahUpdateRefsForOopClosure cl; obj->oop_iterate(&cl); } @@ -102,9 +103,9 @@ shenandoah_assert_correct(NULL, obj); int gc_state = _heap->gc_state(); - if ((gc_state != ShenandoahHeap::MARKING) != 0) { + if ((gc_state & ShenandoahHeap::MARKING) != 0) { clone_marking(obj); - } else if ((gc_state != ShenandoahHeap::EVACUATION) != 0) { + } else if ((gc_state & ShenandoahHeap::EVACUATION) != 0) { clone_evacuation(obj); } else { clone_update(obj);