< prev index next >

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

BarrierSetC1_v3

BarrierSetC1_v2
 #ifndef SHARE_GC_SHARED_C1_MODREFBARRIERSETC1_HPP
 #define SHARE_GC_SHARED_C1_MODREFBARRIERSETC1_HPP
 
 #include "gc/shared/c1/barrierSetC1.hpp"
 
-class ModRefBarrierSetC1 : public BarrierSetC1 {
-public:
-  virtual void pre_barrier(LIRGenerator* lir_generator, DecoratorSet decorators,
-                           LIR_Opr addr_opr, LIR_Opr pre_val, CodeEmitInfo* info) {}
-  virtual void post_barrier(LIRGenerator* lir_generator, DecoratorSet decorators,
-                            LIR_OprDesc* addr, LIR_OprDesc* new_val) {}
+// The ModRefBarrierSetC1 filters away accesses on BasicTypes other
+// than T_OBJECT/T_ARRAY (oops). The oop accesses call one of the protected
+// accesses, which are overridden in the concrete BarrierSetAssembler.
 
+class ModRefBarrierSetC1 : public BarrierSetC1 {
 protected:
-  virtual void store_at_resolved(LIRGenerator* lir_generator, DecoratorSet decorators, BasicType type,
-                                 LIR_Opr addr, LIRItem& base, LIR_Opr offset, LIR_Opr value,
-                                 CodeEmitInfo* patch_info, CodeEmitInfo* store_emit_info);
-
-  virtual LIR_Opr atomic_cmpxchg_resolved(LIRGenerator* lir_generator, DecoratorSet decorators, BasicType type,
-                                  LIR_Opr addr, LIRItem& base, LIRItem& offset, LIRItem& cmp_value, LIRItem& new_value);
-
-  virtual LIR_Opr atomic_xchg_resolved(LIRGenerator* lir_generator, DecoratorSet decorators, BasicType type,
-                                   LIR_Opr addr, LIRItem& base, LIRItem& offset, LIRItem& value);
-
-public:
-  void store_at(LIRGenerator *lir_generator, DecoratorSet decorators, BasicType type,
-                LIRItem& base, LIR_Opr offset, LIR_Opr value,
-                CodeEmitInfo* patch_info, CodeEmitInfo* store_emit_info);
+  virtual void pre_barrier(LIRAccess& access, LIR_Opr addr_opr,
+                           LIR_Opr pre_val, CodeEmitInfo* info) {}
+  virtual void post_barrier(LIRAccess& access, LIR_OprDesc* addr,
+                            LIR_OprDesc* new_val) {}
+
+  virtual LIR_Opr resolve_address(LIRAccess& access, bool resolve_in_register);
+
+  virtual void store_at_resolved(LIRAccess& access, LIR_Opr value);
+
+  virtual LIR_Opr atomic_cmpxchg_resolved(LIRAccess& access, LIRItem& cmp_value, LIRItem& new_value);
+
+  virtual LIR_Opr atomic_xchg_resolved(LIRAccess& access, LIRItem& value);
 };
 
 #endif // SHARE_GC_SHARED_C1_MODREFBARRIERSETC1_HPP
    
< prev index next >