# HG changeset patch # User Gilles Duboscq # Date 1327962599 -3600 # Node ID 97e0fb1f4906568c4e811b0517f390408047909c # Parent 648a7873cea2fe565de910ee1fb27a8b7d60a3db Make Array copy intrinsifier active again, fix format string in canonicalizer diff -r 648a7873cea2 -r 97e0fb1f4906 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 Mon Jan 30 22:17:01 2012 +0100 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/CanonicalizerPhase.java Mon Jan 30 23:29:59 2012 +0100 @@ -65,7 +65,7 @@ Tool tool = new Tool(nodeWorkList, runtime, target, assumptions); for (Node node : nodeWorkList) { if (node instanceof Canonicalizable) { - Debug.log("Canonicalizer: work on %1s"); + Debug.log("Canonicalizer: work on %s", node); graph.mark(); ValueNode canonical = ((Canonicalizable) node).canonical(tool); // cases: original node: diff -r 648a7873cea2 -r 97e0fb1f4906 graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/bridge/VMToCompilerImpl.java --- a/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/bridge/VMToCompilerImpl.java Mon Jan 30 22:17:01 2012 +0100 +++ b/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/bridge/VMToCompilerImpl.java Mon Jan 30 23:29:59 2012 +0100 @@ -49,6 +49,7 @@ private final Compiler compiler; private int compiledMethodCount; + private IntrinsifyArrayCopyPhase intrinsifyArrayCopy; public final HotSpotTypePrimitive typeBoolean; public final HotSpotTypePrimitive typeChar; @@ -110,6 +111,7 @@ // Install intrinsics. HotSpotRuntime runtime = (HotSpotRuntime) compiler.getCompiler().runtime; if (GraalOptions.Intrinsify) { + this.intrinsifyArrayCopy = new IntrinsifyArrayCopyPhase(runtime); GraalIntrinsics.installIntrinsics(runtime, runtime.getCompiler().getTarget(), PhasePlan.DEFAULT); Snippets.install(runtime, runtime.getCompiler().getTarget(), new SystemSnippets(), PhasePlan.DEFAULT); Snippets.install(runtime, runtime.getCompiler().getTarget(), new UnsafeSnippets(), PhasePlan.DEFAULT); @@ -239,7 +241,7 @@ public void run() { try { - PhasePlan plan = new PhasePlan(); + PhasePlan plan = getDefaultPhasePlan(); GraphBuilderPhase graphBuilderPhase = new GraphBuilderPhase(compiler.getRuntime()); plan.addPhase(PhasePosition.AFTER_PARSING, graphBuilderPhase); long startTime = 0; @@ -376,4 +378,10 @@ public CiConstant createCiConstantObject(Object object) { return CiConstant.forObject(object); } + + private PhasePlan getDefaultPhasePlan() { + PhasePlan phasePlan = new PhasePlan(); + phasePlan.addPhase(PhasePosition.HIGH_LEVEL, intrinsifyArrayCopy); + return phasePlan; + } } diff -r 648a7873cea2 -r 97e0fb1f4906 graal/com.oracle.max.graal.snippets/src/com/oracle/max/graal/snippets/GraalIntrinsics.java --- a/graal/com.oracle.max.graal.snippets/src/com/oracle/max/graal/snippets/GraalIntrinsics.java Mon Jan 30 22:17:01 2012 +0100 +++ b/graal/com.oracle.max.graal.snippets/src/com/oracle/max/graal/snippets/GraalIntrinsics.java Mon Jan 30 23:29:59 2012 +0100 @@ -39,7 +39,6 @@ Snippets.install(runtime, target, new FloatSnippets(), plan); Snippets.install(runtime, target, new NodeClassSnippets(), plan); Snippets.install(runtime, target, new ArrayCopySnippets(), plan); - plan.addPhase(PhasePosition.HIGH_LEVEL, new IntrinsifyArrayCopyPhase(runtime)); } } } diff -r 648a7873cea2 -r 97e0fb1f4906 graal/com.oracle.max.graal.snippets/src/com/oracle/max/graal/snippets/IntrinsifyArrayCopyPhase.java --- a/graal/com.oracle.max.graal.snippets/src/com/oracle/max/graal/snippets/IntrinsifyArrayCopyPhase.java Mon Jan 30 22:17:01 2012 +0100 +++ b/graal/com.oracle.max.graal.snippets/src/com/oracle/max/graal/snippets/IntrinsifyArrayCopyPhase.java Mon Jan 30 23:29:59 2012 +0100 @@ -29,6 +29,7 @@ import com.oracle.max.graal.compiler.phases.*; import com.oracle.max.graal.compiler.util.*; import com.oracle.max.graal.cri.*; +import com.oracle.max.graal.debug.*; import com.oracle.max.graal.graph.*; import com.oracle.max.graal.nodes.*; import com.oracle.max.graal.nodes.java.*; @@ -71,6 +72,7 @@ @Override protected void run(StructuredGraph graph) { + boolean hits = false; for (MethodCallTargetNode methodCallTarget : graph.getNodes(MethodCallTargetNode.class)) { RiResolvedMethod targetMethod = methodCallTarget.targetMethod(); RiResolvedMethod snippetMethod = null; @@ -115,10 +117,13 @@ if (snippetMethod != null) { StructuredGraph snippetGraph = (StructuredGraph) snippetMethod.compilerStorage().get(Graph.class); assert snippetGraph != null : "ArrayCopySnippets should be installed"; - //TTY.println(" > Intinsify"); + hits = true; + Debug.log(" > Intinsify (%s)", snippetMethod.signature().argumentTypeAt(0, snippetMethod.holder()).componentType()); InliningUtil.inline(methodCallTarget.invoke(), snippetGraph, false); } } - new CanonicalizerPhase(null, runtime, null).apply(graph); + if (hits) { + new CanonicalizerPhase(null, runtime, null).apply(graph); + } } }