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
|