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 279df5eb5da3d23e4d62f46ffe75bca1bef183c4..3cc29b032c01e7ffe821b3ba33c296fc0c48044c 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);