From a14070dbbe05987f8ba283e8dcefba349913b7a8 Mon Sep 17 00:00:00 2001 From: Zbynek Slajchrt <zbynek.slajchrt@oracle.com> Date: Tue, 18 Oct 2016 11:27:54 +0200 Subject: [PATCH] Combine fixes --- .../truffle/r/nodes/builtin/base/Combine.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Combine.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Combine.java index 9fce47208b..73afa80f8a 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Combine.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Combine.java @@ -151,6 +151,17 @@ public abstract class Combine extends RBuiltinNode { return result; } + @TruffleBoundary + @Specialization(limit = "COMBINE_CACHED_LIMIT", contains = "combineCached", guards = {"!recursive", "cachedPrecedence == precedence(args)"}) + protected Object combine(RArgsValuesAndNames args, @SuppressWarnings("unused") boolean recursive, // + @Cached("precedence(args, args.getLength())") int cachedPrecedence, // + @Cached("createCast(cachedPrecedence)") CastNode cast, // + @Cached("create()") BranchProfile naNameBranch, // + @Cached("create()") NACheck naNameCheck, // + @Cached("createBinaryProfile()") ConditionProfile hasNamesProfile) { + return combineCached(args, false, args.getSignature(), cachedPrecedence, cast, naNameBranch, naNameCheck, hasNamesProfile); + } + @Specialization(guards = "recursive") protected Object combineRecursive(RArgsValuesAndNames args, @SuppressWarnings("unused") boolean recursive, @Cached("create()") Combine recursiveCombine, // @@ -318,17 +329,6 @@ public abstract class Combine extends RBuiltinNode { return signature != null && signature.getNonNullCount() > 0; } - @TruffleBoundary - @Specialization(limit = "COMBINE_CACHED_LIMIT", contains = "combineCached", guards = "cachedPrecedence == precedence(args)") - protected Object combine(RArgsValuesAndNames args, boolean recursive, // - @Cached("precedence(args, args.getLength())") int cachedPrecedence, // - @Cached("createCast(cachedPrecedence)") CastNode cast, // - @Cached("create()") BranchProfile naNameBranch, // - @Cached("create()") NACheck naNameCheck, // - @Cached("createBinaryProfile()") ConditionProfile hasNamesProfile) { - return combineCached(args, false, args.getSignature(), cachedPrecedence, cast, naNameBranch, naNameCheck, hasNamesProfile); - } - @Specialization(guards = "!isArguments(args)") protected Object nonArguments(Object args, boolean recursive, @Cached("create()") Combine combine) { return combine.executeCombine(new RArgsValuesAndNames(new Object[]{args}, EMPTY_SIGNATURE), recursive); -- GitLab