130 bool acquire, bool release, bool is_cae, Register result);
131 virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
132 Register src, Register dst, Register count, RegSet saved_regs);
133 virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
134 Register start, Register count, Register tmp);
135 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
136 Register dst, Address src, Register tmp1, Register tmp2);
137 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
138 Address dst, Register val, Register tmp1, Register tmp2, Register tmp3);
139 virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
140 Register obj, Register tmp, Label& slowpath);
141
142 #ifdef COMPILER1
143 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
144 void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
145 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
146 void generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm, DecoratorSet decorators);
147 #endif
148
149 #ifdef COMPILER2
150 // Entry points from Matcher
151 void load_c2(const MachNode* node, MacroAssembler* masm, Register dst, Address addr);
152 void store_c2(const MachNode* node, MacroAssembler* masm, Address dst, bool dst_narrow, Register src, bool src_narrow);
153 void compare_and_set_c2(const MachNode* node, MacroAssembler* masm, Register res, Register addr, Register oldval,
154 Register newval, bool exchange, bool narrow, bool weak);
155 void get_and_set_c2(const MachNode* node, MacroAssembler* masm, Register preval, Register newval, Register addr);
156 void card_barrier_c2(const MachNode* node, MacroAssembler* masm, Address addr);
157 virtual void try_resolve_weak_handle_in_c2(MacroAssembler* masm, Register obj, Register tmp, Label& slow_path);
158 #endif
159 };
160
161 #endif // CPU_AARCH64_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_AARCH64_HPP
|
130 bool acquire, bool release, bool is_cae, Register result);
131 virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
132 Register src, Register dst, Register count, RegSet saved_regs);
133 virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
134 Register start, Register count, Register tmp);
135 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
136 Register dst, Address src, Register tmp1, Register tmp2);
137 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
138 Address dst, Register val, Register tmp1, Register tmp2, Register tmp3);
139 virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
140 Register obj, Register tmp, Label& slowpath);
141
142 #ifdef COMPILER1
143 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
144 void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
145 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
146 void generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm, DecoratorSet decorators);
147 #endif
148
149 #ifdef COMPILER2
150 // Barrier hotpatching
151 static address parse_stub_address(address pc);
152 static void patch_branch_to_nop(address pc);
153 static void patch_nop_to_branch(address pc, address stub_addr);
154
155 // Entry points from Matcher
156 void load_c2(const MachNode* node, MacroAssembler* masm, Register dst, Address addr);
157 void store_c2(const MachNode* node, MacroAssembler* masm, Address dst, bool dst_narrow, Register src, bool src_narrow);
158 void compare_and_set_c2(const MachNode* node, MacroAssembler* masm, Register res, Register addr, Register oldval,
159 Register newval, bool exchange, bool narrow, bool weak);
160 void get_and_set_c2(const MachNode* node, MacroAssembler* masm, Register preval, Register newval, Register addr);
161 void card_barrier_c2(const MachNode* node, MacroAssembler* masm, Address addr);
162 virtual void try_resolve_weak_handle_in_c2(MacroAssembler* masm, Register obj, Register tmp, Label& slow_path);
163 #endif
164 };
165
166 #endif // CPU_AARCH64_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_AARCH64_HPP
|