src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/LoopExitNode.java
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/LoopExitNode.java Tue Mar 12 12:12:01 2019 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/LoopExitNode.java Tue Mar 12 19:17:42 2019 +0100
@@ -35,6 +35,7 @@
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 {
@@ -102,6 +103,15 @@
});
}
+ 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();