On Thu, 23 May 2024 03:28:30 GMT, Chen Liang <[email protected]> wrote:
> Please review this change that convert dynamic proxies implementations to
> hidden classes, intended to target JDK 24.
>
> Summary:
> 1. Adds new implementation while preserving the old implementation behind
> `-Djdk.reflect.useLegacyProxyImpl=true` in case there are compatibility
> issues.
> 2. ClassLoader.defineClass0 takes a ClassLoader instance but discards it in
> native code; I updated native code to reuse that ClassLoader for Proxy
> support.
> 3. ProxyGenerator changes mainly involve using Class data to pass Method list
> (accessed in a single condy) and removal of obsolete setup code generation.
>
> Testing: tier1 and tier2 have no related failures.
>
> Comment: Since #8278, Proxy has been converted to ClassFile API, and
> infrastructure has changed; now, the migration to hidden classes is much
> cleaner and has less impact, such as preserving ProtectionDomain and dynamic
> module without "anchor classes", and avoiding java.lang.invoke package.
`useLegacyProxyImpl && !useOldSerializableConstructor` would always be `false`
when `useOldSerializableConstructor` is `true`, which is the opposite of what’s
described in the CSR.
src/java.base/share/classes/jdk/internal/reflect/ReflectionFactory.java line
557:
> 555: public static boolean useLegacyProxyImpl() {
> 556: var config = config();
> 557: return config.useLegacyProxyImpl &&
> !config.useOldSerializableConstructor;
Suggestion:
return config.useLegacyProxyImpl ||
config.useOldSerializableConstructor;
src/java.base/share/classes/jdk/internal/reflect/ReflectionFactory.java line
624:
> 622:
> "true".equals(props.getProperty("jdk.disableSerialConstructorChecks"));
> 623:
> 624: useLegacyProxyImpl &= !useOldSerializableConstructor;
Suggestion:
useLegacyProxyImpl |= useOldSerializableConstructor;
-------------
PR Review: https://git.openjdk.org/jdk/pull/19356#pullrequestreview-2079825251
PR Review Comment: https://git.openjdk.org/jdk/pull/19356#discussion_r1615362157
PR Review Comment: https://git.openjdk.org/jdk/pull/19356#discussion_r1615362271