< prev index next >

src/hotspot/share/opto/loopnode.cpp

Print this page

4699 // Dump loops by loop tree
4700 void IdealLoopTree::dump() {
4701   dump_head();
4702   if (_child) _child->dump();
4703   if (_next)  _next ->dump();
4704 }
4705 
4706 #endif
4707 
4708 static void log_loop_tree_helper(IdealLoopTree* root, IdealLoopTree* loop, CompileLog* log) {
4709   if (loop == root) {
4710     if (loop->_child != nullptr) {
4711       log->begin_head("loop_tree");
4712       log->end_head();
4713       log_loop_tree_helper(root, loop->_child, log);
4714       log->tail("loop_tree");
4715       assert(loop->_next == nullptr, "what?");
4716     }
4717   } else if (loop != nullptr) {
4718     Node* head = loop->_head;
4719     log->begin_head("loop");
4720     log->print(" idx='%d' ", head->_idx);
4721     if (loop->_irreducible) log->print("irreducible='1' ");
4722     if (head->is_Loop()) {
4723       if (head->as_Loop()->is_inner_loop())        log->print("inner_loop='1' ");
4724       if (head->as_Loop()->is_partial_peel_loop()) log->print("partial_peel_loop='1' ");
4725     } else if (head->is_CountedLoop()) {
4726       CountedLoopNode* cl = head->as_CountedLoop();
4727       if (cl->is_pre_loop())  log->print("pre_loop='%d' ",  cl->main_idx());
4728       if (cl->is_main_loop()) log->print("main_loop='%d' ", cl->_idx);
4729       if (cl->is_post_loop()) log->print("post_loop='%d' ", cl->main_idx());
4730     }
4731     log->end_head();
4732     log_loop_tree_helper(root, loop->_child, log);
4733     log->tail("loop");
4734     log_loop_tree_helper(root, loop->_next, log);
4735   }
4736 }
4737 
4738 void PhaseIdealLoop::log_loop_tree() {
4739   if (C->log() != nullptr) {
4740     log_loop_tree_helper(_ltree_root, _ltree_root, C->log());
4741   }
4742 }
4743 
4744 // Eliminate all Parse and Template Assertion Predicates that are not associated with a loop anymore. The eliminated
4745 // predicates will be removed during the next round of IGVN.
4746 void PhaseIdealLoop::eliminate_useless_predicates() const {
4747   if (C->parse_predicate_count() == 0 && C->template_assertion_predicate_count() == 0) {
4748     return; // No predicates left.
4749   }

4699 // Dump loops by loop tree
4700 void IdealLoopTree::dump() {
4701   dump_head();
4702   if (_child) _child->dump();
4703   if (_next)  _next ->dump();
4704 }
4705 
4706 #endif
4707 
4708 static void log_loop_tree_helper(IdealLoopTree* root, IdealLoopTree* loop, CompileLog* log) {
4709   if (loop == root) {
4710     if (loop->_child != nullptr) {
4711       log->begin_head("loop_tree");
4712       log->end_head();
4713       log_loop_tree_helper(root, loop->_child, log);
4714       log->tail("loop_tree");
4715       assert(loop->_next == nullptr, "what?");
4716     }
4717   } else if (loop != nullptr) {
4718     Node* head = loop->_head;
4719     log->begin_head("loop idx='%d'", head->_idx);
4720     if (loop->_irreducible) log->print(" irreducible='1'");

4721     if (head->is_Loop()) {
4722       if (head->as_Loop()->is_inner_loop())        log->print(" inner_loop='1'");
4723       if (head->as_Loop()->is_partial_peel_loop()) log->print(" partial_peel_loop='1'");
4724     } else if (head->is_CountedLoop()) {
4725       CountedLoopNode* cl = head->as_CountedLoop();
4726       if (cl->is_pre_loop())  log->print(" pre_loop='%d'",  cl->main_idx());
4727       if (cl->is_main_loop()) log->print(" main_loop='%d'", cl->_idx);
4728       if (cl->is_post_loop()) log->print(" post_loop='%d'", cl->main_idx());
4729     }
4730     log->end_head();
4731     log_loop_tree_helper(root, loop->_child, log);
4732     log->tail("loop");
4733     log_loop_tree_helper(root, loop->_next, log);
4734   }
4735 }
4736 
4737 void PhaseIdealLoop::log_loop_tree() {
4738   if (C->log() != nullptr) {
4739     log_loop_tree_helper(_ltree_root, _ltree_root, C->log());
4740   }
4741 }
4742 
4743 // Eliminate all Parse and Template Assertion Predicates that are not associated with a loop anymore. The eliminated
4744 // predicates will be removed during the next round of IGVN.
4745 void PhaseIdealLoop::eliminate_useless_predicates() const {
4746   if (C->parse_predicate_count() == 0 && C->template_assertion_predicate_count() == 0) {
4747     return; // No predicates left.
4748   }
< prev index next >