Mercurial > hg > truffle
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 } |