< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop/src/org/graalvm/compiler/loop/LoopFragmentWhole.java

Print this page

        

@@ -22,22 +22,18 @@
  */
 
 
 package org.graalvm.compiler.loop;
 
-import jdk.internal.vm.compiler.collections.EconomicSet;
 import org.graalvm.compiler.core.common.cfg.Loop;
-import org.graalvm.compiler.debug.DebugContext;
 import org.graalvm.compiler.graph.Graph;
 import org.graalvm.compiler.graph.Graph.DuplicationReplacement;
 import org.graalvm.compiler.graph.Node;
 import org.graalvm.compiler.graph.NodeBitMap;
 import org.graalvm.compiler.nodes.EndNode;
 import org.graalvm.compiler.nodes.FixedNode;
 import org.graalvm.compiler.nodes.LoopBeginNode;
-import org.graalvm.compiler.nodes.LoopExitNode;
-import org.graalvm.compiler.nodes.StructuredGraph;
 import org.graalvm.compiler.nodes.ValueNode;
 import org.graalvm.compiler.nodes.cfg.Block;
 
 public class LoopFragmentWhole extends LoopFragment {
 

@@ -66,11 +62,11 @@
 
     @Override
     public NodeBitMap nodes() {
         if (nodes == null) {
             Loop<Block> loop = loop().loop();
-            nodes = LoopFragment.computeNodes(graph(), LoopFragment.toHirBlocks(loop.getBlocks()), LoopFragment.toHirExits(loop.getExits()));
+            nodes = LoopFragment.computeNodes(graph(), LoopFragment.toHirBlocks(loop.getBlocks()), LoopFragment.toHirBlocks(loop.getLoopExits()));
         }
         return nodes;
     }
 
     @Override

@@ -106,50 +102,12 @@
         }
         return loop().entryPoint();
     }
 
     @Override
-    protected void finishDuplication() {
-        // TODO (gd) ?
-    }
-
-    void cleanupLoopExits() {
-        LoopBeginNode loopBegin = original().loop().loopBegin();
-        assert nodes == null || nodes.contains(loopBegin);
-        StructuredGraph graph = loopBegin.graph();
-        if (graph.getGuardsStage() == StructuredGraph.GuardsStage.AFTER_FSA) {
-            // After FrameStateAssignment ControlFlowGraph treats loop exits differently which means
-            // that the LoopExitNodes can be in a block which post dominates the true loop exit. For
-            // cloning to work right they must agree.
-            EconomicSet<LoopExitNode> exits = EconomicSet.create();
-            for (Block exitBlock : original().loop().loop().getExits()) {
-                LoopExitNode exitNode = exitBlock.getLoopExit();
-                if (exitNode == null) {
-                    exitNode = graph.add(new LoopExitNode(loopBegin));
-                    graph.addAfterFixed(exitBlock.getBeginNode(), exitNode);
-                    if (nodes != null) {
-                        nodes.mark(exitNode);
-                    }
-                    graph.getDebug().dump(DebugContext.VERBOSE_LEVEL, graph, "Adjusting loop exit node for %s", loopBegin);
-                }
-                exits.add(exitNode);
-            }
-            for (LoopExitNode exitNode : loopBegin.loopExits()) {
-                if (!exits.contains(exitNode)) {
-                    if (nodes != null) {
-                        nodes.clear(exitNode);
-                    }
-                    graph.removeFixed(exitNode);
-                }
-            }
-        }
-
-    }
-
-    @Override
     protected void beforeDuplication() {
-        cleanupLoopExits();
+        // nothing to do
     }
 
     @Override
     public void insertBefore(LoopEx loop) {
         // TODO Auto-generated method stub
< prev index next >