< prev index next >

src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp

Print this page
*** 372,11 ***
      __ leave();
    }
  }
  
  void ShenandoahBarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
!                                              Address dst, Register val, Register tmp1, Register tmp2) {
    bool on_oop = is_reference_type(type);
    if (!on_oop) {
      BarrierSetAssembler::store_at(masm, decorators, type, dst, val, tmp1, tmp2);
      return;
    }
--- 372,11 ---
      __ leave();
    }
  }
  
  void ShenandoahBarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
!                                              Address dst, Register val, Register tmp1, Register tmp2, Register tmp3) {
    bool on_oop = is_reference_type(type);
    if (!on_oop) {
      BarrierSetAssembler::store_at(masm, decorators, type, dst, val, tmp1, tmp2);
      return;
    }

*** 397,20 ***
                                 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 {
      iu_barrier(masm, val, tmp1);
      // 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);
    }
  
  }
  
  void ShenandoahBarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
--- 397,20 ---
                                 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 {
      iu_barrier(masm, val, tmp1);
      // 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);
    }
  
  }
  
  void ShenandoahBarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
< prev index next >