# HG changeset patch # User Thomas Wuerthinger # Date 1363544435 -3600 # Node ID 0fd97e8f511eadcbfd0e7642bd142c17b707e695 # Parent 4f8143c9947a361786eb72e16b54a8abc16d7452 Fix guard canonicalization. diff -r 4f8143c9947a -r 0fd97e8f511e graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java Sun Mar 17 17:36:29 2013 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java Sun Mar 17 19:20:35 2013 +0100 @@ -135,7 +135,7 @@ throw new BailoutException("unbalanced monitors: found monitor for unknown frame (%d != %d) at %s", lockDataSlots.size(), numLocks, state); } } - assert state.bci >= 0 || state.bci == FrameState.BEFORE_BCI; + assert state.bci >= 0 || state.bci == FrameState.BEFORE_BCI : "bci == " + state.bci; return new BytecodeFrame(caller, state.method(), state.bci, state.rethrowException(), state.duringCall(), values, numLocals, numStack, numLocks); } diff -r 4f8143c9947a -r 0fd97e8f511e graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java Sun Mar 17 17:36:29 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java Sun Mar 17 19:20:35 2013 +0100 @@ -95,15 +95,9 @@ if (condition() instanceof LogicConstantNode) { LogicConstantNode c = (LogicConstantNode) condition(); if (c.getValue() != negated) { - if (!dependencies().isEmpty()) { - for (Node usage : usages()) { - if (usage instanceof ValueNode) { - ((ValueNode) usage).dependencies().addAll(dependencies()); - } - } + if (dependencies().size() == 1) { + return dependencies().get(0); } - this.replaceAtUsages(null); - return null; } } return this; diff -r 4f8143c9947a -r 0fd97e8f511e graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java Sun Mar 17 17:36:29 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java Sun Mar 17 19:20:35 2013 +0100 @@ -200,6 +200,7 @@ public ValueNode singleValue() { ValueNode differentValue = null; for (ValueNode n : values()) { + assert n != null : "Must have input value!"; if (n != this) { if (differentValue == null) { differentValue = n; diff -r 4f8143c9947a -r 0fd97e8f511e graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java --- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Sun Mar 17 17:36:29 2013 +0100 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Sun Mar 17 19:20:35 2013 +0100 @@ -243,7 +243,8 @@ // schedule at the latest position possible in the outermost loop possible Block earliestBlock = earliestBlock(node); block = scheduleOutOfLoops(node, block, earliestBlock); - assert earliestBlock.dominates(block) : "Graph can not be scheduled : inconsistent for " + node + " (" + earliestBlock + " needs to dominate " + block + ")"; + assert earliestBlock.dominates(block) : "Graph cannot be scheduled : inconsistent for " + node + ", " + node.usages().count() + " usages, (" + earliestBlock + + " needs to dominate " + block + ")"; } break; default: