diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UnClass.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UnClass.java
index 0011dcfc0c380bfa6781075a9dec9968872b050d..1c47b76ab2d2cd406a2992cea27e63eb77ef6395 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UnClass.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UnClass.java
@@ -38,7 +38,6 @@ public abstract class UnClass extends RBuiltinNode {
             RVector resultVector = arg.materialize();
             if (!resultVector.isTemporary()) {
                 resultVector = resultVector.copy();
-                assert resultVector.isTemporary();
                 resultVector.incRefCount();
             }
             return RVector.setVectorClassAttr(resultVector, null);
@@ -53,7 +52,6 @@ public abstract class UnClass extends RBuiltinNode {
             RLanguage resultLang = arg;
             if (!resultLang.isTemporary()) {
                 resultLang = resultLang.copy();
-                resultLang.isTemporary();
                 resultLang.incRefCount();
             }
             resultLang.removeAttr(attrProfiles, RRuntime.CLASS_ATTR_KEY);
@@ -69,7 +67,6 @@ public abstract class UnClass extends RBuiltinNode {
             RS4Object resultS4 = arg;
             if (!resultS4.isTemporary()) {
                 resultS4 = resultS4.copy();
-                resultS4.isTemporary();
                 resultS4.incRefCount();
             }
             resultS4.removeAttr(attrProfiles, RRuntime.CLASS_ATTR_KEY);
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/ArgumentStatePush.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/ArgumentStatePush.java
index a52fc0de2ab967e98db85c16b07d6f44fe774b74..f027b716164a47b23766b3abfbf56e57ade0c3cf 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/ArgumentStatePush.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/ArgumentStatePush.java
@@ -50,7 +50,7 @@ public abstract class ArgumentStatePush extends RNode {
 
     private final int index;
     @CompilationFinal private int mask = 0;
-    @Child WriteLocalFrameVariableNode writeArgNode;
+    @Child private WriteLocalFrameVariableNode writeArgNode;
 
     public static final int MAX_COUNTED_ARGS = 8;
     public static final int INVALID_INDEX = -1;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/PromiseHelperNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/PromiseHelperNode.java
index 0d47698434f5b115690b4d72b72df93292885e11..e7884fbca072513057607385f5ef975128013bf7 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/PromiseHelperNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/PromiseHelperNode.java
@@ -212,7 +212,7 @@ public class PromiseHelperNode extends RBaseNode {
                     return getEagerValue(frame, promise);
                 }
             } else {
-                fallbackProfile.enter();
+                CompilerDirectives.transferToInterpreter();
                 promise.notifyFailure();
 
                 // Fallback: eager evaluation failed, now take the slow path
@@ -347,7 +347,6 @@ public class PromiseHelperNode extends RBaseNode {
     private final ConditionProfile isOptEagerProfile = ConditionProfile.createBinaryProfile();
     private final ConditionProfile isOptPromisedProfile = ConditionProfile.createBinaryProfile();
     private final ConditionProfile isDeoptimizedProfile = ConditionProfile.createBinaryProfile();
-    private final BranchProfile fallbackProfile = BranchProfile.create();
     private final ValueProfile eagerValueProfile = ValueProfile.createClassProfile();
 
     public PromiseHelperNode() {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/opt/OptForcedEagerPromiseNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/opt/OptForcedEagerPromiseNode.java
index 94a4e7a4a5af0eded58d16afb4a526ae31c6e193..5ffc0cef62163e1339a4c7a4fc316cc5fc02ca1b 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/opt/OptForcedEagerPromiseNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/opt/OptForcedEagerPromiseNode.java
@@ -47,6 +47,7 @@ public final class OptForcedEagerPromiseNode extends PromiseNode {
     @Child private PromiseHelperNode promiseHelper;
 
     private final BranchProfile nonPromiseProfile = BranchProfile.create();
+    private final BranchProfile promiseCallerProfile = BranchProfile.create();
     private final RPromiseFactory factory;
     private final int wrapIndex;
 
@@ -83,6 +84,7 @@ public final class OptForcedEagerPromiseNode extends PromiseNode {
         }
         RCaller call = RArguments.getCall(frame);
         while (call.isPromise()) {
+            promiseCallerProfile.enter();
             call = call.getParent();
         }
         return factory.createEagerSuppliedPromise(value, alwaysValidAssumption, call, null, wrapIndex);
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/opt/OptVariablePromiseBaseNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/opt/OptVariablePromiseBaseNode.java
index 71eac84910449fd83a66be5fe7e1ab3eb0bbf225..4ee9992eb12985114fe8ddfc4d84b0cf20883ea5 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/opt/OptVariablePromiseBaseNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/opt/OptVariablePromiseBaseNode.java
@@ -27,6 +27,7 @@ import com.oracle.truffle.api.CompilerDirectives;
 import com.oracle.truffle.api.frame.FrameSlot;
 import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.nodes.InvalidAssumptionException;
+import com.oracle.truffle.api.profiles.BranchProfile;
 import com.oracle.truffle.r.nodes.access.FrameSlotNode;
 import com.oracle.truffle.r.nodes.access.variables.LocalReadVariableNode;
 import com.oracle.truffle.r.nodes.access.variables.ReadVariableNode;
@@ -42,6 +43,7 @@ import com.oracle.truffle.r.runtime.nodes.RNode;
 import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
 
 public abstract class OptVariablePromiseBaseNode extends PromiseNode implements EagerFeedback {
+    private final BranchProfile promiseCallerProfile = BranchProfile.create();
     private final ReadVariableNode originalRvn;
     @Child private FrameSlotNode frameSlotNode;
     @Child private RNode fallback = null;
@@ -95,6 +97,7 @@ public abstract class OptVariablePromiseBaseNode extends PromiseNode implements
         // value won't be altered until 1. read
         RCaller call = RArguments.getCall(frame);
         while (call.isPromise()) {
+            promiseCallerProfile.enter();
             call = call.getParent();
         }
         if (result instanceof RPromise) {
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_extract_dollar_assign_language.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_extract_dollar_assign_language.java
index 8e5025b5349eae8db39c78caeb057963ee6bc3ab..2a14799de4eb18b2c27e8030c9b9a1fe41c55215 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_extract_dollar_assign_language.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_extract_dollar_assign_language.java
@@ -28,7 +28,7 @@ import org.junit.Test;
 import com.oracle.truffle.r.test.TestBase;
 
 /**
- * Tests {@link com.oracle.truffle.r.nodes.access.vector.CachedReplaceVectorNode} special handling
+ * Tests {@code com.oracle.truffle.r.nodes.access.vector.CachedReplaceVectorNode} special handling
  * for Language objects.
  */
 public class TestBuiltin_extract_dollar_assign_language extends TestBase {