RFR: 8331291: java.lang.classfile.Attributes class performs a lot of static initializations [v8]
Chen Liang
liach at openjdk.org
Sun May 12 15:14:04 UTC 2024
On Mon, 6 May 2024 18:24:25 GMT, Adam Sotona <asotona at openjdk.org> wrote:
>> Hi,
>> During performance optimization work on Class-File API as JDK lambda generator we found some static initialization killers.
>> One of them is `java.lang.classfile.Attributes` with tens of static fields initialized with individual attribute mappers, and common set of all mappers, and static map from attribute names to the mappers.
>>
>> I propose to turn all the static fields into lazy-initialized static methods and remove `PREDEFINED_ATTRIBUTES` and `standardAttribute(Utf8Entry name)` static mapping method from the `Attributes` API class.
>>
>> Please let me know your comments or objections and please review the [PR](https://github.com/openjdk/jdk/pull/19006) and [CSR](https://bugs.openjdk.org/browse/JDK-8331414), so we can make it into 23.
>>
>> Thank you,
>> Adam
>
> Adam Sotona has updated the pull request incrementally with one additional commit since the last revision:
>
> fixed tests
src/java.base/share/classes/java/lang/classfile/Attributes.java line 153:
> 151:
> 152: /**
> 153: * {@return Attribute mapper for the {@code AnnotationDefault} attribute}
Just wondering, can we change `{@code AnnotationDefault}` to `{@value #NAME_ANNOTATION_DEFAULT}`, etc? This way, the names are still rendered as code in Javadoc HTML, but they are generated with links to the constants, and programmers will see these constants and prefer them over hardcoded values.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/19006#discussion_r1597655934
More information about the compiler-dev
mailing list