--- old/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java 2017-09-15 12:05:23.000000000 -0700 +++ new/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java 2017-09-15 12:05:22.000000000 -0700 @@ -25,7 +25,6 @@ package java.lang.invoke; -import jdk.experimental.value.ValueType; import jdk.internal.misc.SharedSecrets; import jdk.internal.module.IllegalAccessLogger; import jdk.internal.org.objectweb.asm.ClassReader; @@ -38,6 +37,7 @@ import sun.reflect.misc.ReflectUtil; import sun.security.util.SecurityConstants; import valhalla.shady.MinimalValueTypes_1_0; +import valhalla.shady.ValueTypeHolder; import java.lang.invoke.LambdaForm.BasicType; import java.lang.reflect.Constructor; @@ -56,7 +56,6 @@ import java.util.Iterator; import java.util.List; import java.util.Objects; -import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -1427,7 +1426,7 @@ */ public MethodHandle findGetter(Class refc, String name, Class type) throws NoSuchFieldException, IllegalAccessException { if (MinimalValueTypes_1_0.isValueType(refc)) { - return ValueType.forClass(MinimalValueTypes_1_0.getValueCapableClass(refc)).findGetter(this, name, type); + return MinimalValueTypes_1_0.findValueType(refc).findGetter(this, name, type); } else { MemberName field = resolveOrFail(REF_getField, refc, name, type); return getDirectField(REF_getField, refc, field); @@ -2539,7 +2538,7 @@ */ public static MethodHandle arrayConstructor(Class arrayClass) throws IllegalArgumentException { - ValueType compValue = valueComponent(arrayClass); + ValueTypeHolder compValue = valueComponent(arrayClass); if (compValue != null) { return compValue.newArray(); } else { @@ -2561,7 +2560,7 @@ */ public static MethodHandle arrayLength(Class arrayClass) throws IllegalArgumentException { - ValueType compValue = valueComponent(arrayClass); + ValueTypeHolder compValue = valueComponent(arrayClass); return (compValue != null) ? compValue.arrayLength() : MethodHandleImpl.makeArrayElementAccessor(arrayClass, MethodHandleImpl.ArrayAccess.LENGTH); @@ -2579,7 +2578,7 @@ */ public static MethodHandle arrayElementGetter(Class arrayClass) throws IllegalArgumentException { - ValueType compValue = valueComponent(arrayClass); + ValueTypeHolder compValue = valueComponent(arrayClass); return (compValue != null) ? compValue.arrayGetter() : MethodHandleImpl.makeArrayElementAccessor(arrayClass, MethodHandleImpl.ArrayAccess.GET); @@ -2597,21 +2596,21 @@ */ public static MethodHandle arrayElementSetter(Class arrayClass) throws IllegalArgumentException { - ValueType compValue = valueComponent(arrayClass); + ValueTypeHolder compValue = valueComponent(arrayClass); return (compValue != null) ? compValue.arraySetter() : MethodHandleImpl.makeArrayElementAccessor(arrayClass, MethodHandleImpl.ArrayAccess.SET); } @SuppressWarnings("unchecked") - private static ValueType valueComponent(Class arrayClass) { + private static ValueTypeHolder valueComponent(Class arrayClass) { if (!arrayClass.isArray()) { throw newIllegalArgumentException("not an array class: " + arrayClass.getName()); } Class comp = arrayClass.getComponentType(); if (MinimalValueTypes_1_0.isValueType(comp)) { - return (ValueType)ValueType.forClass(MinimalValueTypes_1_0.getValueCapableClass(comp)); + return (ValueTypeHolder) MinimalValueTypes_1_0.findValueType(comp); } else { return null; } @@ -3383,7 +3382,7 @@ if (type.isPrimitive()) { return zero(Wrapper.forPrimitiveType(type), type); } else if (MinimalValueTypes_1_0.isValueType(type)) { - return ValueType.forClass(MinimalValueTypes_1_0.getValueCapableClass(type)).defaultValueConstant(); + return MinimalValueTypes_1_0.findValueType(type).defaultValueConstant(); } else { return zero(Wrapper.OBJECT, type); } @@ -3421,7 +3420,7 @@ LambdaForm lform = LambdaForm.identityForm(BasicType.basicType(ptype)); return MethodHandleImpl.makeIntrinsic(mtype, lform, Intrinsic.IDENTITY); } else { - return ValueType.forClass(MinimalValueTypes_1_0.getValueCapableClass(ptype)).identity(); + return MinimalValueTypes_1_0.findValueType(ptype).identity(); } } @@ -3498,7 +3497,7 @@ 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(); + MethodHandle unbox = MinimalValueTypes_1_0.findValueType(ptype).unbox(); result = result.bindArgumentQ(pos, value, unbox); } else { value = ptype.cast(value); // throw CCE if needed