--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/LoopExitNode.java 2019-03-12 08:09:47.955653434 +0100 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/LoopExitNode.java 2019-03-12 08:09:47.583651022 +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();