38 private:
39
40 static address _shenandoah_lrb;
41
42 void satb_write_barrier_pre(MacroAssembler* masm,
43 Register obj,
44 Register pre_val,
45 Register thread,
46 Register tmp,
47 bool tosca_live,
48 bool expand_call);
49
50 void shenandoah_write_barrier_pre(MacroAssembler* masm,
51 Register obj,
52 Register pre_val,
53 Register thread,
54 Register tmp,
55 bool tosca_live,
56 bool expand_call);
57
58 void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp = noreg);
59 void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp = noreg);
60
61 void load_reference_barrier_not_null(MacroAssembler* masm, Register dst);
62
63 void storeval_barrier_impl(MacroAssembler* masm, Register dst, Register tmp);
64
65 address generate_shenandoah_lrb(StubCodeGenerator* cgen);
66
67 public:
68 static address shenandoah_lrb();
69
70 void storeval_barrier(MacroAssembler* masm, Register dst, Register tmp);
71 #ifdef COMPILER1
72 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
73 void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
74 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
75 void generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm);
76 #endif
77
78 void load_reference_barrier(MacroAssembler* masm, Register dst);
79 void load_reference_barrier_native(MacroAssembler* masm, Register dst);
80
81 void cmpxchg_oop(MacroAssembler* masm,
82 Register res, Address addr, Register oldval, Register newval,
83 bool exchange, Register tmp1, Register tmp2);
84 virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
85 Register src, Register dst, Register count);
86 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
87 Register dst, Address src, Register tmp1, Register tmp_thread);
88 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
89 Address dst, Register val, Register tmp1, Register tmp2);
90 virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
91 Register obj, Register tmp, Label& slowpath);
92
93 virtual void barrier_stubs_init();
94
95 };
96
97 #endif // CPU_X86_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_X86_HPP
|
38 private:
39
40 static address _shenandoah_lrb;
41
42 void satb_write_barrier_pre(MacroAssembler* masm,
43 Register obj,
44 Register pre_val,
45 Register thread,
46 Register tmp,
47 bool tosca_live,
48 bool expand_call);
49
50 void shenandoah_write_barrier_pre(MacroAssembler* masm,
51 Register obj,
52 Register pre_val,
53 Register thread,
54 Register tmp,
55 bool tosca_live,
56 bool expand_call);
57
58 void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp);
59 void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp);
60
61 void load_reference_barrier_not_null(MacroAssembler* masm, Register dst);
62
63 void storeval_barrier_impl(MacroAssembler* masm, Register dst, Register tmp);
64
65 address generate_shenandoah_lrb(StubCodeGenerator* cgen);
66
67 public:
68 static address shenandoah_lrb();
69
70 void storeval_barrier(MacroAssembler* masm, Register dst, Register tmp);
71 #ifdef COMPILER1
72 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
73 void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
74 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
75 void generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm);
76 #endif
77
78 void load_reference_barrier(MacroAssembler* masm, Register dst);
79 void load_reference_barrier_native(MacroAssembler* masm, Register dst);
80
81 void cmpxchg_oop(MacroAssembler* masm,
82 Register res, Address addr, Register oldval, Register newval,
83 bool exchange, Register tmp1, Register tmp2, Register tmp3);
84 virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
85 Register src, Register dst, Register count);
86 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
87 Register dst, Address src, Register tmp1, Register tmp_thread);
88 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
89 Address dst, Register val, Register tmp1, Register tmp2);
90 virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
91 Register obj, Register tmp, Label& slowpath);
92
93 virtual void barrier_stubs_init();
94
95 };
96
97 #endif // CPU_X86_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_X86_HPP
|