# HG changeset patch # User Bernhard Urban # Date 1370532382 -7200 # Node ID 2c82f780bff5d1c40b1db19e03065ddedce8bf16 # Parent 491cd7d695398529d7fc4fdda5e48d8c2b80ee53 CanonicalizerPhase: pass flag to fullUnroll diff -r 491cd7d69539 -r 2c82f780bff5 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/HighTier.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/HighTier.java Thu Jun 06 16:30:41 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/HighTier.java Thu Jun 06 17:26:22 2013 +0200 @@ -37,7 +37,7 @@ CanonicalizerPhase canonicalizer = new CanonicalizerPhase(OptCanonicalizeReads.getValue()); if (FullUnroll.getValue()) { - addPhase(new LoopFullUnrollPhase()); + addPhase(new LoopFullUnrollPhase(OptCanonicalizeReads.getValue())); } if (OptTailDuplication.getValue()) { diff -r 491cd7d69539 -r 2c82f780bff5 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyNode.java Thu Jun 06 16:30:41 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyNode.java Thu Jun 06 17:26:22 2013 +0200 @@ -85,7 +85,7 @@ // additions, etc. HighTierContext context = new HighTierContext(tool.getRuntime(), tool.assumptions(), tool.getReplacements()); new CanonicalizerPhase(true).apply(snippetGraph, context); - new LoopFullUnrollPhase().apply(snippetGraph, context); + new LoopFullUnrollPhase(true).apply(snippetGraph, context); new CanonicalizerPhase(true).apply(snippetGraph, context); } diff -r 491cd7d69539 -r 2c82f780bff5 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopTransformations.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopTransformations.java Thu Jun 06 16:30:41 2013 +0200 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopTransformations.java Thu Jun 06 17:26:22 2013 +0200 @@ -53,7 +53,7 @@ loop.inside().duplicate().insertBefore(loop); } - public static void fullUnroll(LoopEx loop, MetaAccessProvider runtime, Assumptions assumptions) { + public static void fullUnroll(LoopEx loop, MetaAccessProvider runtime, Assumptions assumptions, boolean canonicalizeReads) { // assert loop.isCounted(); //TODO (gd) strenghten : counted with known trip count int iterations = 0; LoopBeginNode loopBegin = loop.loopBegin(); @@ -61,7 +61,7 @@ while (!loopBegin.isDeleted()) { int mark = graph.getMark(); peel(loop); - new CanonicalizerPhase.Instance(runtime, assumptions, OptCanonicalizeReads.getValue(), mark, null).apply(graph); + new CanonicalizerPhase.Instance(runtime, assumptions, canonicalizeReads, mark, null).apply(graph); if (iterations++ > UNROLL_LIMIT || graph.getNodeCount() > MaximumDesiredSize.getValue() * 3) { throw new BailoutException("FullUnroll : Graph seems to grow out of proportion"); } diff -r 491cd7d69539 -r 2c82f780bff5 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopFullUnrollPhase.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopFullUnrollPhase.java Thu Jun 06 16:30:41 2013 +0200 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopFullUnrollPhase.java Thu Jun 06 17:26:22 2013 +0200 @@ -31,8 +31,10 @@ public class LoopFullUnrollPhase extends BasePhase { private static final DebugMetric FULLY_UNROLLED_LOOPS = Debug.metric("FullUnrolls"); + private final boolean canonicalizeReads; - public LoopFullUnrollPhase() { + public LoopFullUnrollPhase(boolean canonicalizeReads) { + this.canonicalizeReads = canonicalizeReads; } @Override @@ -46,7 +48,7 @@ for (LoopEx loop : dataCounted.countedLoops()) { if (LoopPolicies.shouldFullUnroll(loop)) { Debug.log("FullUnroll %s", loop); - LoopTransformations.fullUnroll(loop, context.getRuntime(), context.getAssumptions()); + LoopTransformations.fullUnroll(loop, context.getRuntime(), context.getAssumptions(), canonicalizeReads); FULLY_UNROLLED_LOOPS.increment(); Debug.dump(graph, "After fullUnroll %s", loop); peeled = true; diff -r 491cd7d69539 -r 2c82f780bff5 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Thu Jun 06 16:30:41 2013 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Thu Jun 06 17:26:22 2013 +0200 @@ -441,7 +441,7 @@ if (loopBegin != null) { LoopEx loop = new LoopsData(snippetCopy).loop(loopBegin); int mark = snippetCopy.getMark(); - LoopTransformations.fullUnroll(loop, runtime, replacements.getAssumptions()); + LoopTransformations.fullUnroll(loop, runtime, replacements.getAssumptions(), true); new CanonicalizerPhase.Instance(runtime, replacements.getAssumptions(), true, mark, null).apply(snippetCopy); } FixedNode explodeLoopNext = explodeLoop.next();