src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop.phases/src/org/graalvm/compiler/loop/phases/LoopFullUnrollPhase.java
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop.phases/src/org/graalvm/compiler/loop/phases/LoopFullUnrollPhase.java Thu Jun 27 03:10:52 2019 +0200
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop.phases/src/org/graalvm/compiler/loop/phases/LoopFullUnrollPhase.java Thu Jun 27 03:33:44 2019 +0200
@@ -24,14 +24,15 @@
package org.graalvm.compiler.loop.phases;
+import org.graalvm.compiler.core.common.GraalOptions;
import org.graalvm.compiler.debug.CounterKey;
import org.graalvm.compiler.debug.DebugContext;
import org.graalvm.compiler.loop.LoopEx;
import org.graalvm.compiler.loop.LoopPolicies;
import org.graalvm.compiler.loop.LoopsData;
import org.graalvm.compiler.nodes.StructuredGraph;
+import org.graalvm.compiler.nodes.spi.CoreProviders;
import org.graalvm.compiler.phases.common.CanonicalizerPhase;
-import org.graalvm.compiler.phases.tiers.PhaseContext;
public class LoopFullUnrollPhase extends LoopPhase<LoopPolicies> {
@@ -44,26 +45,28 @@
}
@Override
- protected void run(StructuredGraph graph, PhaseContext context) {
- DebugContext debug = graph.getDebug();
- if (graph.hasLoops()) {
- boolean peeled;
- do {
- peeled = false;
- final LoopsData dataCounted = new LoopsData(graph);
- dataCounted.detectedCountedLoops();
- for (LoopEx loop : dataCounted.countedLoops()) {
- if (getPolicies().shouldFullUnroll(loop)) {
- debug.log("FullUnroll %s", loop);
- LoopTransformations.fullUnroll(loop, context, canonicalizer);
- FULLY_UNROLLED_LOOPS.increment(debug);
- debug.dump(DebugContext.DETAILED_LEVEL, graph, "FullUnroll %s", loop);
- peeled = true;
- break;
+ protected void run(StructuredGraph graph, CoreProviders context) {
+ if (GraalOptions.FullUnroll.getValue(graph.getOptions())) {
+ DebugContext debug = graph.getDebug();
+ if (graph.hasLoops()) {
+ boolean peeled;
+ do {
+ peeled = false;
+ final LoopsData dataCounted = new LoopsData(graph);
+ dataCounted.detectedCountedLoops();
+ for (LoopEx loop : dataCounted.countedLoops()) {
+ if (getPolicies().shouldFullUnroll(loop)) {
+ debug.log("FullUnroll %s", loop);
+ LoopTransformations.fullUnroll(loop, context, canonicalizer);
+ FULLY_UNROLLED_LOOPS.increment(debug);
+ debug.dump(DebugContext.DETAILED_LEVEL, graph, "FullUnroll %s", loop);
+ peeled = true;
+ break;
+ }
}
- }
- dataCounted.deleteUnusedNodes();
- } while (peeled);
+ dataCounted.deleteUnusedNodes();
+ } while (peeled);
+ }
}
}