24
25 #ifndef CPU_ARM_GC_G1_G1BARRIERSETASSEMBLER_ARM_HPP
26 #define CPU_ARM_GC_G1_G1BARRIERSETASSEMBLER_ARM_HPP
27
28 #include "asm/macroAssembler.hpp"
29 #include "gc/shared/modRefBarrierSetAssembler.hpp"
30 #include "utilities/macros.hpp"
31
32 class LIR_Assembler;
33 class StubAssembler;
34 class G1PreBarrierStub;
35 class G1PostBarrierStub;
36
37 class G1BarrierSetAssembler: public ModRefBarrierSetAssembler {
38 protected:
39 void gen_write_ref_array_pre_barrier(MacroAssembler* masm, DecoratorSet decorators,
40 Register addr, Register count, int callee_saved_regs);
41 void gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators,
42 Register addr, Register count, Register tmp);
43
44 #ifdef COMPILER1
45 public:
46 void gen_pre_barrier_stub(LIR_Assembler* ce, G1PreBarrierStub* stub);
47 void gen_post_barrier_stub(LIR_Assembler* ce, G1PostBarrierStub* stub);
48
49 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
50 void generate_c1_post_barrier_runtime_stub(StubAssembler* sasm);
51 #endif
52 };
53
54 #endif // CPU_ARM_GC_G1_G1BARRIERSETASSEMBLER_ARM_HPP
|
24
25 #ifndef CPU_ARM_GC_G1_G1BARRIERSETASSEMBLER_ARM_HPP
26 #define CPU_ARM_GC_G1_G1BARRIERSETASSEMBLER_ARM_HPP
27
28 #include "asm/macroAssembler.hpp"
29 #include "gc/shared/modRefBarrierSetAssembler.hpp"
30 #include "utilities/macros.hpp"
31
32 class LIR_Assembler;
33 class StubAssembler;
34 class G1PreBarrierStub;
35 class G1PostBarrierStub;
36
37 class G1BarrierSetAssembler: public ModRefBarrierSetAssembler {
38 protected:
39 void gen_write_ref_array_pre_barrier(MacroAssembler* masm, DecoratorSet decorators,
40 Register addr, Register count, int callee_saved_regs);
41 void gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators,
42 Register addr, Register count, Register tmp);
43
44 void g1_write_barrier_pre(MacroAssembler* masm,
45 Register store_addr,
46 Register new_val,
47 Register pre_val,
48 Register tmp1,
49 Register tmp2);
50
51 void g1_write_barrier_post(MacroAssembler* masm,
52 Register store_addr,
53 Register new_val,
54 Register tmp1,
55 Register tmp2,
56 Register tmp3);
57
58 virtual void oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
59 Address obj, Register new_val, Register tmp1, Register tmp2, Register tmp3, bool is_null);
60
61 public:
62 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
63 Register dst, Address src, Register tmp1, Register tmp2, Register tmp3);
64
65 #ifdef COMPILER1
66 public:
67 void gen_pre_barrier_stub(LIR_Assembler* ce, G1PreBarrierStub* stub);
68 void gen_post_barrier_stub(LIR_Assembler* ce, G1PostBarrierStub* stub);
69
70 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
71 void generate_c1_post_barrier_runtime_stub(StubAssembler* sasm);
72 #endif
73 };
74
75 #endif // CPU_ARM_GC_G1_G1BARRIERSETASSEMBLER_ARM_HPP
|