8024069: replace_in_map() should operate on parent maps

Type information gets lost because replace_in_map() doesn't update parent maps

Reviewed-by: kvn, twisti
This commit is contained in:
Roland Westrelin 2013-10-19 12:16:43 +02:00
parent 801b3e680e
commit 3f8ae3e9b9
17 changed files with 210 additions and 123 deletions

View file

@ -1019,7 +1019,7 @@ void IfNode::dominated_by( Node *prev_dom, PhaseIterGVN *igvn ) {
// 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 (PhaseIdealLoop::is_uncommon_trap_proj(unc_proj, Deoptimization::Reason_predicate))
if (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate))
prev_dom = idom;
// Now walk the current IfNode's projections.