< prev index next >

src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.cpp

Print this page
*** 46,11 ***
  
  void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
                                                         Register src, Register dst, Register count, RegSet saved_regs) {
    if (is_oop) {
      bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0;
!     if ((ShenandoahSATBBarrier && !dest_uninitialized) || ShenandoahIUBarrier || ShenandoahLoadRefBarrier) {
  
        Label done;
  
        // Avoid calling runtime if count == 0
        __ beqz(count, done);
--- 46,11 ---
  
  void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
                                                         Register src, Register dst, Register count, RegSet saved_regs) {
    if (is_oop) {
      bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0;
!     if ((ShenandoahSATBBarrier && !dest_uninitialized) || ShenandoahLoadRefBarrier) {
  
        Label done;
  
        // Avoid calling runtime if count == 0
        __ beqz(count, done);

*** 310,20 ***
  
    __ bind(heap_stable);
    __ leave();
  }
  
- void ShenandoahBarrierSetAssembler::iu_barrier(MacroAssembler* masm, Register dst, Register tmp) {
-   if (ShenandoahIUBarrier) {
-     __ push_call_clobbered_registers();
- 
-     satb_write_barrier_pre(masm, noreg, dst, xthread, tmp, t0, true, false);
- 
-     __ pop_call_clobbered_registers();
-   }
- }
- 
  //
  // Arguments:
  //
  // Inputs:
  //   src:        oop location to load from, might be clobbered
--- 310,10 ---

*** 422,12 ***
                                 false /* expand_call */);
  
    if (val == noreg) {
      BarrierSetAssembler::store_at(masm, decorators, type, Address(tmp3, 0), noreg, noreg, noreg, noreg);
    } else {
!     iu_barrier(masm, val, tmp1);
-     // G1 barrier needs uncompressed oop for region cross check.
      Register new_val = val;
      if (UseCompressedOops) {
        new_val = t1;
        __ mv(new_val, val);
      }
--- 412,11 ---
                                 false /* expand_call */);
  
    if (val == noreg) {
      BarrierSetAssembler::store_at(masm, decorators, type, Address(tmp3, 0), noreg, noreg, noreg, noreg);
    } else {
!     // Barrier needs uncompressed oop for region cross check.
      Register new_val = val;
      if (UseCompressedOops) {
        new_val = t1;
        __ mv(new_val, val);
      }
< prev index next >