< prev index next >

src/hotspot/share/opto/loopnode.cpp

Print this page

4357 // Dump loops by loop tree
4358 void IdealLoopTree::dump() {
4359   dump_head();
4360   if (_child) _child->dump();
4361   if (_next)  _next ->dump();
4362 }
4363 
4364 #endif
4365 
4366 static void log_loop_tree_helper(IdealLoopTree* root, IdealLoopTree* loop, CompileLog* log) {
4367   if (loop == root) {
4368     if (loop->_child != nullptr) {
4369       log->begin_head("loop_tree");
4370       log->end_head();
4371       log_loop_tree_helper(root, loop->_child, log);
4372       log->tail("loop_tree");
4373       assert(loop->_next == nullptr, "what?");
4374     }
4375   } else if (loop != nullptr) {
4376     Node* head = loop->_head;
4377     log->begin_head("loop");
4378     log->print(" idx='%d' ", head->_idx);
4379     if (loop->_irreducible) log->print("irreducible='1' ");
4380     if (head->is_Loop()) {
4381       if (head->as_Loop()->is_inner_loop())        log->print("inner_loop='1' ");
4382       if (head->as_Loop()->is_partial_peel_loop()) log->print("partial_peel_loop='1' ");
4383     } else if (head->is_CountedLoop()) {
4384       CountedLoopNode* cl = head->as_CountedLoop();
4385       if (cl->is_pre_loop())  log->print("pre_loop='%d' ",  cl->main_idx());
4386       if (cl->is_main_loop()) log->print("main_loop='%d' ", cl->_idx);
4387       if (cl->is_post_loop()) log->print("post_loop='%d' ", cl->main_idx());
4388     }
4389     log->end_head();
4390     log_loop_tree_helper(root, loop->_child, log);
4391     log->tail("loop");
4392     log_loop_tree_helper(root, loop->_next, log);
4393   }
4394 }
4395 
4396 void PhaseIdealLoop::log_loop_tree() {
4397   if (C->log() != nullptr) {
4398     log_loop_tree_helper(_ltree_root, _ltree_root, C->log());
4399   }
4400 }
4401 
4402 // Eliminate all Parse and Template Assertion Predicates that are not associated with a loop anymore. The eliminated
4403 // predicates will be removed during the next round of IGVN.
4404 void PhaseIdealLoop::eliminate_useless_predicates() const {
4405   if (C->parse_predicate_count() == 0 && C->template_assertion_predicate_count() == 0) {
4406     return; // No predicates left.
4407   }

4357 // Dump loops by loop tree
4358 void IdealLoopTree::dump() {
4359   dump_head();
4360   if (_child) _child->dump();
4361   if (_next)  _next ->dump();
4362 }
4363 
4364 #endif
4365 
4366 static void log_loop_tree_helper(IdealLoopTree* root, IdealLoopTree* loop, CompileLog* log) {
4367   if (loop == root) {
4368     if (loop->_child != nullptr) {
4369       log->begin_head("loop_tree");
4370       log->end_head();
4371       log_loop_tree_helper(root, loop->_child, log);
4372       log->tail("loop_tree");
4373       assert(loop->_next == nullptr, "what?");
4374     }
4375   } else if (loop != nullptr) {
4376     Node* head = loop->_head;
4377     log->begin_head("loop idx='%d'", head->_idx);
4378     if (loop->_irreducible) log->print(" irreducible='1'");

4379     if (head->is_Loop()) {
4380       if (head->as_Loop()->is_inner_loop())        log->print(" inner_loop='1'");
4381       if (head->as_Loop()->is_partial_peel_loop()) log->print(" partial_peel_loop='1'");
4382     } else if (head->is_CountedLoop()) {
4383       CountedLoopNode* cl = head->as_CountedLoop();
4384       if (cl->is_pre_loop())  log->print(" pre_loop='%d'",  cl->main_idx());
4385       if (cl->is_main_loop()) log->print(" main_loop='%d'", cl->_idx);
4386       if (cl->is_post_loop()) log->print(" post_loop='%d'", cl->main_idx());
4387     }
4388     log->end_head();
4389     log_loop_tree_helper(root, loop->_child, log);
4390     log->tail("loop");
4391     log_loop_tree_helper(root, loop->_next, log);
4392   }
4393 }
4394 
4395 void PhaseIdealLoop::log_loop_tree() {
4396   if (C->log() != nullptr) {
4397     log_loop_tree_helper(_ltree_root, _ltree_root, C->log());
4398   }
4399 }
4400 
4401 // Eliminate all Parse and Template Assertion Predicates that are not associated with a loop anymore. The eliminated
4402 // predicates will be removed during the next round of IGVN.
4403 void PhaseIdealLoop::eliminate_useless_predicates() const {
4404   if (C->parse_predicate_count() == 0 && C->template_assertion_predicate_count() == 0) {
4405     return; // No predicates left.
4406   }
< prev index next >