src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/LoopExitNode.java
equal
deleted
inserted
replaced
33 import org.graalvm.compiler.graph.NodeClass; |
33 import org.graalvm.compiler.graph.NodeClass; |
34 import org.graalvm.compiler.graph.iterators.NodeIterable; |
34 import org.graalvm.compiler.graph.iterators.NodeIterable; |
35 import org.graalvm.compiler.graph.spi.Simplifiable; |
35 import org.graalvm.compiler.graph.spi.Simplifiable; |
36 import org.graalvm.compiler.graph.spi.SimplifierTool; |
36 import org.graalvm.compiler.graph.spi.SimplifierTool; |
37 import org.graalvm.compiler.nodeinfo.NodeInfo; |
37 import org.graalvm.compiler.nodeinfo.NodeInfo; |
|
38 import org.graalvm.compiler.nodes.util.GraphUtil; |
38 |
39 |
39 @NodeInfo(allowedUsageTypes = {Association}, cycles = CYCLES_0, size = SIZE_0) |
40 @NodeInfo(allowedUsageTypes = {Association}, cycles = CYCLES_0, size = SIZE_0) |
40 public final class LoopExitNode extends BeginStateSplitNode implements IterableNodeType, Simplifiable { |
41 public final class LoopExitNode extends BeginStateSplitNode implements IterableNodeType, Simplifiable { |
41 |
42 |
42 public static final NodeClass<LoopExitNode> TYPE = NodeClass.create(LoopExitNode.class); |
43 public static final NodeClass<LoopExitNode> TYPE = NodeClass.create(LoopExitNode.class); |
100 } |
101 } |
101 return false; |
102 return false; |
102 }); |
103 }); |
103 } |
104 } |
104 |
105 |
|
106 public void removeExit() { |
|
107 this.removeProxies(); |
|
108 FrameState loopStateAfter = this.stateAfter(); |
|
109 graph().replaceFixedWithFixed(this, graph().add(new BeginNode())); |
|
110 if (loopStateAfter != null) { |
|
111 GraphUtil.tryKillUnused(loopStateAfter); |
|
112 } |
|
113 } |
|
114 |
105 @Override |
115 @Override |
106 public void simplify(SimplifierTool tool) { |
116 public void simplify(SimplifierTool tool) { |
107 Node prev = this.predecessor(); |
117 Node prev = this.predecessor(); |
108 while (tool.allUsagesAvailable() && prev instanceof BeginNode && prev.hasNoUsages()) { |
118 while (tool.allUsagesAvailable() && prev instanceof BeginNode && prev.hasNoUsages()) { |
109 AbstractBeginNode begin = (AbstractBeginNode) prev; |
119 AbstractBeginNode begin = (AbstractBeginNode) prev; |