969 // Return the set of values this Node can take on at runtime.
970 virtual const Type* Value(PhaseGVN* phase) const;
971
972 // Return a node which is more "ideal" than the current node.
973 // The invariants on this call are subtle. If in doubt, read the
974 // treatise in node.cpp above the default implemention AND TEST WITH
975 // +VerifyIterativeGVN!
976 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
977
978 // Some nodes have specific Ideal subgraph transformations only if they are
979 // unique users of specific nodes. Such nodes should be put on IGVN worklist
980 // for the transformations to happen.
981 bool has_special_unique_user() const;
982
983 // Skip Proj and CatchProj nodes chains. Check for Null and Top.
984 Node* find_exact_control(Node* ctrl);
985
986 // Check if 'this' node dominates or equal to 'sub'.
987 bool dominates(Node* sub, Node_List &nlist);
988
989 virtual bool is_g1_marking_load() const { return false; }
990 virtual bool is_g1_marking_if(PhaseTransform *phase) const { return false; }
991 virtual bool is_shenandoah_wb_pre_call() const { return false; }
992 virtual bool is_shenandoah_state_load() const { return false; }
993 virtual bool is_shenandoah_marking_if(PhaseTransform *phase) const { return false; }
994
995 protected:
996 bool remove_dead_region(PhaseGVN *phase, bool can_reshape);
997 public:
998
999 // See if there is valid pipeline info
1000 static const Pipeline *pipeline_class();
1001 virtual const Pipeline *pipeline() const;
1002
1003 // Compute the latency from the def to this instruction of the ith input node
1004 uint latency(uint i);
1005
1006 // Hash & compare functions, for pessimistic value numbering
1007
1008 // If the hash function returns the special sentinel value NO_HASH,
1009 // the node is guaranteed never to compare equal to any other node.
1010 // If we accidentally generate a hash with value NO_HASH the node
|
969 // Return the set of values this Node can take on at runtime.
970 virtual const Type* Value(PhaseGVN* phase) const;
971
972 // Return a node which is more "ideal" than the current node.
973 // The invariants on this call are subtle. If in doubt, read the
974 // treatise in node.cpp above the default implemention AND TEST WITH
975 // +VerifyIterativeGVN!
976 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
977
978 // Some nodes have specific Ideal subgraph transformations only if they are
979 // unique users of specific nodes. Such nodes should be put on IGVN worklist
980 // for the transformations to happen.
981 bool has_special_unique_user() const;
982
983 // Skip Proj and CatchProj nodes chains. Check for Null and Top.
984 Node* find_exact_control(Node* ctrl);
985
986 // Check if 'this' node dominates or equal to 'sub'.
987 bool dominates(Node* sub, Node_List &nlist);
988
989 virtual bool is_shenandoah_wb_pre_call() const { return false; }
990 virtual bool is_shenandoah_state_load() const { return false; }
991 virtual bool is_shenandoah_marking_if(PhaseTransform *phase) const { return false; }
992
993 protected:
994 bool remove_dead_region(PhaseGVN *phase, bool can_reshape);
995 public:
996
997 // See if there is valid pipeline info
998 static const Pipeline *pipeline_class();
999 virtual const Pipeline *pipeline() const;
1000
1001 // Compute the latency from the def to this instruction of the ith input node
1002 uint latency(uint i);
1003
1004 // Hash & compare functions, for pessimistic value numbering
1005
1006 // If the hash function returns the special sentinel value NO_HASH,
1007 // the node is guaranteed never to compare equal to any other node.
1008 // If we accidentally generate a hash with value NO_HASH the node
|