--- old/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp 2020-04-03 22:13:00.428291191 +0200 +++ new/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp 2020-04-03 22:13:00.318291922 +0200 @@ -49,7 +49,7 @@ Register src, Register dst, Register count, RegSet saved_regs) { if (is_oop) { bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0; - if ((ShenandoahSATBBarrier && !dest_uninitialized) || ShenandoahLoadRefBarrier) { + if ((ShenandoahSATBBarrier && !dest_uninitialized) || ShenandoahStoreValEnqueueBarrier || ShenandoahLoadRefBarrier) { Label done; @@ -59,7 +59,7 @@ // Is GC active? Address gc_state(rthread, in_bytes(ShenandoahThreadLocalData::gc_state_offset())); __ ldrb(rscratch1, gc_state); - if (dest_uninitialized) { + if (dest_uninitialized && !ShenandoahStoreValEnqueueBarrier) { __ tbz(rscratch1, ShenandoahHeap::HAS_FORWARDED_BITPOS, done); } else { __ mov(rscratch2, ShenandoahHeap::HAS_FORWARDED | ShenandoahHeap::MARKING);