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); }