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();
 
 }