comparison 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
comparison
equal deleted inserted replaced
22134:025869c88840 22135:e70b20f4bb00
46 protected ObjectAccessNode getFirst() { 46 protected ObjectAccessNode getFirst() {
47 return first; 47 return first;
48 } 48 }
49 49
50 public Object executeForeign(VirtualFrame frame, TruffleObject receiver, Object... arguments) { 50 public Object executeForeign(VirtualFrame frame, TruffleObject receiver, Object... arguments) {
51 return first.executeWith(frame, receiver, arguments); 51 Object ret = first.executeWith(frame, receiver, arguments);
52 assert assertReturnValue(ret) : "Only primitive values or TruffleObject expected: " + ret;
53 return ret;
54 }
55
56 private static boolean assertReturnValue(Object ret) {
57 if (ret instanceof Number) {
58 return true;
59 }
60 if (ret instanceof String) {
61 return true;
62 }
63 if (ret instanceof Character) {
64 return true;
65 }
66 if (ret instanceof Boolean) {
67 return true;
68 }
69 return ret instanceof TruffleObject;
52 } 70 }
53 71
54 } 72 }