src/hotspot/share/opto/node.cpp
changeset 57722 8e51da27b53a
parent 57632 9c523692db7e
child 58285 1182ff8929cc
equal deleted inserted replaced
57721:4fbcbd248c52 57722:8e51da27b53a
  1226     up = sub->find_exact_control(up);
  1226     up = sub->find_exact_control(up);
  1227     // If sub == up, we found a self-loop.  Try to push past it.
  1227     // If sub == up, we found a self-loop.  Try to push past it.
  1228     if (sub == up && sub->is_Loop()) {
  1228     if (sub == up && sub->is_Loop()) {
  1229       // Take loop entry path on the way up to 'dom'.
  1229       // Take loop entry path on the way up to 'dom'.
  1230       up = sub->in(1); // in(LoopNode::EntryControl);
  1230       up = sub->in(1); // in(LoopNode::EntryControl);
  1231     } else if (sub == up && sub->is_Region() && sub->req() != 3) {
  1231     } else if (sub == up && sub->is_Region() && sub->req() == 2) {
  1232       // Always take in(1) path on the way up to 'dom' for clone regions
  1232       // Take in(1) path on the way up to 'dom' for regions with only one input
  1233       // (with only one input) or regions which merge > 2 paths
       
  1234       // (usually used to merge fast/slow paths).
       
  1235       up = sub->in(1);
  1233       up = sub->in(1);
  1236     } else if (sub == up && sub->is_Region()) {
  1234     } else if (sub == up && sub->is_Region() && sub->req() == 3) {
  1237       // Try both paths for Regions with 2 input paths (it may be a loop head).
  1235       // Try both paths for Regions with 2 input paths (it may be a loop head).
  1238       // It could give conservative 'false' answer without information
  1236       // It could give conservative 'false' answer without information
  1239       // which region's input is the entry path.
  1237       // which region's input is the entry path.
  1240       iterations_without_region_limit = DominatorSearchLimit; // Reset
  1238       iterations_without_region_limit = DominatorSearchLimit; // Reset
  1241 
  1239