diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/APerm.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/APerm.java
index c8bdd10f11b20611384f9ebe538b69db8e76fa49..ce7773cd0e722bf1364625862abc50595b80845f 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/APerm.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/APerm.java
@@ -162,7 +162,11 @@ public abstract class APerm extends RBuiltinNode.Arg3 {
         RList dimNames = getDimNamesNode.getDimNames(vector);
         if (setDimNamesProfile.profile(dimNames != null)) {
             if (setDimNames == null) {
+                CompilerDirectives.transferToInterpreterAndInvalidate();
                 setDimNames = insert(SetDimNamesAttributeNode.create());
+            }
+            if (extractListElement == null) {
+                CompilerDirectives.transferToInterpreterAndInvalidate();
                 extractListElement = insert(ExtractListElement.create());
             }
             Object[] permData = new Object[dimNames.getLength()];
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Eval.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Eval.java
index 906f67906eb3c1dad6bc7903825c1530c41e04e9..12c2f8e4103696ec9f8fdae8fc157655946cae49 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Eval.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Eval.java
@@ -33,6 +33,7 @@ import static com.oracle.truffle.r.runtime.RVisibility.CUSTOM;
 import static com.oracle.truffle.r.runtime.builtins.RBehavior.COMPLEX;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.INTERNAL;
 
+import com.oracle.truffle.api.CompilerDirectives;
 import com.oracle.truffle.api.dsl.Cached;
 import com.oracle.truffle.api.dsl.Fallback;
 import com.oracle.truffle.api.dsl.Specialization;
@@ -142,6 +143,7 @@ public abstract class Eval extends RBuiltinNode.Arg3 {
 
         private void lazyCreateRList2EnvNode() {
             if (rList2EnvNode == null) {
+                CompilerDirectives.transferToInterpreterAndInvalidate();
                 rList2EnvNode = insert(RList2EnvNode.create());
             }
         }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateComment.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateComment.java
index 1b796cf7b55f7c28d236089a3212dd6e2520b748..96098abefc211bb351b1eee2b3e7003c64030fde 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateComment.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateComment.java
@@ -26,6 +26,7 @@ import static com.oracle.truffle.r.runtime.RDispatch.INTERNAL_GENERIC;
 import static com.oracle.truffle.r.runtime.builtins.RBehavior.PURE;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.INTERNAL;
 
+import com.oracle.truffle.api.CompilerDirectives;
 import com.oracle.truffle.api.dsl.Cached;
 import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.r.nodes.attributes.RemoveFixedAttributeNode;
@@ -60,6 +61,7 @@ public abstract class UpdateComment extends RBuiltinNode.Arg2 {
     @Specialization
     protected Object dim(RAbstractContainer container, RAbstractStringVector value) {
         if (setCommentAttrNode == null) {
+            CompilerDirectives.transferToInterpreterAndInvalidate();
             setCommentAttrNode = insert(createGetCommentAttrNode());
         }
         setCommentAttrNode.execute(container, value);
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/Tilde.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/Tilde.java
index e9df0bec503f95337e99373fc28bbea6d17039bf..e5366c429bcfca8aaab5c7cfd18b306064f37039 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/Tilde.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/Tilde.java
@@ -26,6 +26,7 @@ import static com.oracle.truffle.r.runtime.builtins.RBehavior.READS_FRAME;
 import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.PRIMITIVE;
 
 import com.oracle.truffle.api.CompilerAsserts;
+import com.oracle.truffle.api.CompilerDirectives;
 import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.frame.VirtualFrame;
@@ -77,6 +78,7 @@ public abstract class Tilde extends RBuiltinNode.Arg2 {
     protected RLanguage tilde(VirtualFrame frame, Object x, Object y) {
 
         if (setEnvAttrNode == null) {
+            CompilerDirectives.transferToInterpreterAndInvalidate();
             setEnvAttrNode = insert(createSetEnvAttrNode());
         }
 
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRInterop.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRInterop.java
index d7273682607ed2bd9e1daa9848bd489095bbed36..8148f31c79e9e386b732c148a50504d1332c1f8a 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRInterop.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRInterop.java
@@ -923,6 +923,7 @@ public class FastRInterop {
                         @Cached("createInvoke(args.getLength())") Node invokeNode) {
 
             if (getDataNode == null) {
+                CompilerDirectives.transferToInterpreterAndInvalidate();
                 getDataNode = insert(GetReadonlyData.ListData.create());
             }
 
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/SpecialAttributesFunctions.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/SpecialAttributesFunctions.java
index 36731565a141e9677508a3976a03f5de771c95b4..9065b89e74f397e6f32b6da70e6924e22a20495a 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/SpecialAttributesFunctions.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/attributes/SpecialAttributesFunctions.java
@@ -926,8 +926,15 @@ public final class SpecialAttributesFunctions {
 
         public void initAttributes(RAbstractContainer x, RAbstractContainer source) {
             if (getDimNode == null) {
+                CompilerDirectives.transferToInterpreterAndInvalidate();
                 getDimNode = insert(GetDimAttributeNode.create());
+            }
+            if (getNamesNode == null) {
+                CompilerDirectives.transferToInterpreterAndInvalidate();
                 getNamesNode = insert(GetNamesAttributeNode.create());
+            }
+            if (getDimNamesNode == null) {
+                CompilerDirectives.transferToInterpreterAndInvalidate();
                 getDimNamesNode = insert(GetDimNamesAttributeNode.create());
             }
             this.initAttributes(x, getDimNode.getDimensions(source), getNamesNode.getNames(source), getDimNamesNode.getDimNames(source));
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 19b503bd6b756266d92e884834bccd76bbdbe6fb..979439c8979d6a9cd5af4f734187a3f287660cd7 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
@@ -571,6 +571,7 @@ public abstract class RCallNode extends RCallBaseNode implements RSyntaxNode, RS
             Object[] argumentsArray = originalCall.explicitArgs != null ? ((RArgsValuesAndNames) originalCall.explicitArgs.execute(frame)).getArguments()
                             : arguments.evaluateFlattenObjects(frame, originalCall.lookupVarArgs(frame));
             if (r2ForeignNode == null) {
+                CompilerDirectives.transferToInterpreterAndInvalidate();
                 r2ForeignNode = insert(R2Foreign.create());
             }
             for (int i = 0; i < argumentsArray.length; i++) {
@@ -623,6 +624,7 @@ public abstract class RCallNode extends RCallBaseNode implements RSyntaxNode, RS
             String member = lhs.getLHSMember();
             Object[] argumentsArray = evaluateArgs(frame);
             if (messageNode == null || foreignCallArgCount != argumentsArray.length) {
+                CompilerDirectives.transferToInterpreterAndInvalidate();
                 messageNode = insert(Message.createInvoke(argumentsArray.length).createNode());
                 foreignCallArgCount = argumentsArray.length;
                 foreign2RNode = insert(Foreign2R.create());
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallSpecialNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallSpecialNode.java
index 98a793a0147a1f032e48fafd264fc5299d5874e0..1fb0b4db04f3c0d4883439cf8239325a0f7f1a43 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallSpecialNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallSpecialNode.java
@@ -22,6 +22,7 @@
  */
 package com.oracle.truffle.r.nodes.function;
 
+import com.oracle.truffle.api.CompilerAsserts;
 import com.oracle.truffle.api.CompilerDirectives;
 import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
 import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
@@ -319,6 +320,7 @@ public final class RCallSpecialNode extends RCallBaseNode implements RSyntaxNode
     @Override
     public Node deepCopy() {
         assert !inReplace && callSpecialParent == null && ignoredArguments.length == 0;
+        CompilerAsserts.neverPartOfCompilation();
         RCallSpecialNode node = (RCallSpecialNode) RContext.getASTBuilder().process(this).asRNode();
         node.functionNode = node.insert(node.functionNode);
         node.special = node.insert(node.special);
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/MissingNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/MissingNode.java
index 98aff46476a515d2deaa16bbf3bb93892e17639f..d3dca941dc26c6011f9429e249080cb95be636b5 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/MissingNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/signature/MissingNode.java
@@ -212,8 +212,10 @@ public final class MissingNode extends OperatorNode {
                 throw error(Message.INVALID_USE, "missing");
             }
             if (ArgumentsSignature.VARARG_NAME.equals(identifier)) {
+                CompilerDirectives.transferToInterpreterAndInvalidate();
                 readVarArgs = insert(LocalReadVariableNode.create(ArgumentsSignature.VARARG_NAME, false));
             } else {
+                CompilerDirectives.transferToInterpreterAndInvalidate();
                 level = insert(new MissingCheckLevel(identifier, 0));
             }
         }