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