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 {