1017 |
1017 |
1018 // Loop predicates may have depending checks which should not |
1018 // Loop predicates may have depending checks which should not |
1019 // be skipped. For example, range check predicate has two checks |
1019 // be skipped. For example, range check predicate has two checks |
1020 // for lower and upper bounds. |
1020 // for lower and upper bounds. |
1021 ProjNode* unc_proj = proj_out(1 - prev_dom->as_Proj()->_con)->as_Proj(); |
1021 ProjNode* unc_proj = proj_out(1 - prev_dom->as_Proj()->_con)->as_Proj(); |
1022 if (PhaseIdealLoop::is_uncommon_trap_proj(unc_proj, Deoptimization::Reason_predicate)) |
1022 if (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate)) |
1023 prev_dom = idom; |
1023 prev_dom = idom; |
1024 |
1024 |
1025 // Now walk the current IfNode's projections. |
1025 // Now walk the current IfNode's projections. |
1026 // Loop ends when 'this' has no more uses. |
1026 // Loop ends when 'this' has no more uses. |
1027 for (DUIterator_Last imin, i = last_outs(imin); i >= imin; --i) { |
1027 for (DUIterator_Last imin, i = last_outs(imin); i >= imin; --i) { |