# HG changeset patch # User zgu # Date 1573224678 18000 # Node ID 66b1db608c12b735b9c1eafbd21bf04b5637a5ca # Parent 5606867a5e6e8d06270f26dc5fb4b53a18feee17 8233337: Shenandoah: Cleanup AArch64 SBSA::load_reference_barrier_not_null() Reviewed-by: rkennke diff -r 5606867a5e6e -r 66b1db608c12 src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp --- a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp Fri Nov 08 09:50:07 2019 -0500 +++ b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp Fri Nov 08 09:51:18 2019 -0500 @@ -254,32 +254,16 @@ dst = rscratch1; } - RegSet to_save_r1 = RegSet::of(r1); - // If outgoing register is r1, we can clobber it - if (result_dst != r1) { - __ push(to_save_r1, sp); - } + // Save r0 and r1, unless it is an output register + RegSet to_save = RegSet::of(r0, r1) - result_dst; + __ push(to_save, sp); __ lea(r1, load_addr); - - RegSet to_save_r0 = RegSet::of(r0); - if (dst != r0) { - __ push(to_save_r0, sp); - __ mov(r0, dst); - } + __ mov(r0, dst); __ far_call(RuntimeAddress(CAST_FROM_FN_PTR(address, ShenandoahBarrierSetAssembler::shenandoah_lrb()))); - if (result_dst != r0) { - __ mov(result_dst, r0); - } - - if (dst != r0) { - __ pop(to_save_r0, sp); - } - - if (result_dst != r1) { - __ pop(to_save_r1, sp); - } + __ mov(result_dst, r0); + __ pop(to_save, sp); __ bind(done); __ leave();