diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java index 6c2f34cee14ff03ff4c37888c6de0e286e6b0296..eaa5cfbb487b3a1e1c357e329afb3189b833253d 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java @@ -454,7 +454,7 @@ final class REngine implements Engine, Engine.Timings { for (int i = 0; i < newArgs.length; i++) { Object arg = newArgs[i]; if (arg instanceof RPromise) { - newArgs[i] = PromiseHelperNode.evaluateSlowPath(null, (RPromise) arg); + newArgs[i] = PromiseHelperNode.evaluateSlowPath((RPromise) arg); } } } @@ -681,6 +681,6 @@ final class REngine implements Engine, Engine.Timings { } private static Object evaluatePromise(Object value) { - return value instanceof RPromise ? PromiseHelperNode.evaluateSlowPath(null, (RPromise) value) : value; + return value instanceof RPromise ? PromiseHelperNode.evaluateSlowPath((RPromise) value) : value; } } diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/JLineConsoleCompleter.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/JLineConsoleCompleter.java index 3d2a62fd7f04978fd81d4a64892f495e9a2200ce..b5e7c8ae1eb3dec0c024c9185b453d5e7ee94507 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/JLineConsoleCompleter.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/JLineConsoleCompleter.java @@ -78,7 +78,7 @@ public class JLineConsoleCompleter implements Completer { REnvironment utils = REnvironment.getRegisteredNamespace("utils"); Object o = utils.get(".completeToken"); if (o instanceof RPromise) { - o = PromiseHelperNode.evaluateSlowPath(null, (RPromise) o); + o = PromiseHelperNode.evaluateSlowPath((RPromise) o); } RFunction completeToken; if (o instanceof RFunction) { diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/methods/MethodsListDispatch.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/methods/MethodsListDispatch.java index 5ec3a485350a46e226516c39801a6203aeac81d3..00ac91621ba2c891c36d0fd298552d9fbf5a8823 100644 --- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/methods/MethodsListDispatch.java +++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/methods/MethodsListDispatch.java @@ -423,7 +423,7 @@ public class MethodsListDispatch { Object res = FrameSlotChangeMonitor.getValue(slot, currentFrame); if (res != null) { if (res instanceof RPromise) { - res = PromiseHelperNode.evaluateSlowPath(null, (RPromise) res); + res = PromiseHelperNode.evaluateSlowPath((RPromise) res); } } return res; diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Exists.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Exists.java index 2e8a04837d0705b28bb39734801bcd3b40776db6..51bf9095613afaf8efa757bfabfa5ba2fc87b64b 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Exists.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Exists.java @@ -66,14 +66,14 @@ public abstract class Exists extends RBuiltinNode.Arg4 { if (!inherits) { Object obj = env.get(name); if (modeType != RType.Any && obj instanceof RPromise) { - obj = PromiseHelperNode.evaluateSlowPath(null, (RPromise) obj); + obj = PromiseHelperNode.evaluateSlowPath((RPromise) obj); } return RRuntime.asLogical(obj != null && RRuntime.checkType(obj, modeType)); } for (REnvironment e = env; e != REnvironment.emptyEnv(); e = e.getParent()) { Object obj = e.get(name); if (modeType != RType.Any && obj instanceof RPromise) { - obj = PromiseHelperNode.evaluateSlowPath(null, (RPromise) obj); + obj = PromiseHelperNode.evaluateSlowPath((RPromise) obj); } if (obj != null && RRuntime.checkType(obj, modeType)) { return RRuntime.LOGICAL_TRUE; diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRTreeStats.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRTreeStats.java index 75a82d67668729717c7458700c24757ba51b08f8..71a45e61427f6db63500611e90e59991cd859f64 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRTreeStats.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRTreeStats.java @@ -73,7 +73,7 @@ public abstract class FastRTreeStats extends RBuiltinNode.Arg1 { String binding = bindings.getDataAt(i); Object value = env.get(binding); if (value instanceof RPromise) { - value = PromiseHelperNode.evaluateSlowPath(null, (RPromise) value); + value = PromiseHelperNode.evaluateSlowPath((RPromise) value); } if (value instanceof RFunction) { diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java index d784b3d0a1157993e6d33dc7483cabf2e9c2fd66..dc171181ab5335a264ed0dc034392008002875f6 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java @@ -755,7 +755,7 @@ public final class ReadVariableNode extends RSourceSectionNode implements RSynta throw RError.error(RError.SHOW_CALLER, RError.Message.ARGUMENT_MISSING, identifier); } if (value instanceof RPromise) { - return PromiseHelperNode.evaluateSlowPath(null, (RPromise) value); + return PromiseHelperNode.evaluateSlowPath((RPromise) value); } return value; } diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedExtractVectorNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedExtractVectorNode.java index 7e8564b4ecffa5f5b5fb7e88e6c2c72bb18df1fd..0ce9148bd595ef13b9a3a6a175f26ab6590cea02 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedExtractVectorNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedExtractVectorNode.java @@ -249,6 +249,7 @@ final class CachedExtractVectorNode extends CachedVectorNode { return extractedVector; } + @TruffleBoundary private Object doEnvironment(REnvironment env, Object[] positions) { if (mode.isSubset()) { throw error(RError.Message.OBJECT_NOT_SUBSETTABLE, RType.Environment.getName()); @@ -258,7 +259,7 @@ final class CachedExtractVectorNode extends CachedVectorNode { if (positionString != null) { Object obj = env.get(positionString); if (promiseInEnvironment.profile(obj instanceof RPromise)) { - obj = PromiseHelperNode.evaluateSlowPath(null, (RPromise) obj); + obj = PromiseHelperNode.evaluateSlowPath((RPromise) obj); } return obj == null ? RNull.instance : obj; } 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 b635984a2cb511bea0b9716cacf2003f3c1470ea..ade76a40145d1f6dfe9dd841ea13f7a49e28f986 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 @@ -223,6 +223,11 @@ public class PromiseHelperNode extends RBaseNode { return generateValueDefault(frame, promise); } + @TruffleBoundary + public static Object evaluateSlowPath(RPromise promise) { + return evaluateSlowPath(null, promise); + } + public static Object evaluateSlowPath(VirtualFrame frame, RPromise promise) { CompilerAsserts.neverPartOfCompilation(); if (promise.isEvaluated()) { diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/S3FunctionLookupNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/S3FunctionLookupNode.java index b520673ff942295815c0e2bb8b3a5c26a78e8abe..7447a2e1f7dddae8c2cc3d7d3a3ae2e60ff97515 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/S3FunctionLookupNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/S3FunctionLookupNode.java @@ -109,7 +109,7 @@ public abstract class S3FunctionLookupNode extends RBaseNode { Result result; Object methodsTable = getTable.get(); if (methodsTable instanceof RPromise) { - methodsTable = PromiseHelperNode.evaluateSlowPath(null, (RPromise) methodsTable); + methodsTable = PromiseHelperNode.evaluateSlowPath((RPromise) methodsTable); } MaterializedFrame methodsTableFrame = methodsTable == null ? null : ((REnvironment) methodsTable).getFrame(); @@ -173,7 +173,7 @@ public abstract class S3FunctionLookupNode extends RBaseNode { private static RFunction checkPromise(Object value) { if (value instanceof RPromise) { - return (RFunction) PromiseHelperNode.evaluateSlowPath(null, (RPromise) value); + return (RFunction) PromiseHelperNode.evaluateSlowPath((RPromise) value); } else { return (RFunction) value; } diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/CollectGenericArgumentsNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/CollectGenericArgumentsNode.java index f8b51386ac4fa75a5a54bd348c0889c2dae88ed1..c5fe1e156efc33ac413d46e50f47f837a7cc0f4c 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/CollectGenericArgumentsNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/CollectGenericArgumentsNode.java @@ -120,7 +120,7 @@ public abstract class CollectGenericArgumentsNode extends RBaseNode { } else { Object value = FrameSlotChangeMonitor.getValue(slot, frame); if (value instanceof RPromise) { - value = PromiseHelperNode.evaluateSlowPath(null, (RPromise) value); + value = PromiseHelperNode.evaluateSlowPath((RPromise) value); } result[i] = classHierarchyNodeSlowPath.executeString(value); }