changeset 22406:16b59063cfb9

Method with VirtualFrame parameter must not be annotated with @TruffleBoundary
author Christian Wimmer <christian.wimmer@oracle.com>
date Sat, 21 Nov 2015 09:27:09 -0800
parents fd53ccebb10b
children a6a1efa177d2
files truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java	Fri Nov 20 18:02:49 2015 +0100
+++ b/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLLanguage.java	Sat Nov 21 09:27:09 2015 -0800
@@ -50,7 +50,7 @@
 import java.util.List;
 
 import com.oracle.truffle.api.CallTarget;
-import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
+import com.oracle.truffle.api.CompilerDirectives;
 import com.oracle.truffle.api.RootCallTarget;
 import com.oracle.truffle.api.Truffle;
 import com.oracle.truffle.api.TruffleLanguage;
@@ -439,9 +439,16 @@
             failed[0] = e;
         }
         RootNode rootNode = new RootNode(SLLanguage.class, null, null) {
-            @TruffleBoundary
             @Override
             public Object execute(VirtualFrame frame) {
+                /*
+                 * We do not expect this node to be part of anything that gets compiled for
+                 * performance reason. It can be compiled though when doing compilation stress
+                 * testing. But in this case it is fine to just deoptimize. Note that we cannot
+                 * declare the method as @TruffleBoundary because it has a VirtualFrame parameter.
+                 */
+                CompilerDirectives.transferToInterpreter();
+
                 if (failed[0] instanceof RuntimeException) {
                     throw (RuntimeException) failed[0];
                 }