On Tue, 19 Nov 2024 16:45:47 GMT, Hannes Greule <hgre...@openjdk.org> wrote:

>> In fact, another solution I have contemplated is to update 
>> `JavaLangInvokeAccess` implementations. 4 methods in it, 
>> `unreflectConstructor`, `unreflectField`, `findVirtual`, and `findStatic`, 
>> are exclusively used by core reflection.
>> 
>> That solution proposes to bypass `findVirtualForMH`/`findVirtualForVH` and 
>> bypass `setVarargs(MemberName)` in 
>> `getDirectMethodCommon`/`getDirectConstructorCommon` in these internal hooks.
>> 
>> But I think this may be too invasive and unfriendly to backports (also note: 
>> backport to 21 isn't clean, there is a small conflict in doc comments), and 
>> using native instead of MH for these 2 corner cases shouldn't be too big of 
>> a performance concern.
>
> Okay, in that case it's probably fine - I assume there's also no easy way to 
> ensure in a test that all signature polymorphic methods are covered by these 
> checks?

These checks are 1-1 to the JVMS 2.9.3/JLS 15.12.3, where definitions of 
signature polymorphic methods reside.

Actually, since you've asked, I checked the usage of `PolymorphicSignature` - 
it's not used by javac at all! The only usages I can find is in JVMCI tests. 
And I don't find any test that verify the set of all `PolymorphicSignature` 
annotated methods is the set of all signature polymorphic methods. (A similar 
test exists for `CallerSensitive`).

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/22169#discussion_r1848752806

Reply via email to