# HG changeset patch # User Christian Haeubl # Date 1329176360 28800 # Node ID c148bec9398a16036a7960e82038907a006ef959 # Parent 597bc897257d4bf73b734299f7f10dbfd31077d8 Fixed computation of exact type information in PhiStampPhase. diff -r 597bc897257d -r c148bec9398a graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalCompiler.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalCompiler.java Mon Feb 13 23:15:53 2012 +0100 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalCompiler.java Mon Feb 13 15:39:20 2012 -0800 @@ -163,7 +163,9 @@ if (GraalOptions.EscapeAnalysis && !plan.isPhaseDisabled(EscapeAnalysisPhase.class)) { new EscapeAnalysisPhase(target, runtime, assumptions, plan).apply(graph); new PhiStampPhase().apply(graph); - new CanonicalizerPhase(target, runtime, assumptions).apply(graph); + if (GraalOptions.OptCanonicalizer) { + new CanonicalizerPhase(target, runtime, assumptions).apply(graph); + } } if (GraalOptions.OptGVN) { diff -r 597bc897257d -r c148bec9398a graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java Mon Feb 13 23:15:53 2012 +0100 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java Mon Feb 13 15:39:20 2012 -0800 @@ -154,7 +154,9 @@ new DeadCodeEliminationPhase().apply(newGraph); new ComputeProbabilityPhase().apply(newGraph); } - new CanonicalizerPhase(target, runtime, assumptions).apply(newGraph); + if (GraalOptions.OptCanonicalizer) { + new CanonicalizerPhase(target, runtime, assumptions).apply(newGraph); + } return newGraph; } @@ -261,7 +263,9 @@ if (plan != null) { plan.runPhases(PhasePosition.AFTER_PARSING, newGraph); } - new CanonicalizerPhase(target, runtime, assumptions).apply(newGraph); + if (GraalOptions.OptCanonicalizer) { + new CanonicalizerPhase(target, runtime, assumptions).apply(newGraph); + } count = graphComplexity(newGraph); parsedMethods.put(method, count); } else { diff -r 597bc897257d -r c148bec9398a graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java --- a/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java Mon Feb 13 23:15:53 2012 +0100 +++ b/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java Mon Feb 13 15:39:20 2012 -0800 @@ -120,7 +120,7 @@ nodeClass = NodeClass.get(getClass()); } - int id() { + protected int id() { return id; } diff -r 597bc897257d -r c148bec9398a graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/snippets/IntrinsifyArrayCopyPhase.java --- a/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/snippets/IntrinsifyArrayCopyPhase.java Mon Feb 13 23:15:53 2012 +0100 +++ b/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/snippets/IntrinsifyArrayCopyPhase.java Mon Feb 13 15:39:20 2012 -0800 @@ -26,6 +26,7 @@ import com.oracle.max.cri.ci.*; import com.oracle.max.cri.ri.*; +import com.oracle.max.graal.compiler.*; import com.oracle.max.graal.compiler.phases.*; import com.oracle.max.graal.compiler.util.*; import com.oracle.max.graal.cri.*; @@ -122,7 +123,7 @@ InliningUtil.inline(methodCallTarget.invoke(), snippetGraph, false); } } - if (hits) { + if (GraalOptions.OptCanonicalizer && hits) { new CanonicalizerPhase(null, runtime, null).apply(graph); } } diff -r 597bc897257d -r c148bec9398a graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/IsTypeNode.java --- a/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/IsTypeNode.java Mon Feb 13 23:15:53 2012 +0100 +++ b/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/IsTypeNode.java Mon Feb 13 15:39:20 2012 -0800 @@ -26,6 +26,7 @@ import com.oracle.max.cri.ci.*; import com.oracle.max.cri.ri.*; +import com.oracle.max.graal.debug.*; import com.oracle.max.graal.nodes.*; import com.oracle.max.graal.nodes.extended.*; import com.oracle.max.graal.nodes.spi.*; diff -r 597bc897257d -r c148bec9398a graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/type/StampFactory.java --- a/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/type/StampFactory.java Mon Feb 13 23:15:53 2012 +0100 +++ b/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/type/StampFactory.java Mon Feb 13 15:39:20 2012 -0800 @@ -176,7 +176,9 @@ assert current.kind() == first.kind() : values + " first=" + first + " current=" + current + " first kind=" + first.kind() + " current kind=" + current.kind(); nonNull &= current.nonNull(); declaredType = orTypes(declaredType, current.declaredType()); - exactType = orTypes(exactType, current.exactType()); + if (exactType != current.exactType()) { + exactType = null; + } } if (nonNull != first.nonNull() || declaredType != first.declaredType() || exactType != first.exactType()) { diff -r 597bc897257d -r c148bec9398a graal/com.oracle.max.graal.snippets/src/com/oracle/max/graal/snippets/Snippets.java --- a/graal/com.oracle.max.graal.snippets/src/com/oracle/max/graal/snippets/Snippets.java Mon Feb 13 23:15:53 2012 +0100 +++ b/graal/com.oracle.max.graal.snippets/src/com/oracle/max/graal/snippets/Snippets.java Mon Feb 13 15:39:20 2012 -0800 @@ -27,6 +27,7 @@ import com.oracle.max.cri.ci.*; import com.oracle.max.cri.ri.*; +import com.oracle.max.graal.compiler.*; import com.oracle.max.graal.compiler.phases.*; import com.oracle.max.graal.compiler.util.*; import com.oracle.max.graal.cri.*; @@ -111,7 +112,9 @@ targetGraph = buildSnippetGraph(targetMethod, runtime, target, pool, plan); } InliningUtil.inline(invoke, targetGraph, true); - new CanonicalizerPhase(target, runtime, null).apply(graph); + if (GraalOptions.OptCanonicalizer) { + new CanonicalizerPhase(target, runtime, null).apply(graph); + } } } @@ -119,7 +122,9 @@ Debug.dump(graph, "%s: %s", snippetRiMethod.name(), GraphBuilderPhase.class.getSimpleName()); new DeadCodeEliminationPhase().apply(graph); - new CanonicalizerPhase(target, runtime, null).apply(graph); + if (GraalOptions.OptCanonicalizer) { + new CanonicalizerPhase(target, runtime, null).apply(graph); + } // TODO (gd) remove when we have safepoint polling elimination for (LoopEndNode end : graph.getNodes(LoopEndNode.class)) { diff -r 597bc897257d -r c148bec9398a graal/com.oracle.max.graal.tests/src/com/oracle/max/graal/compiler/tests/MonitorTest.java --- a/graal/com.oracle.max.graal.tests/src/com/oracle/max/graal/compiler/tests/MonitorTest.java Mon Feb 13 23:15:53 2012 +0100 +++ b/graal/com.oracle.max.graal.tests/src/com/oracle/max/graal/compiler/tests/MonitorTest.java Mon Feb 13 15:39:20 2012 -0800 @@ -26,9 +26,10 @@ import java.util.*; -import junit.framework.AssertionFailedError; +import junit.framework.*; -import org.junit.*; +import org.junit.Assert; +import org.junit.Test; import com.oracle.max.graal.compiler.phases.*; import com.oracle.max.graal.graph.*;