RFR: 8285401: Proxy class initializer should use 3-arg `Class.forName` to avoid unnecessary class initialization [v2]
ExE Boss
duke at openjdk.java.net
Fri May 20 11:55:50 UTC 2022
On Fri, 20 May 2022 04:06:19 GMT, liach <duke at openjdk.java.net> wrote:
>> Simplify calls `Class.forName(String, boolean, ClassLoader)` instead of `Class.forName(String)`. `make test TEST="jtreg:test/jdk/java/lang/reflect/Proxy"` passes, with the new `LazyInitializationTest` failing the eager initialization check on the baseline and passing with this patch.
>>
>> On a side note, this might reduce the number of methods that can be encoded in a proxy due to code attribute size restrictions; we probably would address that in another issue, as we never mandated a count of methods that the proxy must be able to implement.
>>
>> Mandy, would you mind review this?
>
> liach has updated the pull request incrementally with one additional commit since the last revision:
>
> remove unused field
src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java line 608:
> 606: mv.visitMethodInsn(INVOKEVIRTUAL, JL_CLASS,
> 607: "getClassLoader", "()" + LJL_CLASSLOADER, false);
> 608: mv.visitVarInsn(ASTORE, 0);
Shouldn’t this go before `mv.visitLabel(L_startBlock)`?
-------------
PR: https://git.openjdk.java.net/jdk/pull/8800
More information about the core-libs-dev
mailing list