Mercurial > hg > truffle
changeset 4589:c148bec9398a
Fixed computation of exact type information in PhiStampPhase.
author | Christian Haeubl <christian.haeubl@oracle.com> |
---|---|
date | Mon, 13 Feb 2012 15:39:20 -0800 |
parents | 597bc897257d |
children | d8d865b9de30 |
files | graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalCompiler.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/snippets/IntrinsifyArrayCopyPhase.java graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/IsTypeNode.java graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/type/StampFactory.java graal/com.oracle.max.graal.snippets/src/com/oracle/max/graal/snippets/Snippets.java graal/com.oracle.max.graal.tests/src/com/oracle/max/graal/compiler/tests/MonitorTest.java |
diffstat | 8 files changed, 26 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- 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) {
--- 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 {
--- 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; }
--- 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); } }
--- 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.*;
--- 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()) {
--- 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)) {
--- 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.*;