From 50414729fbd2bc49c42a78090d1d51049a31ed0e Mon Sep 17 00:00:00 2001 From: Christian Humer <christian.humer@oracle.com> Date: Mon, 19 Oct 2015 20:37:13 +0200 Subject: [PATCH] Handle foreign execution errors less severe in FastR. --- .../src/com/oracle/truffle/r/nodes/function/RCallNode.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java index 15e52e7eb2..8476cbdf4e 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java @@ -258,7 +258,12 @@ public final class RCallNode extends RNode implements RSyntaxNode { foreignCall = insert(Message.createExecute(argumentsArray.length).createNode()); foreignCallArgCount = argumentsArray.length; } - return ForeignAccess.execute(foreignCall, frame, (TruffleObject) functionObject, argumentsArray); + try { + return ForeignAccess.execute(foreignCall, frame, (TruffleObject) functionObject, argumentsArray); + } catch (Throwable e) { + errorProfile.enter(); + throw RError.error(this, RError.Message.GENERIC, "Foreign function failed: " + e.getMessage() != null ? e.getMessage() : e.toString()); + } } else { errorProfile.enter(); throw RError.error(this, RError.Message.APPLY_NON_FUNCTION); -- GitLab