< prev index next >

src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp

Print this page
rev 58687 : Shenandoah: New incremental-update mode

*** 47,67 **** void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop, 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) { Label done; // Avoid calling runtime if count == 0 __ cbz(count, done); // Is GC active? Address gc_state(rthread, in_bytes(ShenandoahThreadLocalData::gc_state_offset())); __ ldrb(rscratch1, gc_state); ! if (dest_uninitialized) { __ tbz(rscratch1, ShenandoahHeap::HAS_FORWARDED_BITPOS, done); } else { __ mov(rscratch2, ShenandoahHeap::HAS_FORWARDED | ShenandoahHeap::MARKING); __ tst(rscratch1, rscratch2); __ br(Assembler::EQ, done); --- 47,67 ---- void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop, Register src, Register dst, Register count, RegSet saved_regs) { if (is_oop) { bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0; ! if ((ShenandoahSATBBarrier && !dest_uninitialized) || ShenandoahStoreValEnqueueBarrier || ShenandoahLoadRefBarrier) { Label done; // Avoid calling runtime if count == 0 __ cbz(count, done); // Is GC active? Address gc_state(rthread, in_bytes(ShenandoahThreadLocalData::gc_state_offset())); __ ldrb(rscratch1, gc_state); ! if (ShenandoahSATBBarrier && dest_uninitialized) { __ tbz(rscratch1, ShenandoahHeap::HAS_FORWARDED_BITPOS, done); } else { __ mov(rscratch2, ShenandoahHeap::HAS_FORWARDED | ShenandoahHeap::MARKING); __ tst(rscratch1, rscratch2); __ br(Assembler::EQ, done);
< prev index next >