diff truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/GenericObjectAccessNode.java @ 22502:d2b4fe945c23

Add missing Truffle boundary
author Christian Wimmer <christian.wimmer@oracle.com>
date Wed, 16 Dec 2015 15:32:23 -0800
parents a016a0239ad9
children
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/GenericObjectAccessNode.java	Wed Dec 16 16:38:13 2015 +0100
+++ b/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/GenericObjectAccessNode.java	Wed Dec 16 15:32:23 2015 -0800
@@ -26,6 +26,7 @@
 
 import com.oracle.truffle.api.CallTarget;
 import com.oracle.truffle.api.CompilerDirectives;
+import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.api.Truffle;
 import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.nodes.IndirectCallNode;
@@ -47,12 +48,18 @@
 
     @Override
     public Object executeWith(VirtualFrame frame, TruffleObject truffleObject, Object[] arguments) {
+        final CallTarget ct = findCallTarget(truffleObject);
+        return indirectCallNode.call(frame, ct, accessArguments.executeCreate(truffleObject, arguments));
+    }
+
+    @TruffleBoundary
+    protected CallTarget findCallTarget(TruffleObject truffleObject) {
         final ForeignAccess fa = truffleObject.getForeignAccess();
         final CallTarget ct = fa.access(access);
         if (ct == null) {
             throw messageNotRecognizedException(fa);
         }
-        return indirectCallNode.call(frame, ct, accessArguments.executeCreate(truffleObject, arguments));
+        return ct;
     }
 
     @CompilerDirectives.TruffleBoundary