< prev index next >

src/hotspot/share/gc/shared/c1/barrierSetC1.hpp

Print this page

        

@@ -94,17 +94,19 @@
 
   LIRGenerator* gen() const            { return _gen; }
   CodeEmitInfo*& patch_emit_info()     { return _patch_emit_info; }
   CodeEmitInfo*& access_emit_info()    { return _access_emit_info; }
   LIRAddressOpr& base()                { return _base; }
+  void set_base(LIRAddressOpr base)    { _base = base; }
   LIRAddressOpr& offset()              { return _offset; }
   BasicType type() const               { return _type; }
   LIR_Opr resolved_addr() const        { return _resolved_addr; }
   void set_resolved_addr(LIR_Opr addr) { _resolved_addr = addr; }
   bool is_oop() const                  { return _type == T_ARRAY || _type == T_OBJECT; }
   DecoratorSet decorators() const      { return _decorators; }
   bool is_raw() const                  { return (_decorators & AS_RAW) != 0; }
+  bool needs_null_check() const        { return (_decorators & IS_NOT_NULL) == 0; }
 };
 
 // The BarrierSetC1 class is the main entry point for the GC backend of the Access API in C1.
 // It is called by the LIRGenerator::access_* functions, which is the main entry poing for
 // access calls in C1.

@@ -131,9 +133,12 @@
   virtual LIR_Opr atomic_cmpxchg_at(LIRAccess& access, LIRItem& cmp_value, LIRItem& new_value);
 
   virtual LIR_Opr atomic_xchg_at(LIRAccess& access, LIRItem& value);
   virtual LIR_Opr atomic_add_at(LIRAccess& access, LIRItem& value);
 
+  virtual LIR_Opr resolve_for_read(LIRAccess& access);
+  virtual LIR_Opr resolve_for_write(LIRAccess& access);
+
   virtual void generate_c1_runtime_stubs(BufferBlob* buffer_blob) {}
 };
 
 #endif // SHARE_GC_SHARED_C1_BARRIERSETC1_HPP
< prev index next >