115 virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
116 Register dst, Register count,
117 Register preserve);
118
119 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
120 Register base, RegisterOrConstant ind_or_offs, Register val,
121 Register tmp1, Register tmp2, Register tmp3,
122 MacroAssembler::PreservationLevel preservation_level);
123
124 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
125 Register base, RegisterOrConstant ind_or_offs, Register dst,
126 Register tmp1, Register tmp2,
127 MacroAssembler::PreservationLevel preservation_level, Label* L_handle_null = nullptr);
128
129 virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register dst, Register jni_env,
130 Register obj, Register tmp, Label& slowpath);
131
132 virtual void try_resolve_weak_handle(MacroAssembler* masm, Register obj, Register tmp, Label& slow_path);
133
134 #ifdef COMPILER2
135 // Entry points from Matcher
136 void load_c2(const MachNode* node, MacroAssembler* masm,
137 Register dst, Address addr);
138
139 void store_c2(const MachNode* node, MacroAssembler* masm,
140 Address dst, bool dst_narrow, Register src, bool src_narrow);
141
142 void compare_and_set_c2(const MachNode* node, MacroAssembler* masm,
143 Register res, Register addr, Register oldval,
144 Register newval, bool exchange, bool narrow, bool weak);
145
146 void get_and_set_c2(const MachNode* node, MacroAssembler* masm,
147 Register preval, Register newval, Register addr);
148
149 void card_barrier_c2(const MachNode* node, MacroAssembler* masm,
150 Address addr);
151 #endif // COMPILER2
152 };
153
154 #endif // CPU_PPC_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_PPC_HPP
|
115 virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
116 Register dst, Register count,
117 Register preserve);
118
119 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
120 Register base, RegisterOrConstant ind_or_offs, Register val,
121 Register tmp1, Register tmp2, Register tmp3,
122 MacroAssembler::PreservationLevel preservation_level);
123
124 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
125 Register base, RegisterOrConstant ind_or_offs, Register dst,
126 Register tmp1, Register tmp2,
127 MacroAssembler::PreservationLevel preservation_level, Label* L_handle_null = nullptr);
128
129 virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register dst, Register jni_env,
130 Register obj, Register tmp, Label& slowpath);
131
132 virtual void try_resolve_weak_handle(MacroAssembler* masm, Register obj, Register tmp, Label& slow_path);
133
134 #ifdef COMPILER2
135 // Barriers hotpatching
136 static address parse_stub_address(address pc);
137 static void patch_branch_to_nop(address pc);
138 static void patch_nop_to_branch(address pc, address stub_addr);
139
140 // Entry points from Matcher
141 void load_c2(const MachNode* node, MacroAssembler* masm,
142 Register dst, Address addr);
143
144 void store_c2(const MachNode* node, MacroAssembler* masm,
145 Address dst, bool dst_narrow, Register src, bool src_narrow);
146
147 void compare_and_set_c2(const MachNode* node, MacroAssembler* masm,
148 Register res, Register addr, Register oldval,
149 Register newval, bool exchange, bool narrow, bool weak);
150
151 void get_and_set_c2(const MachNode* node, MacroAssembler* masm,
152 Register preval, Register newval, Register addr);
153
154 void card_barrier_c2(const MachNode* node, MacroAssembler* masm,
155 Address addr);
156 #endif // COMPILER2
157 };
158
159 #endif // CPU_PPC_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_PPC_HPP
|