RFR: 8336468: Reflection and MethodHandles should use more precise initializer checks [v4]
Aleksey Shipilev
shade at openjdk.org
Wed Sep 25 15:25:40 UTC 2024
On Wed, 25 Sep 2024 13:22:09 GMT, Chen Liang <liach at openjdk.org> wrote:
>> Aleksey Shipilev has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains seven additional commits since the last revision:
>>
>> - Merge branch 'master' into JDK-8336468-reflection-init-checks
>> - Whitespace and comments
>> - Merge branch 'master' into JDK-8336468-reflection-init-checks
>> - Merge branch 'master' into JDK-8336468-reflection-init-checks
>> - Remove unnecessary handle-izing
>> - Fix
>> - Fix
>
> src/hotspot/share/prims/jni.cpp line 450:
>
>> 448: reflection_method = Reflection::new_constructor(m, CHECK_NULL);
>> 449: } else {
>> 450: assert(!m->is_static_initializer(), "Cannot be static initializer");
>
> This looks like a behavioral change; otherwise reflection and method handle changes look good. Per JNI https://docs.oracle.com/en/java/javase/23/docs/specs/jni/functions.html#toreflectedmethod it seems to just return if the method id is valid.
You mean the _assert_ is excessive, or something else? I think it is within the spec to return method for `clinit`-s, since clinits are logically not constructors.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20192#discussion_r1775445221
More information about the hotspot-dev
mailing list