< 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 >