< prev index next >

src/hotspot/share/opto/memnode.hpp

Print this page




1588       } else if (have_mm2 && !is_empty2()) {
1589         return true;   // is_empty() == true
1590       }
1591     }
1592     return false;
1593   }
1594 };
1595 
1596 //------------------------------Prefetch---------------------------------------
1597 
1598 // Allocation prefetch which may fault, TLAB size have to be adjusted.
1599 class PrefetchAllocationNode : public Node {
1600 public:
1601   PrefetchAllocationNode(Node *mem, Node *adr) : Node(0,mem,adr) {}
1602   virtual int Opcode() const;
1603   virtual uint ideal_reg() const { return NotAMachineReg; }
1604   virtual uint match_edge(uint idx) const { return idx==2; }
1605   virtual const Type *bottom_type() const { return ( AllocatePrefetchStyle == 3 ) ? Type::MEMORY : Type::ABIO; }
1606 };
1607 




































1608 #endif // SHARE_VM_OPTO_MEMNODE_HPP


1588       } else if (have_mm2 && !is_empty2()) {
1589         return true;   // is_empty() == true
1590       }
1591     }
1592     return false;
1593   }
1594 };
1595 
1596 //------------------------------Prefetch---------------------------------------
1597 
1598 // Allocation prefetch which may fault, TLAB size have to be adjusted.
1599 class PrefetchAllocationNode : public Node {
1600 public:
1601   PrefetchAllocationNode(Node *mem, Node *adr) : Node(0,mem,adr) {}
1602   virtual int Opcode() const;
1603   virtual uint ideal_reg() const { return NotAMachineReg; }
1604   virtual uint match_edge(uint idx) const { return idx==2; }
1605   virtual const Type *bottom_type() const { return ( AllocatePrefetchStyle == 3 ) ? Type::MEMORY : Type::ABIO; }
1606 };
1607 
1608 // cachewb node for guaranteeing writeback of the cache line at a
1609 // given address to (persistent) storage
1610 class CacheWBNode : public Node {
1611 public:
1612   CacheWBNode(Node *ctrl, Node *mem, Node *addr) : Node(ctrl, mem, addr) {}
1613   virtual int Opcode() const;
1614   virtual uint ideal_reg() const { return NotAMachineReg; }
1615   virtual uint match_edge(uint idx) const { return (idx == 2); }
1616   virtual const TypePtr *adr_type() const { return TypeRawPtr::BOTTOM; }
1617   virtual const Type *bottom_type() const { return Type::MEMORY; }
1618 };
1619 
1620 // cachewb pre sync node for ensuring that writebacks are serialised
1621 // relative to preceding or following stores
1622 class CacheWBPreSyncNode : public Node {
1623 public:
1624   CacheWBPreSyncNode(Node *ctrl, Node *mem) : Node(ctrl, mem) {}
1625   virtual int Opcode() const;
1626   virtual uint ideal_reg() const { return NotAMachineReg; }
1627   virtual uint match_edge(uint idx) const { return false; }
1628   virtual const TypePtr *adr_type() const { return TypeRawPtr::BOTTOM; }
1629   virtual const Type *bottom_type() const { return Type::MEMORY; }
1630 };
1631 
1632 // cachewb pre sync node for ensuring that writebacks are serialised
1633 // relative to preceding or following stores
1634 class CacheWBPostSyncNode : public Node {
1635 public:
1636   CacheWBPostSyncNode(Node *ctrl, Node *mem) : Node(ctrl, mem) {}
1637   virtual int Opcode() const;
1638   virtual uint ideal_reg() const { return NotAMachineReg; }
1639   virtual uint match_edge(uint idx) const { return false; }
1640   virtual const TypePtr *adr_type() const { return TypeRawPtr::BOTTOM; }
1641   virtual const Type *bottom_type() const { return Type::MEMORY; }
1642 };
1643 
1644 #endif // SHARE_VM_OPTO_MEMNODE_HPP
< prev index next >