Mercurial > hg > truffle
diff truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/ForeignObjectAccessHeadNode.java @ 22135:e70b20f4bb00
Implementing API for Java/Truffle interop. Based around JavaInterop.asJavaObject and JavaInterop.asTruffleObject methods. Connected to TruffleVM via Symbol.as(Class) wrapper. Verified by extended TCK.
author | Jaroslav Tulach <jaroslav.tulach@oracle.com> |
---|---|
date | Mon, 07 Sep 2015 17:07:20 +0200 |
parents | 9c8c0937da41 |
children | dc83cc1f94f2 |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/ForeignObjectAccessHeadNode.java Fri Sep 04 16:41:38 2015 +0200 +++ b/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/ForeignObjectAccessHeadNode.java Mon Sep 07 17:07:20 2015 +0200 @@ -48,7 +48,25 @@ } public Object executeForeign(VirtualFrame frame, TruffleObject receiver, Object... arguments) { - return first.executeWith(frame, receiver, arguments); + Object ret = first.executeWith(frame, receiver, arguments); + assert assertReturnValue(ret) : "Only primitive values or TruffleObject expected: " + ret; + return ret; + } + + private static boolean assertReturnValue(Object ret) { + if (ret instanceof Number) { + return true; + } + if (ret instanceof String) { + return true; + } + if (ret instanceof Character) { + return true; + } + if (ret instanceof Boolean) { + return true; + } + return ret instanceof TruffleObject; } }