24 #ifndef CPU_X86_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_X86_HPP
25 #define CPU_X86_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_X86_HPP
26
27 #include "asm/macroAssembler.hpp"
28 #include "memory/allocation.hpp"
29 #ifdef COMPILER1
30 class LIR_Assembler;
31 class ShenandoahLoadReferenceBarrierStub;
32 class StubAssembler;
33 class StubCodeGenerator;
34 #endif
35
36 class ShenandoahBarrierSetAssembler : public CHeapObj<mtGC> {
37 private:
38
39 void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp = noreg);
40 void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp = noreg);
41
42 void load_reference_barrier_not_null(MacroAssembler* masm, Register dst);
43
44 public:
45 static ShenandoahBarrierSetAssembler* bsasm();
46
47 #ifdef COMPILER1
48 void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
49 #endif
50
51 void load_reference_barrier(MacroAssembler* masm, Register dst);
52
53 virtual void cmpxchg_oop(MacroAssembler* masm,
54 Register res, Address addr, Register oldval, Register newval,
55 bool exchange, Register tmp1, Register tmp2);
56 };
57
58 #endif // CPU_X86_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_X86_HPP
|
24 #ifndef CPU_X86_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_X86_HPP
25 #define CPU_X86_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_X86_HPP
26
27 #include "asm/macroAssembler.hpp"
28 #include "memory/allocation.hpp"
29 #ifdef COMPILER1
30 class LIR_Assembler;
31 class ShenandoahLoadReferenceBarrierStub;
32 class StubAssembler;
33 class StubCodeGenerator;
34 #endif
35
36 class ShenandoahBarrierSetAssembler : public CHeapObj<mtGC> {
37 private:
38
39 void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp = noreg);
40 void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp = noreg);
41
42 void load_reference_barrier_not_null(MacroAssembler* masm, Register dst);
43
44 void storeval_barrier_impl(MacroAssembler* masm, Register dst, Register tmp);
45
46 public:
47 static ShenandoahBarrierSetAssembler* bsasm();
48
49 void storeval_barrier(MacroAssembler* masm, Register dst, Register tmp);
50 #ifdef COMPILER1
51 void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
52 #endif
53
54 void load_reference_barrier(MacroAssembler* masm, Register dst);
55
56 virtual void cmpxchg_oop(MacroAssembler* masm,
57 Register res, Address addr, Register oldval, Register newval,
58 bool exchange, Register tmp1, Register tmp2);
59 };
60
61 #endif // CPU_X86_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_X86_HPP
|