< prev index next >

src/hotspot/share/opto/loopnode.cpp

Print this page

4912 // Dump loops by loop tree
4913 void IdealLoopTree::dump() {
4914   dump_head();
4915   if (_child) _child->dump();
4916   if (_next)  _next ->dump();
4917 }
4918 
4919 #endif
4920 
4921 static void log_loop_tree_helper(IdealLoopTree* root, IdealLoopTree* loop, CompileLog* log) {
4922   if (loop == root) {
4923     if (loop->_child != nullptr) {
4924       log->begin_head("loop_tree");
4925       log->end_head();
4926       log_loop_tree_helper(root, loop->_child, log);
4927       log->tail("loop_tree");
4928       assert(loop->_next == nullptr, "what?");
4929     }
4930   } else if (loop != nullptr) {
4931     Node* head = loop->_head;
4932     log->begin_head("loop");
4933     log->print(" idx='%d' ", head->_idx);
4934     if (loop->_irreducible) log->print("irreducible='1' ");
4935     if (head->is_Loop()) {
4936       if (head->as_Loop()->is_inner_loop())        log->print("inner_loop='1' ");
4937       if (head->as_Loop()->is_partial_peel_loop()) log->print("partial_peel_loop='1' ");
4938     } else if (head->is_CountedLoop()) {
4939       CountedLoopNode* cl = head->as_CountedLoop();
4940       if (cl->is_pre_loop())  log->print("pre_loop='%d' ",  cl->main_idx());
4941       if (cl->is_main_loop()) log->print("main_loop='%d' ", cl->_idx);
4942       if (cl->is_post_loop()) log->print("post_loop='%d' ", cl->main_idx());
4943     }
4944     log->end_head();
4945     log_loop_tree_helper(root, loop->_child, log);
4946     log->tail("loop");
4947     log_loop_tree_helper(root, loop->_next, log);
4948   }
4949 }
4950 
4951 void PhaseIdealLoop::log_loop_tree() {
4952   if (C->log() != nullptr) {
4953     log_loop_tree_helper(_ltree_root, _ltree_root, C->log());
4954   }
4955 }
4956 
4957 // Eliminate all Parse and Template Assertion Predicates that are not associated with a loop anymore. The eliminated
4958 // predicates will be removed during the next round of IGVN.
4959 void PhaseIdealLoop::eliminate_useless_predicates() const {
4960   if (C->parse_predicate_count() == 0 && C->template_assertion_predicate_count() == 0) {
4961     return; // No predicates left.
4962   }

4912 // Dump loops by loop tree
4913 void IdealLoopTree::dump() {
4914   dump_head();
4915   if (_child) _child->dump();
4916   if (_next)  _next ->dump();
4917 }
4918 
4919 #endif
4920 
4921 static void log_loop_tree_helper(IdealLoopTree* root, IdealLoopTree* loop, CompileLog* log) {
4922   if (loop == root) {
4923     if (loop->_child != nullptr) {
4924       log->begin_head("loop_tree");
4925       log->end_head();
4926       log_loop_tree_helper(root, loop->_child, log);
4927       log->tail("loop_tree");
4928       assert(loop->_next == nullptr, "what?");
4929     }
4930   } else if (loop != nullptr) {
4931     Node* head = loop->_head;
4932     log->begin_head("loop idx='%d'", head->_idx);
4933     if (loop->_irreducible) log->print(" irreducible='1'");

4934     if (head->is_Loop()) {
4935       if (head->as_Loop()->is_inner_loop())        log->print(" inner_loop='1'");
4936       if (head->as_Loop()->is_partial_peel_loop()) log->print(" partial_peel_loop='1'");
4937     } else if (head->is_CountedLoop()) {
4938       CountedLoopNode* cl = head->as_CountedLoop();
4939       if (cl->is_pre_loop())  log->print(" pre_loop='%d'",  cl->main_idx());
4940       if (cl->is_main_loop()) log->print(" main_loop='%d'", cl->_idx);
4941       if (cl->is_post_loop()) log->print(" post_loop='%d'", cl->main_idx());
4942     }
4943     log->end_head();
4944     log_loop_tree_helper(root, loop->_child, log);
4945     log->tail("loop");
4946     log_loop_tree_helper(root, loop->_next, log);
4947   }
4948 }
4949 
4950 void PhaseIdealLoop::log_loop_tree() {
4951   if (C->log() != nullptr) {
4952     log_loop_tree_helper(_ltree_root, _ltree_root, C->log());
4953   }
4954 }
4955 
4956 // Eliminate all Parse and Template Assertion Predicates that are not associated with a loop anymore. The eliminated
4957 // predicates will be removed during the next round of IGVN.
4958 void PhaseIdealLoop::eliminate_useless_predicates() const {
4959   if (C->parse_predicate_count() == 0 && C->template_assertion_predicate_count() == 0) {
4960     return; // No predicates left.
4961   }
< prev index next >