< prev index next >

src/hotspot/share/opto/loopnode.cpp

Print this page

4241 // Dump loops by loop tree
4242 void IdealLoopTree::dump() {
4243   dump_head();
4244   if (_child) _child->dump();
4245   if (_next)  _next ->dump();
4246 }
4247 
4248 #endif
4249 
4250 static void log_loop_tree_helper(IdealLoopTree* root, IdealLoopTree* loop, CompileLog* log) {
4251   if (loop == root) {
4252     if (loop->_child != nullptr) {
4253       log->begin_head("loop_tree");
4254       log->end_head();
4255       log_loop_tree_helper(root, loop->_child, log);
4256       log->tail("loop_tree");
4257       assert(loop->_next == nullptr, "what?");
4258     }
4259   } else if (loop != nullptr) {
4260     Node* head = loop->_head;
4261     log->begin_head("loop");
4262     log->print(" idx='%d' ", head->_idx);
4263     if (loop->_irreducible) log->print("irreducible='1' ");
4264     if (head->is_Loop()) {
4265       if (head->as_Loop()->is_inner_loop())        log->print("inner_loop='1' ");
4266       if (head->as_Loop()->is_partial_peel_loop()) log->print("partial_peel_loop='1' ");
4267     } else if (head->is_CountedLoop()) {
4268       CountedLoopNode* cl = head->as_CountedLoop();
4269       if (cl->is_pre_loop())  log->print("pre_loop='%d' ",  cl->main_idx());
4270       if (cl->is_main_loop()) log->print("main_loop='%d' ", cl->_idx);
4271       if (cl->is_post_loop()) log->print("post_loop='%d' ", cl->main_idx());
4272     }
4273     log->end_head();
4274     log_loop_tree_helper(root, loop->_child, log);
4275     log->tail("loop");
4276     log_loop_tree_helper(root, loop->_next, log);
4277   }
4278 }
4279 
4280 void PhaseIdealLoop::log_loop_tree() {
4281   if (C->log() != nullptr) {
4282     log_loop_tree_helper(_ltree_root, _ltree_root, C->log());
4283   }
4284 }
4285 
4286 // Eliminate all Parse and Template Assertion Predicates that are not associated with a loop anymore. The eliminated
4287 // predicates will be removed during the next round of IGVN.
4288 void PhaseIdealLoop::eliminate_useless_predicates() {
4289   if (C->parse_predicate_count() == 0 && C->template_assertion_predicate_count() == 0) {
4290     return; // No predicates left.
4291   }

4241 // Dump loops by loop tree
4242 void IdealLoopTree::dump() {
4243   dump_head();
4244   if (_child) _child->dump();
4245   if (_next)  _next ->dump();
4246 }
4247 
4248 #endif
4249 
4250 static void log_loop_tree_helper(IdealLoopTree* root, IdealLoopTree* loop, CompileLog* log) {
4251   if (loop == root) {
4252     if (loop->_child != nullptr) {
4253       log->begin_head("loop_tree");
4254       log->end_head();
4255       log_loop_tree_helper(root, loop->_child, log);
4256       log->tail("loop_tree");
4257       assert(loop->_next == nullptr, "what?");
4258     }
4259   } else if (loop != nullptr) {
4260     Node* head = loop->_head;
4261     log->begin_head("loop idx='%d'", head->_idx);
4262     if (loop->_irreducible) log->print(" irreducible='1'");

4263     if (head->is_Loop()) {
4264       if (head->as_Loop()->is_inner_loop())        log->print(" inner_loop='1'");
4265       if (head->as_Loop()->is_partial_peel_loop()) log->print(" partial_peel_loop='1'");
4266     } else if (head->is_CountedLoop()) {
4267       CountedLoopNode* cl = head->as_CountedLoop();
4268       if (cl->is_pre_loop())  log->print(" pre_loop='%d'",  cl->main_idx());
4269       if (cl->is_main_loop()) log->print(" main_loop='%d'", cl->_idx);
4270       if (cl->is_post_loop()) log->print(" post_loop='%d'", cl->main_idx());
4271     }
4272     log->end_head();
4273     log_loop_tree_helper(root, loop->_child, log);
4274     log->tail("loop");
4275     log_loop_tree_helper(root, loop->_next, log);
4276   }
4277 }
4278 
4279 void PhaseIdealLoop::log_loop_tree() {
4280   if (C->log() != nullptr) {
4281     log_loop_tree_helper(_ltree_root, _ltree_root, C->log());
4282   }
4283 }
4284 
4285 // Eliminate all Parse and Template Assertion Predicates that are not associated with a loop anymore. The eliminated
4286 // predicates will be removed during the next round of IGVN.
4287 void PhaseIdealLoop::eliminate_useless_predicates() {
4288   if (C->parse_predicate_count() == 0 && C->template_assertion_predicate_count() == 0) {
4289     return; // No predicates left.
4290   }
< prev index next >