src/hotspot/cpu/aarch64/gc/g1/g1BarrierSetAssembler_aarch64.cpp
changeset 50024 7238cb613dc5
parent 49906 4bb58f644e4e
child 50110 3d98842c8677
equal deleted inserted replaced
50023:bdb627563075 50024:7238cb613dc5
   257   bool on_weak = (decorators & ON_WEAK_OOP_REF) != 0;
   257   bool on_weak = (decorators & ON_WEAK_OOP_REF) != 0;
   258   bool on_phantom = (decorators & ON_PHANTOM_OOP_REF) != 0;
   258   bool on_phantom = (decorators & ON_PHANTOM_OOP_REF) != 0;
   259   bool on_reference = on_weak || on_phantom;
   259   bool on_reference = on_weak || on_phantom;
   260   ModRefBarrierSetAssembler::load_at(masm, decorators, type, dst, src, tmp1, tmp_thread);
   260   ModRefBarrierSetAssembler::load_at(masm, decorators, type, dst, src, tmp1, tmp_thread);
   261   if (on_oop && on_reference) {
   261   if (on_oop && on_reference) {
       
   262     // LR is live.  It must be saved around calls.
       
   263     __ enter(); // barrier may call runtime
   262     // Generate the G1 pre-barrier code to log the value of
   264     // Generate the G1 pre-barrier code to log the value of
   263     // the referent field in an SATB buffer.
   265     // the referent field in an SATB buffer.
   264     g1_write_barrier_pre(masm /* masm */,
   266     g1_write_barrier_pre(masm /* masm */,
   265                          noreg /* obj */,
   267                          noreg /* obj */,
   266                          dst /* pre_val */,
   268                          dst /* pre_val */,
   267                          rthread /* thread */,
   269                          rthread /* thread */,
   268                          tmp1 /* tmp */,
   270                          tmp1 /* tmp */,
   269                          true /* tosca_live */,
   271                          true /* tosca_live */,
   270                          true /* expand_call */);
   272                          true /* expand_call */);
       
   273     __ leave();
   271   }
   274   }
   272 }
   275 }
   273 
   276 
   274 void G1BarrierSetAssembler::oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
   277 void G1BarrierSetAssembler::oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
   275                                          Address dst, Register val, Register tmp1, Register tmp2) {
   278                                          Address dst, Register val, Register tmp1, Register tmp2) {