# HG changeset patch # User Christian Humer # Date 1426874450 -3600 # Node ID 2727a2be239150f7173e97cdc8e70ecf0d700181 # Parent 596f6f9a7412a82416a1dc6ac5389bbfce1d329d Truffle: simplify loop node implementation. diff -r 596f6f9a7412 -r 2727a2be2391 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedLoopNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedLoopNode.java Fri Mar 20 18:59:40 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedLoopNode.java Fri Mar 20 19:00:50 2015 +0100 @@ -32,15 +32,22 @@ */ public final class OptimizedLoopNode extends LoopNode { - public OptimizedLoopNode(RepeatingNode body) { - super(body); + @Child private RepeatingNode repeatingNode; + + public OptimizedLoopNode(RepeatingNode repeatingNode) { + this.repeatingNode = repeatingNode; + } + + @Override + public RepeatingNode getRepeatingNode() { + return repeatingNode; } @Override public void executeLoop(VirtualFrame frame) { int loopCount = 0; try { - while (executeRepeatingNode(frame)) { + while (repeatingNode.executeRepeating(frame)) { if (CompilerDirectives.inInterpreter()) { loopCount++; } diff -r 596f6f9a7412 -r 2727a2be2391 graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultLoopNode.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultLoopNode.java Fri Mar 20 18:59:40 2015 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultLoopNode.java Fri Mar 20 19:00:50 2015 +0100 @@ -29,13 +29,20 @@ public final class DefaultLoopNode extends LoopNode { + @Child private RepeatingNode repeatNode; + public DefaultLoopNode(RepeatingNode repeatNode) { - super(repeatNode); + this.repeatNode = repeatNode; + } + + @Override + public RepeatingNode getRepeatingNode() { + return repeatNode; } @Override public void executeLoop(VirtualFrame frame) { - while (executeRepeatingNode(frame)) { + while (repeatNode.executeRepeating(frame)) { // Empty } } diff -r 596f6f9a7412 -r 2727a2be2391 graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/LoopNode.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/LoopNode.java Fri Mar 20 18:59:40 2015 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/LoopNode.java Fri Mar 20 19:00:50 2015 +0100 @@ -31,20 +31,8 @@ */ public abstract class LoopNode extends Node { - @Child protected RepeatingNode repeatingNode; - - public LoopNode(RepeatingNode repeatingNode) { - this.repeatingNode = repeatingNode; - } - public abstract void executeLoop(VirtualFrame frame); - protected final boolean executeRepeatingNode(VirtualFrame frame) { - return getRepeatingNode().executeRepeating(frame); - } - - public final RepeatingNode getRepeatingNode() { - return repeatingNode; - } + public abstract RepeatingNode getRepeatingNode(); }