mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
8315810: Reimplement sun.reflect.ReflectionFactory::newConstructorForSerialization with method handles
Co-authored-by: Chen Liang <liach@openjdk.org> Reviewed-by: rriggs
This commit is contained in:
parent
eb1f67b160
commit
5cea53d372
10 changed files with 141 additions and 41 deletions
|
@ -128,12 +128,11 @@ sealed class DirectMethodHandle extends MethodHandle {
|
|||
}
|
||||
static DirectMethodHandle make(MemberName member) {
|
||||
if (member.isConstructor())
|
||||
return makeAllocator(member);
|
||||
return makeAllocator(member.getDeclaringClass(), member);
|
||||
return make(member.getDeclaringClass(), member);
|
||||
}
|
||||
private static DirectMethodHandle makeAllocator(MemberName ctor) {
|
||||
static DirectMethodHandle makeAllocator(Class<?> instanceClass, MemberName ctor) {
|
||||
assert(ctor.isConstructor() && ctor.getName().equals("<init>"));
|
||||
Class<?> instanceClass = ctor.getDeclaringClass();
|
||||
ctor = ctor.asConstructor();
|
||||
assert(ctor.isConstructor() && ctor.getReferenceKind() == REF_newInvokeSpecial) : ctor;
|
||||
MethodType mtype = ctor.getMethodType().changeReturnType(instanceClass);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue