--- old/src/java.base/share/classes/java/lang/invoke/DirectMethodHandle.java 2018-11-26 16:24:38.000000000 -0800 +++ new/src/java.base/share/classes/java/lang/invoke/DirectMethodHandle.java 2018-11-26 16:24:37.000000000 -0800 @@ -136,6 +136,8 @@ private static DirectMethodHandle makeAllocator(MemberName ctor) { assert(ctor.isConstructor() && ctor.getName().equals("")); Class instanceClass = ctor.getDeclaringClass(); + if (instanceClass.isValue()) + instanceClass = instanceClass.asValueType(); // convert to Q-Type ctor = ctor.asConstructor(); assert(ctor.isConstructor() && ctor.getReferenceKind() == REF_newInvokeSpecial) : ctor; MethodType mtype = ctor.getMethodType().changeReturnType(instanceClass);