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 82340bf9e9f7dc2344c446c77a9b7a17de087656..3faef1fa51cf274acff388d140af5cbb59415e10 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
@@ -459,7 +459,10 @@ public abstract class RCallNode extends RNode {
         }
 
         @Override
+        @SlowPath
         public Object execute(VirtualFrame frame, RFunction currentFunction) {
+            CompilerDirectives.transferToInterpreter();
+
             if (lastCallTarget == currentFunction.getTarget() && lastMatchedArgs != null) {
                 // poor man's caching succeeded - same function: no re-match needed
                 Object[] argsObject = RArguments.create(currentFunction, getSourceSection(), lastMatchedArgs.doExecuteArray(frame), lastMatchedArgs.getNames());
@@ -639,7 +642,7 @@ public abstract class RCallNode extends RNode {
         @Override
         @SlowPath
         public Object execute(VirtualFrame frame, RFunction currentFunction) {
-            CompilerAsserts.neverPartOfCompilation();
+            CompilerDirectives.transferToInterpreter();
 
             // Function and arguments may change every call: Flatt'n'Match on SlowPath! :-/
             UnrolledVariadicArguments argsValuesAndNames = suppliedArgs.executeFlatten(frame);