diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/qirinterface/QIRInterface.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/qirinterface/QIRInterface.java
index eb6b4daac8227ec35d3fb8b912bd96505881749e..f198ec405ac916972f10553f30b0e9dcb941036c 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/qirinterface/QIRInterface.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/qirinterface/QIRInterface.java
@@ -222,10 +222,8 @@ public final class QIRInterface {
         if (value instanceof REnvironment) {
             REnvironment env = (REnvironment) value;
             final Object queryId = env.get("queryId");
-            if (queryId != null) { // The object is a query
-                final int qid = ((Long) queryId).intValue();
-                return normalize(RContext.queries.get(qid), RContext.envs.get(qid));
-            }
+            if (queryId != null) // The object is a query
+                return normalize(RContext.queries.get((Integer) queryId), RContext.envs.get((Integer) queryId));
             final String tableName = (String) env.get("tableName");
             final String schemaName = (String) env.get("schemaName");
             final String dbName = (String) env.get("dbName");
@@ -291,7 +289,9 @@ public final class QIRInterface {
         }
         if (value instanceof RPromise) {
             final RPromise fun = (RPromise) value;
-            return RToQIRType(src, fun.getValue());
+            if (fun.isEvaluated())
+                return RToQIRType(src, fun.getValue());
+            return RToQIRType(src, fun.getClosure().eval(fun.getFrame()));
         }
         throw new RuntimeException("Unsupported value: " + value);
     }