--- old/src/share/vm/opto/ifnode.cpp 2017-03-08 22:49:11.796700372 -0800 +++ new/src/share/vm/opto/ifnode.cpp 2017-03-08 22:49:11.638686101 -0800 @@ -1458,8 +1458,9 @@ // be skipped. For example, range check predicate has two checks // for lower and upper bounds. ProjNode* unc_proj = proj_out(1 - prev_dom->as_Proj()->_con)->as_Proj(); - if (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate) != NULL) - prev_dom = idom; + if ((unc_proj != NULL) && (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate) != NULL)) { + prev_dom = idom; + } // Now walk the current IfNode's projections. // Loop ends when 'this' has no more uses.