< 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,27 +681,15 @@
__ align(6);
StubCodeMark mark(cgen, "StubRoutines", "shenandoah_lrb");
address start = __ pc();
- Label work, done;
+ 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, 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);
+ __ tbnz(rscratch2, 0, slow_path);
__ ret(lr);
__ bind(slow_path);
__ enter(); // required for proper stackwalking of RuntimeStub frame
@@ -716,11 +704,10 @@
__ mov(rscratch1, r0);
__ pop_call_clobbered_registers();
__ mov(r0, rscratch1);
__ leave(); // required for proper stackwalking of RuntimeStub frame
- __ bind(done);
__ ret(lr);
return start;
}
< prev index next >