From a7119692442e54dada854249841c9ac3e1cede9c Mon Sep 17 00:00:00 2001
From: Gero Leinemann <gero.leinemann@oracle.com>
Date: Wed, 24 Sep 2014 14:55:41 +0200
Subject: [PATCH] Added BinaryConditionProfile to ResolvePromiseNode

---
 .../com/oracle/truffle/r/nodes/access/ReadVariableNode.java   | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariableNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariableNode.java
index def9938e70..d5e176d410 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariableNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/ReadVariableNode.java
@@ -215,6 +215,8 @@ public abstract class ReadVariableNode extends RNode implements VisibilityContro
             return value;
         }
 
+        private final ConditionProfile isPromiseProfile = ConditionProfile.createBinaryProfile();
+
         /**
          * Catch all calls to {@link #execute(VirtualFrame, MaterializedFrame)} ({@code final} so it
          * is not overridden by the annotation processor) and forward them to {@link #getReadNode()}
@@ -224,7 +226,7 @@ public abstract class ReadVariableNode extends RNode implements VisibilityContro
         @Override
         public final Object execute(VirtualFrame frame, MaterializedFrame enclosingFrame) {
             Object obj = getReadNode().execute(frame, enclosingFrame);
-            if (isPromise(obj)) {
+            if (isPromiseProfile.profile(isPromise(obj))) {
                 return doValue(frame, (RPromise) obj);
             }
             return obj;
-- 
GitLab