This reimplements `sun.reflect.ReflectionFactory::newConstructorForSerialization` with method handles.
This API currently generates the bytecode which fails the verification because `new C; invokespecial A()` where the given class `C` and invoke a no-arg constructor of `C`'s first non-`Serializable` superclass `A` is not a valid operation per the VM specification. VM special cases the classes generated for reflection to skip verification for the constructors generated for serialization and externalization. This change will allow such VM hack to be removed. A `jdk.reflect.useOldSerializableConstructor` system property can be set to use the old implementation in case if customers run into any compatibility issue. ------------- Commit messages: - Reimplement ReflectionFactory::newConstructorForSerialization with method handle Changes: https://git.openjdk.org/jdk/pull/15600/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=15600&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8315810 Stats: 162 lines in 10 files changed: 122 ins; 11 del; 29 mod Patch: https://git.openjdk.org/jdk/pull/15600.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/15600/head:pull/15600 PR: https://git.openjdk.org/jdk/pull/15600