From 5bac66161886f7a5292d69ea9ee3a8ae67e4cbe2 Mon Sep 17 00:00:00 2001 From: Lukas Stadler <lukas.stadler@oracle.com> Date: Mon, 22 May 2017 16:33:19 +0200 Subject: [PATCH] do not increase refcount on group generic calls --- .../oracle/truffle/r/nodes/builtin/base/FrameFunctions.java | 2 +- .../src/com/oracle/truffle/r/nodes/function/RCallNode.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/FrameFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/FrameFunctions.java index 45721e4ced..e7015136cf 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/FrameFunctions.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/FrameFunctions.java @@ -265,7 +265,7 @@ public class FrameFunctions { * starting point */ RCallNode callNode = (RCallNode) RASTUtils.unwrap(call.getRep()); - CallArgumentsNode callArgs = callNode.createArguments(null, false, false); + CallArgumentsNode callArgs = callNode.createArguments(null, false, true); ArgumentsSignature inputVarArgSignature = callArgs.containsVarArgsSymbol() ? CallArgumentsNode.getVarargsAndNames(cframe).getSignature() : null; RNode[] matchedArgNodes = ArgumentMatcher.matchArguments((RRootNode) definition.getRootNode(), callArgs, inputVarArgSignature, null, null, true).getArguments(); ArgumentsSignature sig = ((HasSignature) definition.getRootNode()).getSignature(); 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 7fa4270828..65788bca31 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 @@ -378,8 +378,8 @@ public abstract class RCallNode extends RCallBaseNode implements RSyntaxNode, RS return call.execute(frame, resultFunction, argAndNames, s3Args, null); } - protected CallArgumentsNode createArguments() { - return signature == null ? null : createArguments(null, false, false); + protected CallArgumentsNode createGenericDispatchArguments() { + return signature == null ? null : createArguments(null, false, true); } protected boolean isGroupGenericDispatch(RFunction function) { @@ -399,7 +399,7 @@ public abstract class RCallNode extends RCallBaseNode implements RSyntaxNode, RS @Specialization(guards = "isGroupGenericDispatch(function)") public Object callGroupGeneric(VirtualFrame frame, RFunction function, - @Cached("createArguments()") CallArgumentsNode callArguments, + @Cached("createGenericDispatchArguments()") CallArgumentsNode callArguments, @Cached("create()") ClassHierarchyNode classHierarchyNodeX, @Cached("createWithException()") S3FunctionLookupNode dispatchLookupX, @Cached("create()") ClassHierarchyNode classHierarchyNodeY, -- GitLab