< prev index next >

src/hotspot/share/opto/memnode.cpp

Print this page
*** 765,14 ***
--- 765,25 ---
  uint8_t MemNode::barrier_data(const Node* n) {
    if (n->is_LoadStore()) {
      return n->as_LoadStore()->barrier_data();
    } else if (n->is_Mem()) {
      return n->as_Mem()->barrier_data();
+   } else if (n->is_DecodeN() && n->in(1)->is_Load()) {
+     return n->in(1)->as_Load()->barrier_data();
    }
    return 0;
  }
  
+ MemNode::MemOrd MemNode::memory_order(const Node* n) {
+   if (n->is_Load()) {
+     return n->as_Load()->memory_order();
+   } else if (n->is_Store()) {
+     return n->as_Store()->memory_order();;
+   }
+   return MemNode::MemOrd::seqcst;
+ }
+ 
  AccessAnalyzer::AccessAnalyzer(PhaseValues* phase, MemNode* n)
    : _phase(phase), _n(n), _memory_size(n->memory_size()), _alias_idx(-1) {
    Node* adr  = _n->in(MemNode::Address);
    _offset    = 0;
    _base      = AddPNode::Ideal_base_and_offset(adr, _phase, _offset);
< prev index next >