src/hotspot/share/opto/memnode.hpp
changeset 57804 9b7b9f16dfd9
parent 57582 a79a819a8218
child 58372 43c4fb8ba96b
equal deleted inserted replaced
57803:23e3ab980622 57804:9b7b9f16dfd9
  1640     }
  1640     }
  1641     return false;
  1641     return false;
  1642   }
  1642   }
  1643 };
  1643 };
  1644 
  1644 
       
  1645 // cachewb node for guaranteeing writeback of the cache line at a
       
  1646 // given address to (non-volatile) RAM
       
  1647 class CacheWBNode : public Node {
       
  1648 public:
       
  1649   CacheWBNode(Node *ctrl, Node *mem, Node *addr) : Node(ctrl, mem, addr) {}
       
  1650   virtual int Opcode() const;
       
  1651   virtual uint ideal_reg() const { return NotAMachineReg; }
       
  1652   virtual uint match_edge(uint idx) const { return (idx == 2); }
       
  1653   virtual const TypePtr *adr_type() const { return TypePtr::BOTTOM; }
       
  1654   virtual const Type *bottom_type() const { return Type::MEMORY; }
       
  1655 };
       
  1656 
       
  1657 // cachewb pre sync node for ensuring that writebacks are serialised
       
  1658 // relative to preceding or following stores
       
  1659 class CacheWBPreSyncNode : public Node {
       
  1660 public:
       
  1661   CacheWBPreSyncNode(Node *ctrl, Node *mem) : Node(ctrl, mem) {}
       
  1662   virtual int Opcode() const;
       
  1663   virtual uint ideal_reg() const { return NotAMachineReg; }
       
  1664   virtual uint match_edge(uint idx) const { return false; }
       
  1665   virtual const TypePtr *adr_type() const { return TypePtr::BOTTOM; }
       
  1666   virtual const Type *bottom_type() const { return Type::MEMORY; }
       
  1667 };
       
  1668 
       
  1669 // cachewb pre sync node for ensuring that writebacks are serialised
       
  1670 // relative to preceding or following stores
       
  1671 class CacheWBPostSyncNode : public Node {
       
  1672 public:
       
  1673   CacheWBPostSyncNode(Node *ctrl, Node *mem) : Node(ctrl, mem) {}
       
  1674   virtual int Opcode() const;
       
  1675   virtual uint ideal_reg() const { return NotAMachineReg; }
       
  1676   virtual uint match_edge(uint idx) const { return false; }
       
  1677   virtual const TypePtr *adr_type() const { return TypePtr::BOTTOM; }
       
  1678   virtual const Type *bottom_type() const { return Type::MEMORY; }
       
  1679 };
       
  1680 
  1645 //------------------------------Prefetch---------------------------------------
  1681 //------------------------------Prefetch---------------------------------------
  1646 
  1682 
  1647 // Allocation prefetch which may fault, TLAB size have to be adjusted.
  1683 // Allocation prefetch which may fault, TLAB size have to be adjusted.
  1648 class PrefetchAllocationNode : public Node {
  1684 class PrefetchAllocationNode : public Node {
  1649 public:
  1685 public: