< prev index next >

src/hotspot/share/opto/loopnode.cpp

Print this page

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

4708 // Dump loops by loop tree
4709 void IdealLoopTree::dump() {
4710   dump_head();
4711   if (_child) _child->dump();
4712   if (_next)  _next ->dump();
4713 }
4714 
4715 #endif
4716 
4717 static void log_loop_tree_helper(IdealLoopTree* root, IdealLoopTree* loop, CompileLog* log) {
4718   if (loop == root) {
4719     if (loop->_child != nullptr) {
4720       log->begin_head("loop_tree");
4721       log->end_head();
4722       log_loop_tree_helper(root, loop->_child, log);
4723       log->tail("loop_tree");
4724       assert(loop->_next == nullptr, "what?");
4725     }
4726   } else if (loop != nullptr) {
4727     Node* head = loop->_head;
4728     log->begin_head("loop idx='%d'", head->_idx);
4729     if (loop->_irreducible) log->print(" irreducible='1'");

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