< prev index next >

src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.hpp

Print this page
rev 58025 : Shenandoah: C1: Resolve into registers of correct type


 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 
< prev index next >