diff --git a/com.oracle.truffle.r.native/fficall/src/common/Rinternals_common.c b/com.oracle.truffle.r.native/fficall/src/common/Rinternals_common.c index b4c88dff801bb60a539fdf0415e6e698ed2209e4..db517f214df9efa9a74ba59adb4ef0b0d1d134d1 100644 --- a/com.oracle.truffle.r.native/fficall/src/common/Rinternals_common.c +++ b/com.oracle.truffle.r.native/fficall/src/common/Rinternals_common.c @@ -111,6 +111,8 @@ void *DATAPTR(SEXP x) { return REAL(x); } else if (type == LGLSXP) { return LOGICAL(x); + } else if (type == RAWSXP) { + return RAW(x); } else { printf("DATAPTR %d\n", type); unimplemented("R_DATAPTR"); diff --git a/com.oracle.truffle.r.native/fficall/src/common/unimplemented.c b/com.oracle.truffle.r.native/fficall/src/common/unimplemented.c index 4dbe601ee0e0828bf610d94431bff830a46a6e3e..718838dbdddc7dd888eb27d0c1915723f4504652 100644 --- a/com.oracle.truffle.r.native/fficall/src/common/unimplemented.c +++ b/com.oracle.truffle.r.native/fficall/src/common/unimplemented.c @@ -75,6 +75,13 @@ addInputHandler(InputHandler *handlers, int fd, InputHandlerProc handler, return NULL; } +int +removeInputHandler(InputHandler **handlers, InputHandler *it) +{ + unimplemented("removeInputHandler"); + return NULL; +} + void setup_RdotApp(void) { unimplemented("setup_RdotApp"); } diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsFunction.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsFunction.java index 6f9d7397c1b608445af908913e2243fe6c0ff088..f996bc6bb45487328c1a51db140550f3f37c045a 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsFunction.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsFunction.java @@ -129,7 +129,7 @@ public abstract class AsFunction extends RBuiltinNode.Arg2 { RBaseNode body; Object bodyObject = x.getDataAtAsObject(x.getLength() - 1); if (bodyObject instanceof RLanguage) { - body = ((RLanguage) x.getDataAtAsObject(x.getLength() - 1)).getRep(); + body = (RBaseNode) RContext.getASTBuilder().process(((RLanguage) x.getDataAtAsObject(x.getLength() - 1)).getRep().asRSyntaxNode()); } else if (bodyObject instanceof RSymbol) { body = RContext.getASTBuilder().lookup(RSyntaxNode.LAZY_DEPARSE, ((RSymbol) bodyObject).getName(), false).asRNode(); } else {