diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java index 09fd6d12808e666d27883d4fcec18bf34c28edd5..338251a3ff4be1790e17ee1d2f8f6361ee9a7ca0 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java @@ -619,18 +619,17 @@ public final class ReadVariableNode extends RBaseNode { LookupResult lookup = FrameSlotChangeMonitor.lookup(variableFrame, identifier); if (lookup != null) { try { - if (lookup.getValue() instanceof RPromise) { - evalPromiseSlowPathWithName(identifierAsString, frame, (RPromise) lookup.getValue()); + Object value = lookup.getValue(); + if (value instanceof RPromise) { + evalPromiseSlowPathWithName(identifierAsString, frame, (RPromise) value); } - if (lookup != null) { - if (lookup instanceof FrameAndSlotLookupResult) { - if (checkTypeSlowPath(frame, lookup.getValue())) { - return new FrameAndSlotLookupLevel((FrameAndSlotLookupResult) lookup); - } - } else { - if (lookup.getValue() == null || checkTypeSlowPath(frame, lookup.getValue())) { - return new LookupLevel(lookup); - } + if (lookup instanceof FrameAndSlotLookupResult) { + if (checkTypeSlowPath(frame, value)) { + return new FrameAndSlotLookupLevel((FrameAndSlotLookupResult) lookup); + } + } else { + if (value == null || checkTypeSlowPath(frame, value)) { + return new LookupLevel(lookup); } } } catch (InvalidAssumptionException e) {