< prev index next >

jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java

Print this page

        

*** 23,33 **** * questions. */ package java.lang.invoke; - import jdk.experimental.value.ValueType; import jdk.internal.misc.JavaLangInvokeAccess; import jdk.internal.misc.SharedSecrets; import jdk.internal.org.objectweb.asm.AnnotationVisitor; import jdk.internal.org.objectweb.asm.ClassWriter; import jdk.internal.org.objectweb.asm.MethodVisitor; --- 23,32 ----
*** 38,47 **** --- 37,47 ---- import sun.invoke.empty.Empty; import sun.invoke.util.ValueConversions; import sun.invoke.util.VerifyType; import sun.invoke.util.Wrapper; import valhalla.shady.MinimalValueTypes_1_0; + import valhalla.shady.ValueTypeHolder; import java.lang.reflect.Array; import java.util.Arrays; import java.util.Collections; import java.util.Iterator;
*** 432,443 **** */ static Object valueConversion(Class<?> src, Class<?> dst, boolean strict, boolean monobox) { assert(!VerifyType.isNullConversion(src, dst, /*keepInterfaces=*/ strict)); // caller responsibility if (dst == void.class) return dst; ! ValueType<?> srcVT = getValueFor(src); ! ValueType<?> dstVT = getValueFor(dst); MethodHandle fn; if (src.isPrimitive()) { if (src == void.class) { return void.class; // caller must recognize this specially } else if (dst.isPrimitive()) { --- 432,443 ---- */ static Object valueConversion(Class<?> src, Class<?> dst, boolean strict, boolean monobox) { assert(!VerifyType.isNullConversion(src, dst, /*keepInterfaces=*/ strict)); // caller responsibility if (dst == void.class) return dst; ! ValueTypeHolder<?> srcVT = MinimalValueTypes_1_0.findValueType(src); ! ValueTypeHolder<?> dstVT = MinimalValueTypes_1_0.findValueType(dst); MethodHandle fn; if (src.isPrimitive()) { if (src == void.class) { return void.class; // caller must recognize this specially } else if (dst.isPrimitive()) {
*** 494,516 **** } assert(fn.type().parameterCount() <= 1) : "pc"+Arrays.asList(src.getSimpleName(), dst.getSimpleName(), fn); return fn; } - @SuppressWarnings("unchecked") - static <Z> ValueType<Z> getValueFor(Class<Z> c) { - try { - if (MinimalValueTypes_1_0.isValueType(c)) { - return (ValueType<Z>)ValueType.forClass(MinimalValueTypes_1_0.getValueCapableClass(c)); - } else { - return null; - } - } catch (Throwable ex) { - return null; - } - } - static MethodHandle makeVarargsCollector(MethodHandle target, Class<?> arrayType) { MethodType type = target.type(); int last = type.parameterCount() - 1; if (type.parameterType(last) != arrayType) target = target.asType(type.changeParameterType(last, arrayType)); --- 494,503 ----
*** 1819,1829 **** } else { Wrapper w = Wrapper.forPrimitiveType(returnType); return ValueConversions.unboxExact(w); } } else if (MinimalValueTypes_1_0.isValueType(returnType)) { ! return ValueType.forClass(MinimalValueTypes_1_0.getValueCapableClass(returnType)).unbox(); } else { return MethodHandles.identity(Object.class); } } --- 1806,1816 ---- } else { Wrapper w = Wrapper.forPrimitiveType(returnType); return ValueConversions.unboxExact(w); } } else if (MinimalValueTypes_1_0.isValueType(returnType)) { ! return MinimalValueTypes_1_0.findValueType(returnType).unbox(); } else { return MethodHandles.identity(Object.class); } }
< prev index next >