< prev index next >
src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp
Print this page
rev 59363 : 8244729: Shenandoah: remove resolve paths from SBSA::generate_shenandoah_lrb
Reviewed-by: XXX
*** 681,707 ****
__ align(6);
StubCodeMark mark(cgen, "StubRoutines", "shenandoah_lrb");
address start = __ pc();
! Label work, done;
__ mov(rscratch2, ShenandoahHeap::in_cset_fast_test_addr());
__ lsr(rscratch1, r0, ShenandoahHeapRegion::region_size_bytes_shift_jint());
__ ldrb(rscratch2, Address(rscratch2, rscratch1));
! __ tbnz(rscratch2, 0, work);
! __ ret(lr);
! __ bind(work);
!
! Label slow_path;
! __ ldr(rscratch1, Address(r0, oopDesc::mark_offset_in_bytes()));
! __ eon(rscratch1, rscratch1, zr);
! __ ands(zr, rscratch1, markWord::lock_mask_in_place);
! __ br(Assembler::NE, slow_path);
!
! // Decode forwarded object.
! __ orr(rscratch1, rscratch1, markWord::marked_value);
! __ eon(r0, rscratch1, zr);
__ ret(lr);
__ bind(slow_path);
__ enter(); // required for proper stackwalking of RuntimeStub frame
--- 681,695 ----
__ align(6);
StubCodeMark mark(cgen, "StubRoutines", "shenandoah_lrb");
address start = __ pc();
! Label slow_path;
__ mov(rscratch2, ShenandoahHeap::in_cset_fast_test_addr());
__ lsr(rscratch1, r0, ShenandoahHeapRegion::region_size_bytes_shift_jint());
__ ldrb(rscratch2, Address(rscratch2, rscratch1));
! __ tbnz(rscratch2, 0, slow_path);
__ ret(lr);
__ bind(slow_path);
__ enter(); // required for proper stackwalking of RuntimeStub frame
*** 716,726 ****
__ mov(rscratch1, r0);
__ pop_call_clobbered_registers();
__ mov(r0, rscratch1);
__ leave(); // required for proper stackwalking of RuntimeStub frame
- __ bind(done);
__ ret(lr);
return start;
}
--- 704,713 ----
< prev index next >