src/share/vm/opto/node.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/opto

src/share/vm/opto/node.hpp

Print this page
rev 8006 : 8069191: moving predicate out of loops may cause array accesses to bypass null check
Summary: Remove CastPP nodes only during final graph reshape
Reviewed-by:


 880   // The invariants on this call are subtle.  If in doubt, read the
 881   // treatise in node.cpp above the default implemention AND TEST WITH
 882   // +VerifyIterativeGVN!
 883   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 884 
 885   // Some nodes have specific Ideal subgraph transformations only if they are
 886   // unique users of specific nodes. Such nodes should be put on IGVN worklist
 887   // for the transformations to happen.
 888   bool has_special_unique_user() const;
 889 
 890   // Skip Proj and CatchProj nodes chains. Check for Null and Top.
 891   Node* find_exact_control(Node* ctrl);
 892 
 893   // Check if 'this' node dominates or equal to 'sub'.
 894   bool dominates(Node* sub, Node_List &nlist);
 895 
 896 protected:
 897   bool remove_dead_region(PhaseGVN *phase, bool can_reshape);
 898 public:
 899 
 900   // Idealize graph, using DU info.  Done after constant propagation
 901   virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp );
 902 
 903   // See if there is valid pipeline info
 904   static  const Pipeline *pipeline_class();
 905   virtual const Pipeline *pipeline() const;
 906 
 907   // Compute the latency from the def to this instruction of the ith input node
 908   uint latency(uint i);
 909 
 910   // Hash & compare functions, for pessimistic value numbering
 911 
 912   // If the hash function returns the special sentinel value NO_HASH,
 913   // the node is guaranteed never to compare equal to any other node.
 914   // If we accidentally generate a hash with value NO_HASH the node
 915   // won't go into the table and we'll lose a little optimization.
 916   enum { NO_HASH = 0 };
 917   virtual uint hash() const;
 918   virtual uint cmp( const Node &n ) const;
 919 
 920   // Operation appears to be iteratively computed (such as an induction variable)
 921   // It is possible for this operation to return false for a loop-varying
 922   // value, if it appears (by local graph inspection) to be computed by a simple conditional.




 880   // The invariants on this call are subtle.  If in doubt, read the
 881   // treatise in node.cpp above the default implemention AND TEST WITH
 882   // +VerifyIterativeGVN!
 883   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 884 
 885   // Some nodes have specific Ideal subgraph transformations only if they are
 886   // unique users of specific nodes. Such nodes should be put on IGVN worklist
 887   // for the transformations to happen.
 888   bool has_special_unique_user() const;
 889 
 890   // Skip Proj and CatchProj nodes chains. Check for Null and Top.
 891   Node* find_exact_control(Node* ctrl);
 892 
 893   // Check if 'this' node dominates or equal to 'sub'.
 894   bool dominates(Node* sub, Node_List &nlist);
 895 
 896 protected:
 897   bool remove_dead_region(PhaseGVN *phase, bool can_reshape);
 898 public:
 899 



 900   // See if there is valid pipeline info
 901   static  const Pipeline *pipeline_class();
 902   virtual const Pipeline *pipeline() const;
 903 
 904   // Compute the latency from the def to this instruction of the ith input node
 905   uint latency(uint i);
 906 
 907   // Hash & compare functions, for pessimistic value numbering
 908 
 909   // If the hash function returns the special sentinel value NO_HASH,
 910   // the node is guaranteed never to compare equal to any other node.
 911   // If we accidentally generate a hash with value NO_HASH the node
 912   // won't go into the table and we'll lose a little optimization.
 913   enum { NO_HASH = 0 };
 914   virtual uint hash() const;
 915   virtual uint cmp( const Node &n ) const;
 916 
 917   // Operation appears to be iteratively computed (such as an induction variable)
 918   // It is possible for this operation to return false for a loop-varying
 919   // value, if it appears (by local graph inspection) to be computed by a simple conditional.


src/share/vm/opto/node.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File