177 return "shenandoah_cas_obj";
178 }
179 #endif // PRODUCT
180 };
181
182 class ShenandoahBarrierSetC1 : public BarrierSetC1 {
183 private:
184 CodeBlob* _pre_barrier_c1_runtime_code_blob;
185 CodeBlob* _load_reference_barrier_rt_code_blob;
186
187 void pre_barrier(LIRGenerator* gen, CodeEmitInfo* info, DecoratorSet decorators, LIR_Opr addr_opr, LIR_Opr pre_val);
188
189 LIR_Opr load_reference_barrier(LIRGenerator* gen, LIR_Opr obj);
190 LIR_Opr storeval_barrier(LIRGenerator* gen, LIR_Opr obj, CodeEmitInfo* info, DecoratorSet decorators);
191
192 LIR_Opr load_reference_barrier_impl(LIRGenerator* gen, LIR_Opr obj);
193
194 LIR_Opr ensure_in_register(LIRGenerator* gen, LIR_Opr obj);
195
196 public:
197 CodeBlob* pre_barrier_c1_runtime_code_blob() { return _pre_barrier_c1_runtime_code_blob; }
198 CodeBlob* load_reference_barrier_rt_code_blob() { return _load_reference_barrier_rt_code_blob; }
199
200 protected:
201
202 virtual void store_at_resolved(LIRAccess& access, LIR_Opr value);
203 virtual void load_at_resolved(LIRAccess& access, LIR_Opr result);
204
205 virtual LIR_Opr atomic_cmpxchg_at_resolved(LIRAccess& access, LIRItem& cmp_value, LIRItem& new_value);
206
207 virtual LIR_Opr atomic_xchg_at_resolved(LIRAccess& access, LIRItem& value);
208
209 public:
210
211 virtual void generate_c1_runtime_stubs(BufferBlob* buffer_blob);
212 virtual const char* rtcall_name_for_address(address entry);
213 };
214
215 #endif // SHARE_GC_SHENANDOAH_C1_SHENANDOAHBARRIERSETC1_HPP
|
177 return "shenandoah_cas_obj";
178 }
179 #endif // PRODUCT
180 };
181
182 class ShenandoahBarrierSetC1 : public BarrierSetC1 {
183 private:
184 CodeBlob* _pre_barrier_c1_runtime_code_blob;
185 CodeBlob* _load_reference_barrier_rt_code_blob;
186
187 void pre_barrier(LIRGenerator* gen, CodeEmitInfo* info, DecoratorSet decorators, LIR_Opr addr_opr, LIR_Opr pre_val);
188
189 LIR_Opr load_reference_barrier(LIRGenerator* gen, LIR_Opr obj);
190 LIR_Opr storeval_barrier(LIRGenerator* gen, LIR_Opr obj, CodeEmitInfo* info, DecoratorSet decorators);
191
192 LIR_Opr load_reference_barrier_impl(LIRGenerator* gen, LIR_Opr obj);
193
194 LIR_Opr ensure_in_register(LIRGenerator* gen, LIR_Opr obj);
195
196 public:
197 ShenandoahBarrierSetC1();
198
199 CodeBlob* pre_barrier_c1_runtime_code_blob() {
200 assert(_pre_barrier_c1_runtime_code_blob != NULL, "");
201 return _pre_barrier_c1_runtime_code_blob;
202 }
203
204 CodeBlob* load_reference_barrier_rt_code_blob() {
205 assert(_load_reference_barrier_rt_code_blob != NULL, "");
206 return _load_reference_barrier_rt_code_blob;
207 }
208
209 protected:
210
211 virtual void store_at_resolved(LIRAccess& access, LIR_Opr value);
212 virtual void load_at_resolved(LIRAccess& access, LIR_Opr result);
213
214 virtual LIR_Opr atomic_cmpxchg_at_resolved(LIRAccess& access, LIRItem& cmp_value, LIRItem& new_value);
215
216 virtual LIR_Opr atomic_xchg_at_resolved(LIRAccess& access, LIRItem& value);
217
218 public:
219
220 virtual void generate_c1_runtime_stubs(BufferBlob* buffer_blob);
221 virtual const char* rtcall_name_for_address(address entry);
222 };
223
224 #endif // SHARE_GC_SHENANDOAH_C1_SHENANDOAHBARRIERSETC1_HPP
|