src/hotspot/share/opto/loopnode.hpp
changeset 54699 1a5305f51bfd
parent 54698 3ebf58dbf5d8
child 54700 d6f55ea4e325
equal deleted inserted replaced
54698:3ebf58dbf5d8 54699:1a5305f51bfd
   613   bool is_invariant(Node* n) const;
   613   bool is_invariant(Node* n) const;
   614 
   614 
   615   // Put loop body on igvn work list
   615   // Put loop body on igvn work list
   616   void record_for_igvn();
   616   void record_for_igvn();
   617 
   617 
   618   bool is_loop()    { return !_irreducible && _tail && !_tail->is_top(); }
   618   bool is_root() { return _parent == NULL; }
   619   bool is_inner()   { return is_loop() && _child == NULL; }
   619   // A proper/reducible loop w/o any (occasional) dead back-edge.
   620   bool is_counted() { return is_loop() && _head != NULL && _head->is_CountedLoop(); }
   620   bool is_loop() { return !_irreducible && !tail()->is_top(); }
       
   621   bool is_counted()   { return is_loop() && _head->is_CountedLoop(); }
       
   622   bool is_innermost() { return is_loop() && _child == NULL; }
   621 
   623 
   622   void remove_main_post_loops(CountedLoopNode *cl, PhaseIdealLoop *phase);
   624   void remove_main_post_loops(CountedLoopNode *cl, PhaseIdealLoop *phase);
   623 
   625 
   624 #ifndef PRODUCT
   626 #ifndef PRODUCT
   625   void dump_head( ) const;      // Dump loop head only
   627   void dump_head( ) const;      // Dump loop head only
  1408   private:
  1410   private:
  1409     bool create_reserve();
  1411     bool create_reserve();
  1410 };// class CountedLoopReserveKit
  1412 };// class CountedLoopReserveKit
  1411 
  1413 
  1412 inline Node* IdealLoopTree::tail() {
  1414 inline Node* IdealLoopTree::tail() {
  1413 // Handle lazy update of _tail field
  1415   // Handle lazy update of _tail field.
  1414   Node *n = _tail;
  1416   if (_tail->in(0) == NULL) {
  1415   //while( !n->in(0) )  // Skip dead CFG nodes
  1417     _tail = _phase->get_ctrl(_tail);
  1416     //n = n->in(1);
  1418   }
  1417   if (n->in(0) == NULL)
  1419   return _tail;
  1418     n = _phase->get_ctrl(n);
       
  1419   _tail = n;
       
  1420   return n;
       
  1421 }
  1420 }
  1422 
  1421 
  1423 
  1422 
  1424 // Iterate over the loop tree using a preorder, left-to-right traversal.
  1423 // Iterate over the loop tree using a preorder, left-to-right traversal.
  1425 //
  1424 //