comparison src/share/vm/opto/ifnode.cpp @ 12956:3213ba4d3dff

8024069: replace_in_map() should operate on parent maps Summary: type information gets lost because replace_in_map() doesn't update parent maps Reviewed-by: kvn, twisti
author roland
date Sat, 19 Oct 2013 12:16:43 +0200
parents 46ef27bcacb3
children de6a9e811145
comparison
equal deleted inserted replaced
12955:252d541466ea 12956:3213ba4d3dff
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) {