src/share/vm/opto/loopnode.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7017240 Sdiff src/share/vm/opto

src/share/vm/opto/loopnode.hpp

Print this page




 683     _idom[didx] = n;            // Lazily remove dead CFG nodes from table.
 684     return n;
 685   }
 686   uint dom_depth(Node* d) const {
 687     assert(d->_idx < _idom_size, "");
 688     return _dom_depth[d->_idx];
 689   }
 690   void set_idom(Node* d, Node* n, uint dom_depth);
 691   // Locally compute IDOM using dom_lca call
 692   Node *compute_idom( Node *region ) const;
 693   // Recompute dom_depth
 694   void recompute_dom_depth();
 695 
 696   // Is safept not required by an outer loop?
 697   bool is_deleteable_safept(Node* sfpt);
 698 
 699   // Perform verification that the graph is valid.
 700   PhaseIdealLoop( PhaseIterGVN &igvn) :
 701     PhaseTransform(Ideal_Loop),
 702     _igvn(igvn),
 703     _dom_lca_tags(C->comp_arena()),
 704     _verify_me(NULL),
 705     _verify_only(true) {
 706     build_and_optimize(false, false);
 707   }
 708 
 709   // build the loop tree and perform any requested optimizations
 710   void build_and_optimize(bool do_split_if, bool do_loop_pred);
 711 
 712 public:
 713   // Dominators for the sea of nodes
 714   void Dominators();
 715   Node *dom_lca( Node *n1, Node *n2 ) const {
 716     return find_non_split_ctrl(dom_lca_internal(n1, n2));
 717   }
 718   Node *dom_lca_internal( Node *n1, Node *n2 ) const;
 719 
 720   // Compute the Ideal Node to Loop mapping
 721   PhaseIdealLoop( PhaseIterGVN &igvn, bool do_split_ifs, bool do_loop_pred) :
 722     PhaseTransform(Ideal_Loop),
 723     _igvn(igvn),
 724     _dom_lca_tags(C->comp_arena()),
 725     _verify_me(NULL),
 726     _verify_only(false) {
 727     build_and_optimize(do_split_ifs, do_loop_pred);
 728   }
 729 
 730   // Verify that verify_me made the same decisions as a fresh run.
 731   PhaseIdealLoop( PhaseIterGVN &igvn, const PhaseIdealLoop *verify_me) :
 732     PhaseTransform(Ideal_Loop),
 733     _igvn(igvn),
 734     _dom_lca_tags(C->comp_arena()),
 735     _verify_me(verify_me),
 736     _verify_only(false) {
 737     build_and_optimize(false, false);
 738   }
 739 
 740   // Build and verify the loop tree without modifying the graph.  This
 741   // is useful to verify that all inputs properly dominate their uses.
 742   static void verify(PhaseIterGVN& igvn) {
 743 #ifdef ASSERT
 744     PhaseIdealLoop v(igvn);
 745 #endif
 746   }
 747 
 748   // True if the method has at least 1 irreducible loop
 749   bool _has_irreducible_loops;
 750 
 751   // Per-Node transform
 752   virtual Node *transform( Node *a_node ) { return 0; }
 753 
 754   Node *is_counted_loop( Node *x, IdealLoopTree *loop );




 683     _idom[didx] = n;            // Lazily remove dead CFG nodes from table.
 684     return n;
 685   }
 686   uint dom_depth(Node* d) const {
 687     assert(d->_idx < _idom_size, "");
 688     return _dom_depth[d->_idx];
 689   }
 690   void set_idom(Node* d, Node* n, uint dom_depth);
 691   // Locally compute IDOM using dom_lca call
 692   Node *compute_idom( Node *region ) const;
 693   // Recompute dom_depth
 694   void recompute_dom_depth();
 695 
 696   // Is safept not required by an outer loop?
 697   bool is_deleteable_safept(Node* sfpt);
 698 
 699   // Perform verification that the graph is valid.
 700   PhaseIdealLoop( PhaseIterGVN &igvn) :
 701     PhaseTransform(Ideal_Loop),
 702     _igvn(igvn),
 703     _dom_lca_tags(arena()), // Thread::resource_area
 704     _verify_me(NULL),
 705     _verify_only(true) {
 706     build_and_optimize(false, false);
 707   }
 708 
 709   // build the loop tree and perform any requested optimizations
 710   void build_and_optimize(bool do_split_if, bool do_loop_pred);
 711 
 712 public:
 713   // Dominators for the sea of nodes
 714   void Dominators();
 715   Node *dom_lca( Node *n1, Node *n2 ) const {
 716     return find_non_split_ctrl(dom_lca_internal(n1, n2));
 717   }
 718   Node *dom_lca_internal( Node *n1, Node *n2 ) const;
 719 
 720   // Compute the Ideal Node to Loop mapping
 721   PhaseIdealLoop( PhaseIterGVN &igvn, bool do_split_ifs, bool do_loop_pred) :
 722     PhaseTransform(Ideal_Loop),
 723     _igvn(igvn),
 724     _dom_lca_tags(arena()), // Thread::resource_area
 725     _verify_me(NULL),
 726     _verify_only(false) {
 727     build_and_optimize(do_split_ifs, do_loop_pred);
 728   }
 729 
 730   // Verify that verify_me made the same decisions as a fresh run.
 731   PhaseIdealLoop( PhaseIterGVN &igvn, const PhaseIdealLoop *verify_me) :
 732     PhaseTransform(Ideal_Loop),
 733     _igvn(igvn),
 734     _dom_lca_tags(arena()), // Thread::resource_area
 735     _verify_me(verify_me),
 736     _verify_only(false) {
 737     build_and_optimize(false, false);
 738   }
 739 
 740   // Build and verify the loop tree without modifying the graph.  This
 741   // is useful to verify that all inputs properly dominate their uses.
 742   static void verify(PhaseIterGVN& igvn) {
 743 #ifdef ASSERT
 744     PhaseIdealLoop v(igvn);
 745 #endif
 746   }
 747 
 748   // True if the method has at least 1 irreducible loop
 749   bool _has_irreducible_loops;
 750 
 751   // Per-Node transform
 752   virtual Node *transform( Node *a_node ) { return 0; }
 753 
 754   Node *is_counted_loop( Node *x, IdealLoopTree *loop );


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