Mercurial > hg > truffle
changeset 11706:cfca65c7cf02
Do not propagate state over loop exits in conditional elimination phase as the phase does not insert proxy nodes.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Wed, 18 Sep 2013 23:06:34 +0200 |
parents | 6e8df0ca2879 |
children | f6f5fceef2ce |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java |
diffstat | 1 files changed, 11 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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;