< prev index next >

src/hotspot/share/opto/node.cpp

Print this page

        

*** 1226,1241 **** up = sub->find_exact_control(up); // If sub == up, we found a self-loop. Try to push past it. if (sub == up && sub->is_Loop()) { // Take loop entry path on the way up to 'dom'. up = sub->in(1); // in(LoopNode::EntryControl); ! } else if (sub == up && sub->is_Region() && sub->req() != 3) { ! // Always take in(1) path on the way up to 'dom' for clone regions ! // (with only one input) or regions which merge > 2 paths ! // (usually used to merge fast/slow paths). up = sub->in(1); ! } else if (sub == up && sub->is_Region()) { // Try both paths for Regions with 2 input paths (it may be a loop head). // It could give conservative 'false' answer without information // which region's input is the entry path. iterations_without_region_limit = DominatorSearchLimit; // Reset --- 1226,1239 ---- up = sub->find_exact_control(up); // If sub == up, we found a self-loop. Try to push past it. if (sub == up && sub->is_Loop()) { // Take loop entry path on the way up to 'dom'. up = sub->in(1); // in(LoopNode::EntryControl); ! } else if (sub == up && sub->is_Region() && sub->req() == 2) { ! // Take in(1) path on the way up to 'dom' for regions with only one input up = sub->in(1); ! } else if (sub == up && sub->is_Region() && sub->req() == 3) { // Try both paths for Regions with 2 input paths (it may be a loop head). // It could give conservative 'false' answer without information // which region's input is the entry path. iterations_without_region_limit = DominatorSearchLimit; // Reset
< prev index next >