< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop/src/org/graalvm/compiler/loop/LoopFragment.java
Print this page
@@ -20,15 +20,11 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package org.graalvm.compiler.loop;
-import java.util.ArrayDeque;
-import java.util.Collections;
-import java.util.Deque;
-import java.util.Iterator;
-
+import jdk.vm.ci.meta.TriState;
import org.graalvm.compiler.debug.GraalError;
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;
@@ -55,11 +51,14 @@
import org.graalvm.compiler.nodes.spi.NodeWithState;
import org.graalvm.compiler.nodes.virtual.CommitAllocationNode;
import org.graalvm.compiler.nodes.virtual.VirtualObjectNode;
import org.graalvm.util.EconomicMap;
-import jdk.vm.ci.meta.TriState;
+import java.util.ArrayDeque;
+import java.util.Collections;
+import java.util.Deque;
+import java.util.Iterator;
public abstract class LoopFragment {
private final LoopEx loop;
private final LoopFragment original;
@@ -76,11 +75,14 @@
this.loop = loop;
this.original = original;
this.nodesReady = false;
}
- public LoopEx loop() {
+ /**
+ * Return the original LoopEx for this fragment. For duplicated fragments this returns null.
+ */
+ protected LoopEx loop() {
return loop;
}
public abstract LoopFragment duplicate();
@@ -170,10 +172,12 @@
}
beforeDuplication();
NodeIterable<Node> nodesIterable = original().nodes();
duplicationMap = graph().addDuplicates(nodesIterable, graph(), nodesIterable.count(), dr);
finishDuplication();
+ nodes = new NodeBitMap(graph());
+ nodes.markAll(duplicationMap.getValues());
nodesReady = true;
} else {
// TODO (gd) apply fix ?
}
}
< prev index next >