858 void collect_loop_core_nodes(PhaseIdealLoop* phase, Unique_Node_List& wq) const;
859
860 bool empty_loop_with_data_nodes(PhaseIdealLoop* phase) const;
861
862 void enqueue_data_nodes(PhaseIdealLoop* phase, Unique_Node_List& empty_loop_nodes, Unique_Node_List& wq) const;
863
864 bool process_safepoint(PhaseIdealLoop* phase, Unique_Node_List& empty_loop_nodes, Unique_Node_List& wq,
865 Node* sfpt) const;
866
867 bool empty_loop_candidate(PhaseIdealLoop* phase) const;
868
869 bool empty_loop_with_extra_nodes_candidate(PhaseIdealLoop* phase) const;
870 };
871
872 // -----------------------------PhaseIdealLoop---------------------------------
873 // Computes the mapping from Nodes to IdealLoopTrees. Organizes IdealLoopTrees
874 // into a loop tree. Drives the loop-based transformations on the ideal graph.
875 class PhaseIdealLoop : public PhaseTransform {
876 friend class IdealLoopTree;
877 friend class SuperWord;
878 friend class ShenandoahBarrierC2Support;
879 friend class AutoNodeBudget;
880
881 Arena _arena; // For data whose lifetime is a single pass of loop optimizations
882
883 // Map loop membership for CFG nodes, and ctrl for non-CFG nodes.
884 //
885 // Exception: dead CFG nodes may instead have a ctrl/idom forwarding
886 // installed. See: forward_ctrl
887 Node_List _loop_or_ctrl;
888
889 // Pre-computed def-use info
890 PhaseIterGVN &_igvn;
891
892 // Head of loop tree
893 IdealLoopTree* _ltree_root;
894
895 // Array of pre-order numbers, plus post-visited bit.
896 // ZERO for not pre-visited. EVEN for pre-visited but not post-visited.
897 // ODD for post-visited. Other bits are the pre-order number.
898 uint *_preorders;
|
858 void collect_loop_core_nodes(PhaseIdealLoop* phase, Unique_Node_List& wq) const;
859
860 bool empty_loop_with_data_nodes(PhaseIdealLoop* phase) const;
861
862 void enqueue_data_nodes(PhaseIdealLoop* phase, Unique_Node_List& empty_loop_nodes, Unique_Node_List& wq) const;
863
864 bool process_safepoint(PhaseIdealLoop* phase, Unique_Node_List& empty_loop_nodes, Unique_Node_List& wq,
865 Node* sfpt) const;
866
867 bool empty_loop_candidate(PhaseIdealLoop* phase) const;
868
869 bool empty_loop_with_extra_nodes_candidate(PhaseIdealLoop* phase) const;
870 };
871
872 // -----------------------------PhaseIdealLoop---------------------------------
873 // Computes the mapping from Nodes to IdealLoopTrees. Organizes IdealLoopTrees
874 // into a loop tree. Drives the loop-based transformations on the ideal graph.
875 class PhaseIdealLoop : public PhaseTransform {
876 friend class IdealLoopTree;
877 friend class SuperWord;
878 friend class AutoNodeBudget;
879
880 Arena _arena; // For data whose lifetime is a single pass of loop optimizations
881
882 // Map loop membership for CFG nodes, and ctrl for non-CFG nodes.
883 //
884 // Exception: dead CFG nodes may instead have a ctrl/idom forwarding
885 // installed. See: forward_ctrl
886 Node_List _loop_or_ctrl;
887
888 // Pre-computed def-use info
889 PhaseIterGVN &_igvn;
890
891 // Head of loop tree
892 IdealLoopTree* _ltree_root;
893
894 // Array of pre-order numbers, plus post-visited bit.
895 // ZERO for not pre-visited. EVEN for pre-visited but not post-visited.
896 // ODD for post-visited. Other bits are the pre-order number.
897 uint *_preorders;
|