# HG changeset patch # User Thomas Wuerthinger # Date 1312919458 -7200 # Node ID 391302094f86634a54741ee1b632670b499adfc8 # Parent 40121bcd2efc7dd667ea282228d0d5abaffa18d0 Bug fixes in the Canonicalizer and in the Conditional node. diff -r 40121bcd2efc -r 391302094f86 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Compare.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Compare.java Tue Aug 09 19:05:30 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Compare.java Tue Aug 09 21:50:58 2011 +0200 @@ -227,19 +227,6 @@ } } } - boolean allUsagesNegate = true; - for (Node usage : usages()) { - if (!(usage instanceof NegateBooleanNode)) { - allUsagesNegate = false; - break; - } - } - if (allUsagesNegate) { - negate(); - for (Node usage : usages().snapshot()) { - usage.replaceAtUsages(this); - } - } return this; } } diff -r 40121bcd2efc -r 391302094f86 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Conditional.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Conditional.java Tue Aug 09 19:05:30 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Conditional.java Tue Aug 09 21:50:58 2011 +0200 @@ -175,7 +175,7 @@ right = CiConstant.NULL_OBJECT; cond = Condition.NE; } else if (condition instanceof Constant) { - generator.lir().move(generator.createResultVariable(conditional), condition.asConstant()); + generator.lir().move(condition.asConstant(), generator.createResultVariable(conditional)); } else if (condition instanceof InstanceOf) { if (conditional instanceof MaterializeNode && !negate) { generator.emitMaterializeInstanceOf((MaterializeNode) conditional, conditional, null); diff -r 40121bcd2efc -r 391302094f86 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/If.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/If.java Tue Aug 09 19:05:30 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/If.java Tue Aug 09 21:50:58 2011 +0200 @@ -125,22 +125,10 @@ EndNode trueEnd = (EndNode) trueSuccessor(); EndNode falseEnd = (EndNode) falseSuccessor(); Merge merge = trueEnd.merge(); - if (merge == falseEnd.merge() && merge.phis().size() == 0) { + if (merge == falseEnd.merge() && merge.phis().size() == 0 && merge.endCount() == 2) { FixedNode next = merge.next(); merge.setNext(null); // disconnect to avoid next from having 2 preds - if (compare().usages().size() == 1 && /* ifNode.compare().hasSideEffets() */true) { // TODO (gd) ifNode.compare().hasSideEffets() ? - if (GraalOptions.TraceCanonicalizer) { - TTY.println("> Useless if with side effects Canon'ed to guard"); - } - ValueAnchor anchor = new ValueAnchor(compare(), graph()); - anchor.setNext(next); - return anchor; - } else { - if (GraalOptions.TraceCanonicalizer) { - TTY.println("> Useless if Canon'ed away"); - } - return next; - } + return next; } } return this; diff -r 40121bcd2efc -r 391302094f86 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/CanonicalizerPhase.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/CanonicalizerPhase.java Tue Aug 09 19:05:30 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/CanonicalizerPhase.java Tue Aug 09 21:50:58 2011 +0200 @@ -61,10 +61,10 @@ Node canonical = ((Canonicalizable) node).canonical(reProcess); if (canonical != node) { node.replaceAndDelete(canonical); - nodeWorkList.replaced(canonical, node, false, EdgeType.USAGES); for (Node newNode : graph.getNewNodes()) { nodeWorkList.add(newNode); } + nodeWorkList.replaced(canonical, node, false, EdgeType.USAGES); GraalMetrics.NodesCanonicalized++; } }