< prev index next >

src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp

Print this page
*** 589,11 ***
      restore_machine_state(masm, /* handle_gpr = */ true, /* handle_fp = */ true);
    }
  }
  
  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);
    bool in_heap = (decorators & IN_HEAP) != 0;
    bool as_normal = (decorators & AS_NORMAL) != 0;
    if (on_oop && in_heap) {
--- 589,11 ---
      restore_machine_state(masm, /* handle_gpr = */ true, /* handle_fp = */ true);
    }
  }
  
  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);
    bool in_heap = (decorators & IN_HEAP) != 0;
    bool as_normal = (decorators & AS_NORMAL) != 0;
    if (on_oop && in_heap) {

*** 627,18 ***
                                     tmp3  /* tmp */,
                                     val != noreg /* tosca_live */,
                                     false /* expand_call */);
      }
      if (val == noreg) {
!       BarrierSetAssembler::store_at(masm, decorators, type, Address(tmp1, 0), val, noreg, noreg);
      } else {
        iu_barrier(masm, val, tmp3);
!       BarrierSetAssembler::store_at(masm, decorators, type, Address(tmp1, 0), val, noreg, noreg);
      }
      NOT_LP64(imasm->restore_bcp());
    } else {
!     BarrierSetAssembler::store_at(masm, decorators, type, dst, val, tmp1, tmp2);
    }
  }
  
  void ShenandoahBarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
                                                                    Register obj, Register tmp, Label& slowpath) {
--- 627,18 ---
                                     tmp3  /* tmp */,
                                     val != noreg /* tosca_live */,
                                     false /* expand_call */);
      }
      if (val == noreg) {
!       BarrierSetAssembler::store_at(masm, decorators, type, Address(tmp1, 0), val, noreg, noreg, noreg);
      } else {
        iu_barrier(masm, val, tmp3);
!       BarrierSetAssembler::store_at(masm, decorators, type, Address(tmp1, 0), val, noreg, noreg, noreg);
      }
      NOT_LP64(imasm->restore_bcp());
    } else {
!     BarrierSetAssembler::store_at(masm, decorators, type, dst, val, tmp1, tmp2, tmp3);
    }
  }
  
  void ShenandoahBarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
                                                                    Register obj, Register tmp, Label& slowpath) {
< prev index next >