# HG changeset patch # User Thomas Wuerthinger # Date 1379538394 -7200 # Node ID cfca65c7cf02f8aaf5f5dcd152aedb0817e613bb # Parent 6e8df0ca28791658a9c18d420ad773e984ea6fa5 Do not propagate state over loop exits in conditional elimination phase as the phase does not insert proxy nodes. diff -r 6e8df0ca2879 -r cfca65c7cf02 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Wed Sep 18 12:55:52 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Wed Sep 18 23:06:34 2013 +0200 @@ -258,6 +258,14 @@ metricTypeRegistered.increment(); } } + + public void clear() { + knownTypes.clear(); + knownNonNull.clear(); + knownNull.clear(); + trueConditions.clear(); + falseConditions.clear(); + } } public static ResolvedJavaType widen(ResolvedJavaType a, ResolvedJavaType b) { @@ -355,6 +363,9 @@ private void registerControlSplitInfo(Node pred, AbstractBeginNode begin) { assert pred != null && begin != null; + if (begin instanceof LoopExitNode) { + state.clear(); + } if (pred instanceof IfNode) { IfNode ifNode = (IfNode) pred;