< prev index next >

src/hotspot/share/opto/memnode.hpp

Print this page
@@ -130,10 +130,12 @@
    }
  
    // Return the barrier data of n, if available, or 0 otherwise.
    static uint8_t barrier_data(const Node* n);
  
+   static MemOrd memory_order(const Node* n);
+ 
    // Map a load or store opcode to its corresponding store opcode.
    // (Return -1 if unknown.)
    virtual int store_Opcode() const { return -1; }
  
    // What is the type of the value in memory?  (T_VOID mean "unspecified".)

@@ -271,10 +273,13 @@
    }
    inline bool is_unsigned() const {
      int lop = Opcode();
      return (lop == Op_LoadUB) || (lop == Op_LoadUS);
    }
+   inline MemOrd memory_order() const {
+     return _mo;
+   }
  
    // Polymorphic factory method:
    static Node* make(PhaseGVN& gvn, Node* c, Node* mem, Node* adr,
                      const TypePtr* at, const Type* rt, BasicType bt,
                      MemOrd mo, ControlDependency control_dependency = DependsOnlyOnTest,

@@ -642,11 +647,13 @@
    inline bool is_unordered() const { return !is_release(); }
    inline bool is_release() const {
      assert((_mo == unordered || _mo == release), "unexpected");
      return _mo == release;
    }
- 
+   inline MemOrd memory_order() const {
+     return _mo;
+   }
    // Conservatively release stores of object references in order to
    // ensure visibility of object initialization.
    static inline MemOrd release_if_reference(const BasicType t) {
  #ifdef AARCH64
      // AArch64 doesn't need a release store here because object

@@ -698,10 +705,17 @@
    bool  has_reinterpret_variant(const Type* vt);
    Node* convert_to_reinterpret_store(PhaseGVN& gvn, Node* val, const Type* vt);
  
    MemBarNode* trailing_membar() const;
  
+ #ifndef PRODUCT
+   virtual void dump_spec(outputStream *st) const {
+     MemNode::dump_spec(st);
+     if (is_release())  st->print("is_release");
+   }
+ #endif
+ 
  private:
    virtual bool depends_only_on_test_impl() const { return false; }
  };
  
  //------------------------------StoreBNode-------------------------------------
< prev index next >