src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop.phases/src/org/graalvm/compiler/loop/phases/LoopPartialUnrollPhase.java
equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
31 import org.graalvm.compiler.loop.LoopPolicies; |
31 import org.graalvm.compiler.loop.LoopPolicies; |
32 import org.graalvm.compiler.loop.LoopsData; |
32 import org.graalvm.compiler.loop.LoopsData; |
33 import org.graalvm.compiler.nodes.LoopBeginNode; |
33 import org.graalvm.compiler.nodes.LoopBeginNode; |
34 import org.graalvm.compiler.nodes.StructuredGraph; |
34 import org.graalvm.compiler.nodes.StructuredGraph; |
35 import org.graalvm.compiler.nodes.extended.OpaqueNode; |
35 import org.graalvm.compiler.nodes.extended.OpaqueNode; |
|
36 import org.graalvm.compiler.nodes.spi.CoreProviders; |
36 import org.graalvm.compiler.phases.common.CanonicalizerPhase; |
37 import org.graalvm.compiler.phases.common.CanonicalizerPhase; |
37 import org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener; |
38 import org.graalvm.compiler.phases.common.util.EconomicSetNodeEventListener; |
38 import org.graalvm.compiler.phases.tiers.PhaseContext; |
|
39 |
39 |
40 public class LoopPartialUnrollPhase extends LoopPhase<LoopPolicies> { |
40 public class LoopPartialUnrollPhase extends LoopPhase<LoopPolicies> { |
41 |
41 |
42 private final CanonicalizerPhase canonicalizer; |
42 private final CanonicalizerPhase canonicalizer; |
43 |
43 |
46 this.canonicalizer = canonicalizer; |
46 this.canonicalizer = canonicalizer; |
47 } |
47 } |
48 |
48 |
49 @Override |
49 @Override |
50 @SuppressWarnings("try") |
50 @SuppressWarnings("try") |
51 protected void run(StructuredGraph graph, PhaseContext context) { |
51 protected void run(StructuredGraph graph, CoreProviders context) { |
52 if (graph.hasLoops()) { |
52 if (graph.hasLoops()) { |
53 EconomicSetNodeEventListener listener = new EconomicSetNodeEventListener(); |
53 EconomicSetNodeEventListener listener = new EconomicSetNodeEventListener(); |
54 boolean changed = true; |
54 boolean changed = true; |
55 EconomicMap<LoopBeginNode, OpaqueNode> opaqueUnrolledStrides = null; |
55 EconomicMap<LoopBeginNode, OpaqueNode> opaqueUnrolledStrides = null; |
56 while (changed) { |
56 while (changed) { |