< prev index next >

src/hotspot/cpu/aarch64/gc/g1/g1BarrierSetAssembler_aarch64.cpp

Print this page

        

*** 271,281 **** __ leave(); } } void G1BarrierSetAssembler::oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type, ! Address dst, Register val, Register tmp1, Register tmp2) { // flatten object address if needed if (dst.index() == noreg && dst.offset() == 0) { if (dst.base() != r3) { __ mov(r3, dst.base()); } --- 271,286 ---- __ leave(); } } void G1BarrierSetAssembler::oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type, ! Address dst, Register val, Register tmp1, Register tmp2, Register tmp3) { ! ! if (tmp3 == noreg) { ! tmp3 = r8; ! } ! // flatten object address if needed if (dst.index() == noreg && dst.offset() == 0) { if (dst.base() != r3) { __ mov(r3, dst.base()); }
*** 290,308 **** tmp1 /* tmp */, val != noreg /* tosca_live */, false /* expand_call */); if (val == noreg) { ! BarrierSetAssembler::store_at(masm, decorators, type, Address(r3, 0), noreg, noreg, noreg); } else { // G1 barrier needs uncompressed oop for region cross check. Register new_val = val; if (UseCompressedOops) { new_val = rscratch2; __ mov(new_val, val); } ! BarrierSetAssembler::store_at(masm, decorators, type, Address(r3, 0), val, noreg, noreg); g1_write_barrier_post(masm, r3 /* store_adr */, new_val /* new_val */, rthread /* thread */, tmp1 /* tmp */, --- 295,313 ---- tmp1 /* tmp */, val != noreg /* tosca_live */, false /* expand_call */); if (val == noreg) { ! BarrierSetAssembler::store_at(masm, decorators, type, Address(r3, 0), noreg, noreg, noreg, noreg); } else { // G1 barrier needs uncompressed oop for region cross check. Register new_val = val; if (UseCompressedOops) { new_val = rscratch2; __ mov(new_val, val); } ! BarrierSetAssembler::store_at(masm, decorators, type, Address(r3, 0), val, noreg, noreg, noreg); g1_write_barrier_post(masm, r3 /* store_adr */, new_val /* new_val */, rthread /* thread */, tmp1 /* tmp */,
< prev index next >