Mercurial > hg > graal-compiler
changeset 19977:2727a2be2391
Truffle: simplify loop node implementation.
author | Christian Humer <christian.humer@oracle.com> |
---|---|
date | Fri, 20 Mar 2015 19:00:50 +0100 |
parents | 596f6f9a7412 |
children | 4cd28f6e3485 |
files | graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/OptimizedLoopNode.java graal/com.oracle.truffle.api/src/com/oracle/truffle/api/impl/DefaultLoopNode.java graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/LoopNode.java |
diffstat | 3 files changed, 20 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- 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++; }
--- 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 } }
--- 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(); }