changeset 22010:f410818cdec8

add missing truffle boundaries
author Andreas Woess <andreas.woess@oracle.com>
date Thu, 23 Jul 2015 16:28:48 +0200
parents 130e5f69d1a6
children 95d5d6a93968
files truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/ObjectAccessNode.java truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrument.java truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/CyclicAssumption.java
diffstat 3 files changed, 22 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/ObjectAccessNode.java	Thu Jul 23 10:48:53 2015 +0200
+++ b/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/ObjectAccessNode.java	Thu Jul 23 16:28:48 2015 +0200
@@ -25,6 +25,7 @@
 package com.oracle.truffle.api.interop;
 
 import com.oracle.truffle.api.*;
+import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.api.frame.*;
 import com.oracle.truffle.api.nodes.*;
 
@@ -86,10 +87,15 @@
         final ForeignAccess fa = truffleObject.getForeignAccess();
         final CallTarget ct = fa.access(access);
         if (ct == null) {
-            throw new IllegalStateException("Message " + access + " not recognized by " + fa);
+            throw messageNotRecognizedException(fa);
         }
         return indirectCallNode.call(frame, ct, ForeignAccessArguments.create(truffleObject, arguments));
     }
+
+    @TruffleBoundary
+    private RuntimeException messageNotRecognizedException(final ForeignAccess fa) {
+        throw new IllegalStateException("Message " + access + " not recognized by " + fa);
+    }
 }
 
 class CachedObjectAccessNode extends ObjectAccessNode {
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrument.java	Thu Jul 23 10:48:53 2015 +0200
+++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/Instrument.java	Thu Jul 23 16:28:48 2015 +0200
@@ -25,6 +25,7 @@
 package com.oracle.truffle.api.instrument;
 
 import com.oracle.truffle.api.*;
+import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.api.frame.*;
 import com.oracle.truffle.api.instrument.InstrumentationNode.TruffleEvents;
 import com.oracle.truffle.api.nodes.*;
@@ -471,13 +472,23 @@
                     return;
                 }
                 if (result == null) {
-                    throw new RuntimeException("Instrument result null: " + requiredResultType.getSimpleName() + " is required");
+                    throw instrumentResultNull();
                 }
                 if (!(requiredResultType.isAssignableFrom(result.getClass()))) {
-                    throw new RuntimeException("Instrument result " + result.toString() + " not assignable to " + requiredResultType.getSimpleName());
+                    throw instrumentResultWrongType(result);
                 }
             }
 
+            @TruffleBoundary
+            private RuntimeException instrumentResultNull() {
+                return new RuntimeException("Instrument result null: " + requiredResultType.getSimpleName() + " is required");
+            }
+
+            @TruffleBoundary
+            private RuntimeException instrumentResultWrongType(Object result) {
+                return new RuntimeException("Instrument result " + result.toString() + " not assignable to " + requiredResultType.getSimpleName());
+            }
+
             public void returnVoid(Node node, VirtualFrame vFrame) {
                 if (nextInstrumentNode != null) {
                     nextInstrumentNode.returnVoid(node, vFrame);
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/CyclicAssumption.java	Thu Jul 23 10:48:53 2015 +0200
+++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/CyclicAssumption.java	Thu Jul 23 16:28:48 2015 +0200
@@ -27,6 +27,7 @@
 import java.util.concurrent.atomic.*;
 
 import com.oracle.truffle.api.*;
+import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 
 /**
  * Holds an {@link Assumption}, and knows how to recreate it with the same properties on
@@ -45,6 +46,7 @@
         this.assumption = new AtomicReference<>(Truffle.getRuntime().createAssumption(name));
     }
 
+    @TruffleBoundary
     public void invalidate() {
         Assumption newAssumption = Truffle.getRuntime().createAssumption(name);
         Assumption oldAssumption = assumption.getAndSet(newAssumption);