From d558bbd7e2bac2271bee5d64971486d5ff36cb6b Mon Sep 17 00:00:00 2001
From: Florian Angerer <florian.angerer@oracle.com>
Date: Thu, 1 Jun 2017 18:15:07 +0200
Subject: [PATCH] Inserted missing TruffleBoundary.

---
 .../src/com/oracle/truffle/r/engine/REngine.java             | 4 ++--
 .../oracle/truffle/r/engine/shell/JLineConsoleCompleter.java | 2 +-
 .../truffle/r/library/methods/MethodsListDispatch.java       | 2 +-
 .../src/com/oracle/truffle/r/nodes/builtin/base/Exists.java  | 4 ++--
 .../oracle/truffle/r/nodes/builtin/fastr/FastRTreeStats.java | 2 +-
 .../truffle/r/nodes/access/variables/ReadVariableNode.java   | 2 +-
 .../r/nodes/access/vector/CachedExtractVectorNode.java       | 3 ++-
 .../oracle/truffle/r/nodes/function/PromiseHelperNode.java   | 5 +++++
 .../truffle/r/nodes/function/S3FunctionLookupNode.java       | 4 ++--
 .../truffle/r/nodes/objects/CollectGenericArgumentsNode.java | 2 +-
 10 files changed, 18 insertions(+), 12 deletions(-)

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 6c2f34cee1..eaa5cfbb48 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 3d2a62fd7f..b5e7c8ae1e 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 5ec3a48535..00ac91621b 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 2e8a04837d..51bf909561 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 75a82d6766..71a45e6142 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 d784b3d0a1..dc171181ab 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 7e8564b4ec..0ce9148bd5 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 b635984a2c..ade76a4014 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 b520673ff9..7447a2e1f7 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 f8b51386ac..c5fe1e156e 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);
             }
-- 
GitLab