equal
deleted
inserted
replaced
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) { |