< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/LoopExitNode.java
Print this page
@@ -33,10 +33,11 @@
import org.graalvm.compiler.graph.NodeClass;
import org.graalvm.compiler.graph.iterators.NodeIterable;
import org.graalvm.compiler.graph.spi.Simplifiable;
import org.graalvm.compiler.graph.spi.SimplifierTool;
import org.graalvm.compiler.nodeinfo.NodeInfo;
+import org.graalvm.compiler.nodes.util.GraphUtil;
@NodeInfo(allowedUsageTypes = {Association}, cycles = CYCLES_0, size = SIZE_0)
public final class LoopExitNode extends BeginStateSplitNode implements IterableNodeType, Simplifiable {
public static final NodeClass<LoopExitNode> TYPE = NodeClass.create(LoopExitNode.class);
@@ -100,10 +101,19 @@
}
return false;
});
}
+ public void removeExit() {
+ this.removeProxies();
+ FrameState loopStateAfter = this.stateAfter();
+ graph().replaceFixedWithFixed(this, graph().add(new BeginNode()));
+ if (loopStateAfter != null) {
+ GraphUtil.tryKillUnused(loopStateAfter);
+ }
+ }
+
@Override
public void simplify(SimplifierTool tool) {
Node prev = this.predecessor();
while (tool.allUsagesAvailable() && prev instanceof BeginNode && prev.hasNoUsages()) {
AbstractBeginNode begin = (AbstractBeginNode) prev;
< prev index next >