diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RMissingHelper.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RMissingHelper.java
index 8eabdccc3ccbffe3010be2b0e08209fac31793c5..12483dc1a616ec10ca9a3bd043de8026d72b7c9f 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RMissingHelper.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RMissingHelper.java
@@ -151,9 +151,19 @@ public class RMissingHelper {
             }
 
             try {
-                // TODO Profile necessary here???
+                if (promise.isEvaluated()) {
+                    return false;
+                }
                 if (promise instanceof EagerPromise) {
-                    ((EagerPromise) promise).materialize();
+                    EagerPromise eagerPromise = (EagerPromise) promise;
+                    if (!eagerPromise.isDeoptimized()) {
+                        Object eagerValue = eagerPromise.getEagerValue();
+                        if (eagerValue instanceof RPromise) {
+                            return isMissingName((RPromise) eagerValue);
+                        } else {
+                            return isMissing(eagerValue);
+                        }
+                    }
                 }
                 // promise.materialize(globalMissingPromiseProfile);
                 promise.setUnderEvaluation(true);