77
78 virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
79 Register start, Register count, Register tmp);
80
81 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
82 Register dst, Address src, Register tmp1, Register tmp2);
83 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
84 Address dst, Register val, Register tmp1, Register tmp2, Register tmp3);
85
86 virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
87 Register obj, Register tmp, Label& slowpath);
88
89 #ifdef COMPILER1
90 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
91 void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
92 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
93 void generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm, DecoratorSet decorators);
94 #endif
95
96 #ifdef COMPILER2
97 // Entry points from Matcher
98 void load_c2(const MachNode* node, MacroAssembler* masm, Register dst, Address addr);
99 void store_c2(const MachNode* node, MacroAssembler* masm, Address dst, bool dst_narrow, Register src,
100 bool src_narrow, Register tmp);
101 void compare_and_set_c2(const MachNode* node, MacroAssembler* masm, Register res, Register addr, Register oldval,
102 Register newval, Register tmp, bool exchange, bool maybe_null, bool narrow, bool weak);
103 void get_and_set_c2(const MachNode* node, MacroAssembler* masm, Register preval, Register newval,
104 Register addr, Register tmp);
105
106 void gc_state_check_c2(MacroAssembler* masm, Register rscratch, const unsigned char test_state, BarrierStubC2* slow_stub);
107 void card_barrier_c2(const MachNode* node, MacroAssembler* masm, Address addr);
108 virtual void try_resolve_weak_handle_in_c2(MacroAssembler* masm, Register obj, Register tmp, Label& slow_path);
109 #endif
110 };
111
112 #endif // CPU_RISCV_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_RISCV_HPP
|
77
78 virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
79 Register start, Register count, Register tmp);
80
81 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
82 Register dst, Address src, Register tmp1, Register tmp2);
83 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
84 Address dst, Register val, Register tmp1, Register tmp2, Register tmp3);
85
86 virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
87 Register obj, Register tmp, Label& slowpath);
88
89 #ifdef COMPILER1
90 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
91 void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
92 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
93 void generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm, DecoratorSet decorators);
94 #endif
95
96 #ifdef COMPILER2
97 // Barriers hotpatching
98 static address parse_stub_address(address pc);
99 static void patch_branch_to_nop(address pc);
100 static void patch_nop_to_branch(address pc, address stub_addr);
101
102 // Entry points from Matcher
103 void load_c2(const MachNode* node, MacroAssembler* masm, Register dst, Address addr);
104 void store_c2(const MachNode* node, MacroAssembler* masm, Address dst, bool dst_narrow, Register src,
105 bool src_narrow, Register tmp);
106 void compare_and_set_c2(const MachNode* node, MacroAssembler* masm, Register res, Register addr, Register oldval,
107 Register newval, Register tmp, bool exchange, bool maybe_null, bool narrow, bool weak);
108 void get_and_set_c2(const MachNode* node, MacroAssembler* masm, Register preval, Register newval,
109 Register addr, Register tmp);
110
111 void card_barrier_c2(const MachNode* node, MacroAssembler* masm, Address addr);
112 virtual void try_resolve_weak_handle_in_c2(MacroAssembler* masm, Register obj, Register tmp, Label& slow_path);
113 #endif
114 };
115
116 #endif // CPU_RISCV_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_RISCV_HPP
|