# HG changeset patch # User Miguel Garcia # Date 1398774789 -7200 # Node ID e9029a026dc97a5bc6c54df96eddc1139f946fae # Parent a92ff90899b658be8e1a18c500f1243b843367d0 [flow-sensitive] bug fixes, missing state clearing diff -r a92ff90899b6 -r e9029a026dc9 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FlowSensitiveReductionPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FlowSensitiveReductionPhase.java Mon Apr 28 15:05:42 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FlowSensitiveReductionPhase.java Tue Apr 29 14:33:09 2014 +0200 @@ -43,7 +43,9 @@ @Override protected final void run(StructuredGraph graph, PhaseContext context) { try (Debug.Scope s = Debug.scope("FlowSensitiveReduction")) { + Debug.dump(graph, "FlowSensitiveReduction initial"); new FlowSensitiveReduction(graph.start(), new State(), context).apply(); + Debug.dump(graph, "FlowSensitiveReduction done"); } catch (Throwable e) { throw Debug.handle(e); } diff -r a92ff90899b6 -r e9029a026dc9 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/State.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/State.java Mon Apr 28 15:05:42 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/State.java Tue Apr 29 14:33:09 2014 +0200 @@ -283,6 +283,8 @@ if (isUnreachable) { typeRefinements.clear(); knownNull.clear(); + trueFacts.clear(); + falseFacts.clear(); return true; } @@ -789,6 +791,7 @@ * @return true iff `value` may lose dependency not covered by `anchor`. */ public static boolean isDependencyTainted(ValueNode value, GuardingNode anchor) { + assert anchor instanceof FixedNode; if (value instanceof ValueProxy) { if (value instanceof GuardedNode) { GuardedNode gn = (GuardedNode) value; @@ -814,6 +817,8 @@ isUnreachable = false; typeRefinements.clear(); knownNull.clear(); + trueFacts.clear(); + falseFacts.clear(); } }