From 2f54e6ddf0ed05200b9353e3b297893e3d10f209 Mon Sep 17 00:00:00 2001
From: Lukas Stadler <lukas.stadler@oracle.com>
Date: Wed, 20 Aug 2014 11:15:16 +0200
Subject: [PATCH] remove unnecessary use of AbsentFrameSlotNode in
 ReadVariableNonFrame

---
 .../r/nodes/access/ReadVariableNode.java        | 17 ++++-------------
 1 file changed, 4 insertions(+), 13 deletions(-)

diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariableNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariableNode.java
index 279df5eb5d..3cc29b032c 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariableNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariableNode.java
@@ -31,7 +31,6 @@ import com.oracle.truffle.api.frame.*;
 import com.oracle.truffle.api.nodes.*;
 import com.oracle.truffle.api.source.*;
 import com.oracle.truffle.r.nodes.*;
-import com.oracle.truffle.r.nodes.access.FrameSlotNode.AbsentFrameSlotNode;
 import com.oracle.truffle.r.nodes.access.ReadVariableNodeFactory.BuiltinFunctionVariableNodeFactory;
 import com.oracle.truffle.r.nodes.access.ReadVariableNodeFactory.ReadAndCopySuperVariableNodeFactory;
 import com.oracle.truffle.r.nodes.access.ReadVariableNodeFactory.ReadLocalVariableNodeFactory;
@@ -336,31 +335,23 @@ public abstract class ReadVariableNode extends RNode implements VisibilityContro
 
         @Child private ReadVariableNode readNode;
         @Child private UnresolvedReadVariableNode unresolvedNode;
-        @Children private final AbsentFrameSlotNode[] absentFrameSlotNodes;
+        private final Assumption[] absentFrameSlotAssumptions;
         private final Symbol symbol;
 
         ReadVariableNonFrameNode(List<Assumption> assumptions, ReadVariableNode readNode, UnresolvedReadVariableNode unresolvedNode, Symbol symbol) {
             this.readNode = readNode;
             this.unresolvedNode = unresolvedNode;
-            this.absentFrameSlotNodes = wrapAssumptions(assumptions);
+            this.absentFrameSlotAssumptions = assumptions.toArray(new Assumption[assumptions.size()]);
             this.symbol = symbol;
         }
 
-        private AbsentFrameSlotNode[] wrapAssumptions(List<Assumption> assumptions) {
-            AbsentFrameSlotNode[] nodes = new AbsentFrameSlotNode[assumptions.size()];
-            for (int i = 0; i < assumptions.size(); i++) {
-                nodes[i] = new AbsentFrameSlotNode(assumptions.get(i), symbol);
-            }
-            return nodes;
-        }
-
         @ExplodeLoop
         @Override
         public Object execute(VirtualFrame frame) {
             controlVisibility();
             try {
-                for (int i = 0; i < absentFrameSlotNodes.length; i++) {
-                    absentFrameSlotNodes[i].getAssumption().check();
+                for (Assumption assumption : absentFrameSlotAssumptions) {
+                    assumption.check();
                 }
             } catch (InvalidAssumptionException e) {
                 return replace(unresolvedNode).execute(frame);
-- 
GitLab