diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/InternalNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/InternalNode.java
index 3be03b99133e8b48791416edae3f4fbcfcbdcb0b..1139df347c88ba98ffad02fb0074ffca2aa536b4 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/InternalNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/InternalNode.java
@@ -242,7 +242,8 @@ public abstract class InternalNode extends OperatorNode {
         protected Object[] prepareArgs(VirtualFrame frame) {
             Object[] args = new Object[arguments.length];
             for (int i = 0; i < args.length; i++) {
-                args[i] = arguments[i].execute(frame);
+                Object execute = arguments[i].execute(frame);
+                args[i] = execute;
             }
             return args;
         }
@@ -300,11 +301,13 @@ public abstract class InternalNode extends OperatorNode {
             Object[] args = new Object[factory.getSignature().getLength()];
 
             for (int i = 0; i < args.length - 1; i++) {
-                args[i] = arguments[i].execute(frame);
+                Object arg = arguments[i].execute(frame);
+                args[i] = arg;
             }
             Object[] varArgs = new Object[arguments.length - (factory.getSignature().getLength() - 1)];
             for (int i = 0; i < varArgs.length; i++) {
-                varArgs[i] = arguments[args.length - 1 + i].execute(frame);
+                Object arg = arguments[args.length - 1 + i].execute(frame);
+                varArgs[i] = arg;
             }
             args[args.length - 1] = new RArgsValuesAndNames(varArgs, ArgumentsSignature.empty(varArgs.length));
             return args;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/PromiseNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/PromiseNode.java
index c3a0a12254405c034ad0cbd1c12137c5ebe61d76..4421b005683f46460eac43bb97e732a92401b227 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/PromiseNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/PromiseNode.java
@@ -540,10 +540,10 @@ public abstract class PromiseNode extends RNode {
                     evaluatedArgs[i] = argValue;
                 } else {
                     size++;
-                    evaluatedArgs[i] = promiseCheckHelper.checkEvaluate(frame, argValue);
+                    Object arg = promiseCheckHelper.checkEvaluate(frame, argValue);
+                    evaluatedArgs[i] = arg;
                 }
                 if (evaluatedArgs[i] == null) {
-                    CompilerDirectives.transferToInterpreterAndInvalidate();
                     throw RInternalError.shouldNotReachHere("evaluated argument must not be null");
                 }
             }
@@ -565,10 +565,10 @@ public abstract class PromiseNode extends RNode {
                     evaluatedArgs[i] = argValue;
                 } else {
                     size++;
-                    evaluatedArgs[i] = promiseCheckHelper.checkEvaluate(frame, argValue);
+                    Object arg = promiseCheckHelper.checkEvaluate(frame, argValue);
+                    evaluatedArgs[i] = arg;
                 }
                 if (evaluatedArgs[i] == null) {
-                    CompilerDirectives.transferToInterpreterAndInvalidate();
                     throw RInternalError.shouldNotReachHere("evaluated argument must not be null");
                 }
             }