< prev index next >

src/hotspot/share/opto/loopnode.cpp

Print this page

4749 // Dump loops by loop tree
4750 void IdealLoopTree::dump() {
4751   dump_head();
4752   if (_child) _child->dump();
4753   if (_next)  _next ->dump();
4754 }
4755 
4756 #endif
4757 
4758 static void log_loop_tree_helper(IdealLoopTree* root, IdealLoopTree* loop, CompileLog* log) {
4759   if (loop == root) {
4760     if (loop->_child != nullptr) {
4761       log->begin_head("loop_tree");
4762       log->end_head();
4763       log_loop_tree_helper(root, loop->_child, log);
4764       log->tail("loop_tree");
4765       assert(loop->_next == nullptr, "what?");
4766     }
4767   } else if (loop != nullptr) {
4768     Node* head = loop->_head;
4769     log->begin_head("loop");
4770     log->print(" idx='%d' ", head->_idx);
4771     if (loop->_irreducible) log->print("irreducible='1' ");
4772     if (head->is_Loop()) {
4773       if (head->as_Loop()->is_inner_loop())        log->print("inner_loop='1' ");
4774       if (head->as_Loop()->is_partial_peel_loop()) log->print("partial_peel_loop='1' ");
4775     } else if (head->is_CountedLoop()) {
4776       CountedLoopNode* cl = head->as_CountedLoop();
4777       if (cl->is_pre_loop())  log->print("pre_loop='%d' ",  cl->main_idx());
4778       if (cl->is_main_loop()) log->print("main_loop='%d' ", cl->_idx);
4779       if (cl->is_post_loop()) log->print("post_loop='%d' ", cl->main_idx());
4780     }
4781     log->end_head();
4782     log_loop_tree_helper(root, loop->_child, log);
4783     log->tail("loop");
4784     log_loop_tree_helper(root, loop->_next, log);
4785   }
4786 }
4787 
4788 void PhaseIdealLoop::log_loop_tree() {
4789   if (C->log() != nullptr) {
4790     log_loop_tree_helper(_ltree_root, _ltree_root, C->log());
4791   }
4792 }
4793 
4794 // Eliminate all Parse and Template Assertion Predicates that are not associated with a loop anymore. The eliminated
4795 // predicates will be removed during the next round of IGVN.
4796 void PhaseIdealLoop::eliminate_useless_predicates() const {
4797   if (C->parse_predicate_count() == 0 && C->template_assertion_predicate_count() == 0) {
4798     return; // No predicates left.
4799   }

4749 // Dump loops by loop tree
4750 void IdealLoopTree::dump() {
4751   dump_head();
4752   if (_child) _child->dump();
4753   if (_next)  _next ->dump();
4754 }
4755 
4756 #endif
4757 
4758 static void log_loop_tree_helper(IdealLoopTree* root, IdealLoopTree* loop, CompileLog* log) {
4759   if (loop == root) {
4760     if (loop->_child != nullptr) {
4761       log->begin_head("loop_tree");
4762       log->end_head();
4763       log_loop_tree_helper(root, loop->_child, log);
4764       log->tail("loop_tree");
4765       assert(loop->_next == nullptr, "what?");
4766     }
4767   } else if (loop != nullptr) {
4768     Node* head = loop->_head;
4769     log->begin_head("loop idx='%d'", head->_idx);
4770     if (loop->_irreducible) log->print(" irreducible='1'");

4771     if (head->is_Loop()) {
4772       if (head->as_Loop()->is_inner_loop())        log->print(" inner_loop='1'");
4773       if (head->as_Loop()->is_partial_peel_loop()) log->print(" partial_peel_loop='1'");
4774     } else if (head->is_CountedLoop()) {
4775       CountedLoopNode* cl = head->as_CountedLoop();
4776       if (cl->is_pre_loop())  log->print(" pre_loop='%d'",  cl->main_idx());
4777       if (cl->is_main_loop()) log->print(" main_loop='%d'", cl->_idx);
4778       if (cl->is_post_loop()) log->print(" post_loop='%d'", cl->main_idx());
4779     }
4780     log->end_head();
4781     log_loop_tree_helper(root, loop->_child, log);
4782     log->tail("loop");
4783     log_loop_tree_helper(root, loop->_next, log);
4784   }
4785 }
4786 
4787 void PhaseIdealLoop::log_loop_tree() {
4788   if (C->log() != nullptr) {
4789     log_loop_tree_helper(_ltree_root, _ltree_root, C->log());
4790   }
4791 }
4792 
4793 // Eliminate all Parse and Template Assertion Predicates that are not associated with a loop anymore. The eliminated
4794 // predicates will be removed during the next round of IGVN.
4795 void PhaseIdealLoop::eliminate_useless_predicates() const {
4796   if (C->parse_predicate_count() == 0 && C->template_assertion_predicate_count() == 0) {
4797     return; // No predicates left.
4798   }
< prev index next >