< prev index next > src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp
Print this page
class LIR_Assembler;
class ShenandoahPreBarrierStub;
class ShenandoahLoadReferenceBarrierStub;
class StubAssembler;
#endif
+ #ifdef COMPILER2
+ class MachNode;
+ #endif // COMPILER2
class StubCodeGenerator;
class ShenandoahBarrierSetAssembler: public BarrierSetAssembler {
+ friend class ShenandoahCASBarrierSlowStub;
private:
void satb_barrier(MacroAssembler* masm,
Register obj,
Register pre_val,
Address dst, Register val, Register tmp1, Register tmp2, Register tmp3);
virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
Register obj, Register tmp, Label& slowpath);
void cmpxchg_oop(MacroAssembler* masm, Register addr, Register expected, Register new_val,
bool acquire, bool release, bool is_cae, Register result);
+ #ifdef COMPILER2
+ void store_c2(const MachNode* node, MacroAssembler* masm, Register dst, bool dst_narrow, Register src, bool src_narrow, bool is_volatile);
+ void cae_c2(const MachNode* node, MacroAssembler* masm, Register res, Register addr, Register oldval, Register newval, bool exchange, bool maybe_null, bool narrow, bool acquire, bool release, bool weak);
+ void get_and_set_c2(const MachNode* node, MacroAssembler* masm, Register preval, Register newval, Register addr, bool acquire);
+ void load_c2(const MachNode* node, MacroAssembler* masm, Register dst, Register addr, bool acquire);
+
+ void gc_state_check_c2(MacroAssembler* masm, Register rscratch, const unsigned char test_state, BarrierStubC2* slow_stub);
+ void card_barrier_c2(const MachNode* node, MacroAssembler* masm, Register addr, Register cond);
+ #endif
};
#endif // CPU_AARCH64_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_AARCH64_HPP
< prev index next >