src/share/vm/opto/node.hpp

Print this page




 800 
 801   // Return an existing node which computes the same function as this node.
 802   // The optimistic combined algorithm requires this to return a Node which
 803   // is a small number of steps away (e.g., one of my inputs).
 804   virtual Node *Identity( PhaseTransform *phase );
 805 
 806   // Return the set of values this Node can take on at runtime.
 807   virtual const Type *Value( PhaseTransform *phase ) const;
 808 
 809   // Return a node which is more "ideal" than the current node.
 810   // The invariants on this call are subtle.  If in doubt, read the
 811   // treatise in node.cpp above the default implemention AND TEST WITH
 812   // +VerifyIterativeGVN!
 813   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 814 
 815   // Some nodes have specific Ideal subgraph transformations only if they are
 816   // unique users of specific nodes. Such nodes should be put on IGVN worklist
 817   // for the transformations to happen.
 818   bool has_special_unique_user() const;
 819 






 820 protected:
 821   bool remove_dead_region(PhaseGVN *phase, bool can_reshape);
 822 public:
 823 
 824   // Idealize graph, using DU info.  Done after constant propagation
 825   virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp );
 826 
 827   // See if there is valid pipeline info
 828   static  const Pipeline *pipeline_class();
 829   virtual const Pipeline *pipeline() const;
 830 
 831   // Compute the latency from the def to this instruction of the ith input node
 832   uint latency(uint i);
 833 
 834   // Hash & compare functions, for pessimistic value numbering
 835 
 836   // If the hash function returns the special sentinel value NO_HASH,
 837   // the node is guaranteed never to compare equal to any other node.
 838   // If we accidently generate a hash with value NO_HASH the node
 839   // won't go into the table and we'll lose a little optimization.




 800 
 801   // Return an existing node which computes the same function as this node.
 802   // The optimistic combined algorithm requires this to return a Node which
 803   // is a small number of steps away (e.g., one of my inputs).
 804   virtual Node *Identity( PhaseTransform *phase );
 805 
 806   // Return the set of values this Node can take on at runtime.
 807   virtual const Type *Value( PhaseTransform *phase ) const;
 808 
 809   // Return a node which is more "ideal" than the current node.
 810   // The invariants on this call are subtle.  If in doubt, read the
 811   // treatise in node.cpp above the default implemention AND TEST WITH
 812   // +VerifyIterativeGVN!
 813   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 814 
 815   // Some nodes have specific Ideal subgraph transformations only if they are
 816   // unique users of specific nodes. Such nodes should be put on IGVN worklist
 817   // for the transformations to happen.
 818   bool has_special_unique_user() const;
 819 
 820   // Skip Proj and CatchProj nodes chains. Check for Null and Top.
 821   Node* find_exact_control(Node* ctrl);
 822 
 823   // Check if 'this' node dominates or equal to 'sub'.
 824   bool dominates(Node* sub, Node_List &nlist);
 825 
 826 protected:
 827   bool remove_dead_region(PhaseGVN *phase, bool can_reshape);
 828 public:
 829 
 830   // Idealize graph, using DU info.  Done after constant propagation
 831   virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp );
 832 
 833   // See if there is valid pipeline info
 834   static  const Pipeline *pipeline_class();
 835   virtual const Pipeline *pipeline() const;
 836 
 837   // Compute the latency from the def to this instruction of the ith input node
 838   uint latency(uint i);
 839 
 840   // Hash & compare functions, for pessimistic value numbering
 841 
 842   // If the hash function returns the special sentinel value NO_HASH,
 843   // the node is guaranteed never to compare equal to any other node.
 844   // If we accidently generate a hash with value NO_HASH the node
 845   // won't go into the table and we'll lose a little optimization.