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 read_barrier(MacroAssembler* masm, Register dst);
59 void read_barrier_impl(MacroAssembler* masm, Register dst);
60
61 void read_barrier_not_null(MacroAssembler* masm, Register dst);
62 void read_barrier_not_null_impl(MacroAssembler* masm, Register dst);
63
64 void write_barrier(MacroAssembler* masm, Register dst);
65 void write_barrier_impl(MacroAssembler* masm, Register dst);
66
67 void storeval_barrier(MacroAssembler* masm, Register dst, Register tmp);
68 void storeval_barrier_impl(MacroAssembler* masm, Register dst, Register tmp);
69
70 address generate_shenandoah_wb(StubCodeGenerator* cgen);
71
72 void save_vector_registers(MacroAssembler* masm);
73 void restore_vector_registers(MacroAssembler* masm);
74
75 public:
76 static address shenandoah_wb();
77
78 #ifdef COMPILER1
79 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
80 void gen_write_barrier_stub(LIR_Assembler* ce, ShenandoahWriteBarrierStub* stub);
81 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
82 #endif
83
84 void cmpxchg_oop(MacroAssembler* masm,
85 Register res, Address addr, Register oldval, Register newval,
86 bool exchange, bool encode, Register tmp1, Register tmp2);
87 virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
88 Register src, Register dst, Register count);
89 virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
90 Register src, Register dst, Register count);
91 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
92 Register dst, Address src, Register tmp1, Register tmp_thread);
93 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
94 Address dst, Register val, Register tmp1, Register tmp2);
95
96 #ifndef _LP64
97 virtual void obj_equals(MacroAssembler* masm,
98 Address obj1, jobject obj2);
99 virtual void obj_equals(MacroAssembler* masm,
100 Register obj1, jobject obj2);
101 #endif
102
103 virtual void obj_equals(MacroAssembler* masm, Register src1, Register src2);
104 virtual void obj_equals(MacroAssembler* masm, Register src1, Address src2);
105
106 virtual void tlab_allocate(MacroAssembler* masm,
|
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 read_barrier(MacroAssembler* masm, Register dst);
59 void read_barrier_impl(MacroAssembler* masm, Register dst);
60
61 void read_barrier_not_null(MacroAssembler* masm, Register dst);
62 void read_barrier_not_null_impl(MacroAssembler* masm, Register dst);
63
64 void write_barrier(MacroAssembler* masm, Register dst);
65 void write_barrier_impl(MacroAssembler* masm, Register dst);
66
67 void storeval_barrier_impl(MacroAssembler* masm, Register dst, Register tmp);
68
69 address generate_shenandoah_wb(StubCodeGenerator* cgen);
70
71 void save_vector_registers(MacroAssembler* masm);
72 void restore_vector_registers(MacroAssembler* masm);
73
74 public:
75 static address shenandoah_wb();
76
77 void storeval_barrier(MacroAssembler* masm, Register dst, Register tmp);
78 #ifdef COMPILER1
79 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
80 void gen_write_barrier_stub(LIR_Assembler* ce, ShenandoahWriteBarrierStub* stub);
81 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
82 #endif
83
84 void cmpxchg_oop(MacroAssembler* masm,
85 Register res, Address addr, Register oldval, Register newval,
86 bool exchange, Register tmp1, Register tmp2);
87 virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
88 Register src, Register dst, Register count);
89 virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
90 Register src, Register dst, Register count);
91 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
92 Register dst, Address src, Register tmp1, Register tmp_thread);
93 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
94 Address dst, Register val, Register tmp1, Register tmp2);
95
96 #ifndef _LP64
97 virtual void obj_equals(MacroAssembler* masm,
98 Address obj1, jobject obj2);
99 virtual void obj_equals(MacroAssembler* masm,
100 Register obj1, jobject obj2);
101 #endif
102
103 virtual void obj_equals(MacroAssembler* masm, Register src1, Register src2);
104 virtual void obj_equals(MacroAssembler* masm, Register src1, Address src2);
105
106 virtual void tlab_allocate(MacroAssembler* masm,
|