< prev index next >

src/share/vm/opto/node.hpp

Print this page
rev 10656 : [backport] Purge some G1-related cruft in C2
rev 10732 : [backport] Need to step over GC barriers in Node::eqv_uncast()
rev 10742 : [backport] Cherry-pick JDK-8212673, fix for Node::eqv_uncast


 882   // Return the set of values this Node can take on at runtime.
 883   virtual const Type *Value( PhaseTransform *phase ) const;
 884 
 885   // Return a node which is more "ideal" than the current node.
 886   // The invariants on this call are subtle.  If in doubt, read the
 887   // treatise in node.cpp above the default implemention AND TEST WITH
 888   // +VerifyIterativeGVN!
 889   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 890 
 891   // Some nodes have specific Ideal subgraph transformations only if they are
 892   // unique users of specific nodes. Such nodes should be put on IGVN worklist
 893   // for the transformations to happen.
 894   bool has_special_unique_user() const;
 895 
 896   // Skip Proj and CatchProj nodes chains. Check for Null and Top.
 897   Node* find_exact_control(Node* ctrl);
 898 
 899   // Check if 'this' node dominates or equal to 'sub'.
 900   bool dominates(Node* sub, Node_List &nlist);
 901 
 902   virtual bool is_g1_marking_load() const { return false; }
 903   virtual bool is_g1_marking_if(PhaseTransform *phase) const { return false; }
 904   virtual bool is_g1_wb_pre_call() const { return false; }
 905   virtual bool is_shenandoah_state_load() const { return false; }
 906   virtual bool is_shenandoah_marking_if(PhaseTransform *phase) const { return false; }
 907 
 908 protected:
 909   bool remove_dead_region(PhaseGVN *phase, bool can_reshape);
 910 public:
 911 
 912   // See if there is valid pipeline info
 913   static  const Pipeline *pipeline_class();
 914   virtual const Pipeline *pipeline() const;
 915 
 916   // Compute the latency from the def to this instruction of the ith input node
 917   uint latency(uint i);
 918 
 919   // Hash & compare functions, for pessimistic value numbering
 920 
 921   // If the hash function returns the special sentinel value NO_HASH,
 922   // the node is guaranteed never to compare equal to any other node.
 923   // If we accidentally generate a hash with value NO_HASH the node




 882   // Return the set of values this Node can take on at runtime.
 883   virtual const Type *Value( PhaseTransform *phase ) const;
 884 
 885   // Return a node which is more "ideal" than the current node.
 886   // The invariants on this call are subtle.  If in doubt, read the
 887   // treatise in node.cpp above the default implemention AND TEST WITH
 888   // +VerifyIterativeGVN!
 889   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 890 
 891   // Some nodes have specific Ideal subgraph transformations only if they are
 892   // unique users of specific nodes. Such nodes should be put on IGVN worklist
 893   // for the transformations to happen.
 894   bool has_special_unique_user() const;
 895 
 896   // Skip Proj and CatchProj nodes chains. Check for Null and Top.
 897   Node* find_exact_control(Node* ctrl);
 898 
 899   // Check if 'this' node dominates or equal to 'sub'.
 900   bool dominates(Node* sub, Node_List &nlist);
 901 


 902   virtual bool is_g1_wb_pre_call() const { return false; }
 903   virtual bool is_shenandoah_state_load() const { return false; }
 904   virtual bool is_shenandoah_marking_if(PhaseTransform *phase) const { return false; }
 905 
 906 protected:
 907   bool remove_dead_region(PhaseGVN *phase, bool can_reshape);
 908 public:
 909 
 910   // See if there is valid pipeline info
 911   static  const Pipeline *pipeline_class();
 912   virtual const Pipeline *pipeline() const;
 913 
 914   // Compute the latency from the def to this instruction of the ith input node
 915   uint latency(uint i);
 916 
 917   // Hash & compare functions, for pessimistic value numbering
 918 
 919   // If the hash function returns the special sentinel value NO_HASH,
 920   // the node is guaranteed never to compare equal to any other node.
 921   // If we accidentally generate a hash with value NO_HASH the node


< prev index next >