181 }
182 #ifndef PRODUCT
183 virtual const char* name() const {
184 return "shenandoah_cas_obj";
185 }
186 #endif // PRODUCT
187 };
188
189 class ShenandoahBarrierSetC1 : public BarrierSetC1 {
190 private:
191 CodeBlob* _pre_barrier_c1_runtime_code_blob;
192 CodeBlob* _load_reference_barrier_rt_code_blob;
193
194 void pre_barrier(LIRGenerator* gen, CodeEmitInfo* info, DecoratorSet decorators, LIR_Opr addr_opr, LIR_Opr pre_val);
195
196 LIR_Opr load_reference_barrier(LIRGenerator* gen, LIR_Opr obj, LIR_Opr addr);
197 LIR_Opr storeval_barrier(LIRGenerator* gen, LIR_Opr obj, CodeEmitInfo* info, DecoratorSet decorators);
198
199 LIR_Opr load_reference_barrier_impl(LIRGenerator* gen, LIR_Opr obj, LIR_Opr addr);
200
201 LIR_Opr ensure_in_register(LIRGenerator* gen, LIR_Opr obj);
202
203 public:
204 ShenandoahBarrierSetC1();
205
206 CodeBlob* pre_barrier_c1_runtime_code_blob() {
207 assert(_pre_barrier_c1_runtime_code_blob != NULL, "");
208 return _pre_barrier_c1_runtime_code_blob;
209 }
210
211 CodeBlob* load_reference_barrier_rt_code_blob() {
212 assert(_load_reference_barrier_rt_code_blob != NULL, "");
213 return _load_reference_barrier_rt_code_blob;
214 }
215
216 protected:
217
218 virtual void store_at_resolved(LIRAccess& access, LIR_Opr value);
219 virtual LIR_Opr resolve_address(LIRAccess& access, bool resolve_in_register);
220 virtual void load_at_resolved(LIRAccess& access, LIR_Opr result);
221
|
181 }
182 #ifndef PRODUCT
183 virtual const char* name() const {
184 return "shenandoah_cas_obj";
185 }
186 #endif // PRODUCT
187 };
188
189 class ShenandoahBarrierSetC1 : public BarrierSetC1 {
190 private:
191 CodeBlob* _pre_barrier_c1_runtime_code_blob;
192 CodeBlob* _load_reference_barrier_rt_code_blob;
193
194 void pre_barrier(LIRGenerator* gen, CodeEmitInfo* info, DecoratorSet decorators, LIR_Opr addr_opr, LIR_Opr pre_val);
195
196 LIR_Opr load_reference_barrier(LIRGenerator* gen, LIR_Opr obj, LIR_Opr addr);
197 LIR_Opr storeval_barrier(LIRGenerator* gen, LIR_Opr obj, CodeEmitInfo* info, DecoratorSet decorators);
198
199 LIR_Opr load_reference_barrier_impl(LIRGenerator* gen, LIR_Opr obj, LIR_Opr addr);
200
201 LIR_Opr ensure_in_register(LIRGenerator* gen, LIR_Opr obj, BasicType type);
202
203 public:
204 ShenandoahBarrierSetC1();
205
206 CodeBlob* pre_barrier_c1_runtime_code_blob() {
207 assert(_pre_barrier_c1_runtime_code_blob != NULL, "");
208 return _pre_barrier_c1_runtime_code_blob;
209 }
210
211 CodeBlob* load_reference_barrier_rt_code_blob() {
212 assert(_load_reference_barrier_rt_code_blob != NULL, "");
213 return _load_reference_barrier_rt_code_blob;
214 }
215
216 protected:
217
218 virtual void store_at_resolved(LIRAccess& access, LIR_Opr value);
219 virtual LIR_Opr resolve_address(LIRAccess& access, bool resolve_in_register);
220 virtual void load_at_resolved(LIRAccess& access, LIR_Opr result);
221
|