RFR: Classfile signature bang support [v2]
Chen Liang
liach at openjdk.org
Wed Jan 21 16:18:36 UTC 2026
On Wed, 21 Jan 2026 16:07:23 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:
>> Chen Liang 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 three additional commits since the last revision:
>>
>> - Review, various cleanup
>> - Merge branch 'bworld' of https://github.com/openjdk/valhalla into feature/cf-bang-sig
>> - Classfile signature bang support
>
> src/java.base/share/classes/jdk/internal/classfile/impl/SignaturesImpl.java line 212:
>
>> 210: boolean end = match(';');
>> 211: if (end || match('.')) {
>> 212: t = new ClassTypeSigImpl(RefTypeSig.NullMarker.UNSPECIFIED, Optional.ofNullable(t), className, null2Empty(argTypes));
>
> Why not going through the `of` factory?
I think the old code tries to avoid defensive copy of `argTypes` to save some resources.
> test/jdk/jdk/classfile/SignaturesTest.java line 409:
>
>> 407: <:Ljava/lang/Object;>Ljava/lang/Object;
>> 408: <>Ljava/lang/Object;
>> 409: !Ljava/lang/Object;
>
> Why is this "bad" ?
This is a "bad" class signature; class signature is `superclass [interfaces]` so this is using a `!` type in a superclass.
-------------
PR Review Comment: https://git.openjdk.org/valhalla/pull/1933#discussion_r2713303450
PR Review Comment: https://git.openjdk.org/valhalla/pull/1933#discussion_r2713299796
More information about the valhalla-dev
mailing list