RFR: 8340831: Simplify simple validation for class definition in MethodHandles.Lookup

Claes Redestad redestad at openjdk.org
Wed Sep 25 12:13:40 UTC 2024


On Wed, 25 Sep 2024 12:03:58 GMT, Chen Liang <liach at openjdk.org> wrote:

>> src/java.base/share/classes/java/lang/invoke/MethodHandles.java line 2276:
>> 
>>> 2274:                 var thisClass = cm.thisClass();
>>> 2275:                 name = thisClass.asInternalName();
>>> 2276:                 sym = thisClass.asSymbol();
>> 
>> We only use this for determining package name are equal, and sym.packageName() does the similar transformations plus a bit more. Likely not a significant cost compared to the `ClassFile::parse` - but perhaps there's room for a utility method to get the package name directly from an internal name?
>
> This is not part of internal code path so I don't think it is that sensitive

Agree - was just thinking out loud on this one. What you have is good enough here.

>> src/java.base/share/classes/java/lang/invoke/MethodHandles.java line 2440:
>> 
>>> 2438:         }
>>> 2439: 
>>> 2440:         record ClassDefiner(Lookup lookup, String name, byte[] bytes, int classFlags, ClassFileDumper dumper) {
>> 
>> Rename `name` to `internalName`, dropping the explicit `internalName()` method.
>
> Should I rename other existing name vars too?

AFAICT they already use the record names, so we're not generating redundant code there.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21170#discussion_r1775111423
PR Review Comment: https://git.openjdk.org/jdk/pull/21170#discussion_r1775110617


More information about the core-libs-dev mailing list