src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp
changeset 59283 78aa7484c722
parent 58985 5606867a5e6e
child 59296 9186be5c78ba
equal deleted inserted replaced
59282:f5f129bfa403 59283:78aa7484c722
   509     BarrierSetAssembler::load_at(masm, decorators, type, dst, src, tmp1, tmp_thread);
   509     BarrierSetAssembler::load_at(masm, decorators, type, dst, src, tmp1, tmp_thread);
   510   }
   510   }
   511 
   511 
   512   // 3: apply keep-alive barrier if needed
   512   // 3: apply keep-alive barrier if needed
   513   if (ShenandoahBarrierSet::need_keep_alive_barrier(decorators, type)) {
   513   if (ShenandoahBarrierSet::need_keep_alive_barrier(decorators, type)) {
       
   514     __ push_IU_state();
   514     const Register thread = NOT_LP64(tmp_thread) LP64_ONLY(r15_thread);
   515     const Register thread = NOT_LP64(tmp_thread) LP64_ONLY(r15_thread);
   515     assert_different_registers(dst, tmp1, tmp_thread);
   516     assert_different_registers(dst, tmp1, tmp_thread);
   516     NOT_LP64(__ get_thread(thread));
   517     NOT_LP64(__ get_thread(thread));
   517     // Generate the SATB pre-barrier code to log the value of
   518     // Generate the SATB pre-barrier code to log the value of
   518     // the referent field in an SATB buffer.
   519     // the referent field in an SATB buffer.
   521                                  dst /* pre_val */,
   522                                  dst /* pre_val */,
   522                                  thread /* thread */,
   523                                  thread /* thread */,
   523                                  tmp1 /* tmp */,
   524                                  tmp1 /* tmp */,
   524                                  true /* tosca_live */,
   525                                  true /* tosca_live */,
   525                                  true /* expand_call */);
   526                                  true /* expand_call */);
       
   527     __ pop_IU_state();
   526   }
   528   }
   527 }
   529 }
   528 
   530 
   529 void ShenandoahBarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
   531 void ShenandoahBarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
   530               Address dst, Register val, Register tmp1, Register tmp2) {
   532               Address dst, Register val, Register tmp1, Register tmp2) {