1079 |
1079 |
1080 // Loop predicates may have depending checks which should not |
1080 // Loop predicates may have depending checks which should not |
1081 // be skipped. For example, range check predicate has two checks |
1081 // be skipped. For example, range check predicate has two checks |
1082 // for lower and upper bounds. |
1082 // for lower and upper bounds. |
1083 ProjNode* unc_proj = proj_out(1 - prev_dom->as_Proj()->_con)->as_Proj(); |
1083 ProjNode* unc_proj = proj_out(1 - prev_dom->as_Proj()->_con)->as_Proj(); |
1084 if (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate)) |
1084 if ((unc_proj != NULL) && (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate))) { |
1085 prev_dom = idom; |
1085 prev_dom = idom; |
|
1086 } |
1086 |
1087 |
1087 // Now walk the current IfNode's projections. |
1088 // Now walk the current IfNode's projections. |
1088 // Loop ends when 'this' has no more uses. |
1089 // Loop ends when 'this' has no more uses. |
1089 for (DUIterator_Last imin, i = last_outs(imin); i >= imin; --i) { |
1090 for (DUIterator_Last imin, i = last_outs(imin); i >= imin; --i) { |
1090 Node *ifp = last_out(i); // Get IfTrue/IfFalse |
1091 Node *ifp = last_out(i); // Get IfTrue/IfFalse |