diff truffle/com.oracle.truffle.api.interop.java/src/com/oracle/truffle/api/interop/java/JavaInterop.java @ 22529:2643b968c0c6

Send UNBOX message when a primitive type is requested for a TruffleObject value
author Jaroslav Tulach <jaroslav.tulach@oracle.com>
date Wed, 06 Jan 2016 10:59:58 +0100
parents 6ab540203853
children
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.interop.java/src/com/oracle/truffle/api/interop/java/JavaInterop.java	Wed Dec 30 18:07:19 2015 +0100
+++ b/truffle/com.oracle.truffle.api.interop.java/src/com/oracle/truffle/api/interop/java/JavaInterop.java	Wed Jan 06 10:59:58 2016 +0100
@@ -424,9 +424,15 @@
         return toPrimitive(attr, null) != null;
     }
 
-    static Object toPrimitive(Object attr, Class<?> requestedType) {
-        if (attr instanceof TruffleObject) {
-            return null;
+    static Object toPrimitive(Object value, Class<?> requestedType) {
+        Object attr;
+        if (value instanceof TruffleObject) {
+            if (!Boolean.TRUE.equals(message(Message.IS_BOXED, value))) {
+                return null;
+            }
+            attr = message(Message.UNBOX, value);
+        } else {
+            attr = value;
         }
         if (attr instanceof Number) {
             if (requestedType == null) {