--- old/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java 2017-09-15 12:05:21.000000000 -0700 +++ new/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java 2017-09-15 12:05:21.000000000 -0700 @@ -25,7 +25,6 @@ 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; @@ -40,6 +39,7 @@ 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; @@ -434,8 +434,8 @@ assert(!VerifyType.isNullConversion(src, dst, /*keepInterfaces=*/ strict)); // caller responsibility if (dst == void.class) return dst; - ValueType srcVT = getValueFor(src); - ValueType dstVT = getValueFor(dst); + ValueTypeHolder srcVT = MinimalValueTypes_1_0.findValueType(src); + ValueTypeHolder dstVT = MinimalValueTypes_1_0.findValueType(dst); MethodHandle fn; if (src.isPrimitive()) { if (src == void.class) { @@ -496,19 +496,6 @@ return fn; } - @SuppressWarnings("unchecked") - static ValueType getValueFor(Class c) { - try { - if (MinimalValueTypes_1_0.isValueType(c)) { - return (ValueType)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; @@ -1821,7 +1808,7 @@ return ValueConversions.unboxExact(w); } } else if (MinimalValueTypes_1_0.isValueType(returnType)) { - return ValueType.forClass(MinimalValueTypes_1_0.getValueCapableClass(returnType)).unbox(); + return MinimalValueTypes_1_0.findValueType(returnType).unbox(); } else { return MethodHandles.identity(Object.class); }