< prev index next >

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

Print this page

        

*** 524,533 **** --- 524,534 ---- ShenandoahBarrierSetC1* bs = (ShenandoahBarrierSetC1*)BarrierSet::barrier_set()->barrier_set_c1(); __ bind(*stub->entry()); Register obj = stub->obj()->as_register(); Register res = stub->result()->as_register(); + Register addr = stub->addr()->as_register_lo(); Register tmp1 = stub->tmp1()->as_register(); Register tmp2 = stub->tmp2()->as_register(); assert(res == r0, "result must arrive in r0");
*** 556,565 **** --- 557,567 ---- __ eon(res, tmp1, zr); __ b(*stub->continuation()); __ bind(slow_path); ce->store_parameter(res, 0); + ce->store_parameter(addr, 1); __ far_call(RuntimeAddress(bs->load_reference_barrier_rt_code_blob()->code_begin())); __ b(*stub->continuation()); }
*** 617,627 **** __ prologue("shenandoah_load_reference_barrier", false); // arg0 : object to be resolved __ push_call_clobbered_registers(); __ load_parameter(0, r0); ! __ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier)); __ blr(lr); __ mov(rscratch1, r0); __ pop_call_clobbered_registers(); __ mov(r0, rscratch1); --- 619,634 ---- __ prologue("shenandoah_load_reference_barrier", false); // arg0 : object to be resolved __ push_call_clobbered_registers(); __ load_parameter(0, r0); ! __ load_parameter(1, r1); ! if (UseCompressedOops) { ! __ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_fixup_narrow)); ! } else { ! __ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_fixup)); ! } __ blr(lr); __ mov(rscratch1, r0); __ pop_call_clobbered_registers(); __ mov(r0, rscratch1);
< prev index next >