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 bc38674178f38b0a86eb38ad494f1779ad74dbd0..deb22fedc6ec8eb660b1ac3195d127d86619fe9c 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
@@ -178,6 +178,16 @@ public abstract class Combine extends RBuiltinNode.Arg2 {
         return combineCached(args, false, args.getSignature(), cachedPrecedence, cast, naNameBranch, hasNamesProfile, getNamesNode);
     }
 
+    @TruffleBoundary
+    @Specialization(replaces = "combine", guards = {"!recursive"})
+    protected Object combineGeneric(RArgsValuesAndNames args, @SuppressWarnings("unused") boolean recursive,
+                    @Cached("create()") BranchProfile naNameBranch,
+                    @Cached("createBinaryProfile()") ConditionProfile hasNamesProfile,
+                    @Cached("create()") GetNamesAttributeNode getNamesNode) {
+        int cachedPrecedence = precedence(args, args.getLength());
+        return combineCached(args, false, args.getSignature(), cachedPrecedence, createCast(cachedPrecedence), naNameBranch, hasNamesProfile, getNamesNode);
+    }
+
     @Specialization(guards = "recursive")
     protected Object combineRecursive(RArgsValuesAndNames args, @SuppressWarnings("unused") boolean recursive,
                     @Cached("create()") Combine recursiveCombine,
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/primitive/BinaryMapNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/primitive/BinaryMapNode.java
index 501e831a8fe65bc24ea6d8ac9dec3e59c78340ba..25756e21dfeccabbc99ffe1c0762188b877e64d4 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/primitive/BinaryMapNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/primitive/BinaryMapNode.java
@@ -496,7 +496,7 @@ abstract class VectorMapBinaryInternalNode extends RBaseNode {
                     @Cached("createCountingProfile()") LoopConditionProfile leftProfile,
                     @Cached("createCountingProfile()") LoopConditionProfile rightProfile,
                     @Cached("createBinaryProfile()") ConditionProfile smallRemainderProfile) {
-        assert result != right || rightLength == leftLength;
+        assert result.getLength(resultIter) == leftLength;
         leftProfile.profileCounted(leftLength);
         rightProfile.profileCounted(rightLength);
         while (leftProfile.inject(leftIter.getIndex() + 1 < leftLength)) {
@@ -527,7 +527,7 @@ abstract class VectorMapBinaryInternalNode extends RBaseNode {
                     @Cached("createCountingProfile()") LoopConditionProfile leftProfile,
                     @Cached("createCountingProfile()") LoopConditionProfile rightProfile,
                     @Cached("createBinaryProfile()") ConditionProfile smallRemainderProfile) {
-        assert result != left || rightLength == leftLength;
+        assert result.getLength(resultIter) == rightLength;
         leftProfile.profileCounted(leftLength);
         rightProfile.profileCounted(rightLength);
         while (rightProfile.inject(rightIter.getIndex() + 1 < rightLength)) {