< prev index next >

src/java.base/share/classes/java/lang/invoke/MethodHandles.java

Print this page

        

@@ -3484,10 +3484,16 @@
         for (int i = 0; i < insCount; i++) {
             Object value = values[i];
             Class<?> ptype = ptypes[pos+i];
             if (ptype.isPrimitive()) {
                 result = insertArgumentPrimitive(result, pos, ptype, value);
+            } else if (MinimalValueTypes_1_0.isValueType(ptype)) {
+                Class<?> vcc = MinimalValueTypes_1_0.getValueCapableClass(ptype);
+                Objects.requireNonNull(value); // throw NPE if needed
+                value = vcc.cast(value);       // throw CCE if needed
+                MethodHandle unbox = ValueType.forClass(vcc).unbox();
+                result = result.bindArgumentQ(pos, value, unbox);
             } else {
                 value = ptype.cast(value);  // throw CCE if needed
                 result = result.bindArgumentL(pos, value);
             }
         }
< prev index next >