RFR: 8339876: Move constant symbol caches to Utf8EntryImpl

ExE Boss duke at openjdk.org
Thu Sep 12 07:16:04 UTC 2024


On Wed, 11 Sep 2024 23:31:33 GMT, Chen Liang <liach at openjdk.org> wrote:

> Some type descriptors are validated against generic utf8 entries, such as field or method types; we can cache a type descriptor wrapping the content of the utf8 entry if this entry is ever used as a type descriptor.
> 
> This patch is more of a code cleanup; it is performance neutral.

src/java.base/share/classes/jdk/internal/classfile/impl/SplitConstantPool.java line 507:

> 505:     public MethodTypeEntry methodTypeEntry(MethodTypeDesc descriptor) {
> 506:         return methodTypeEntry(utf8Entry(descriptor));
> 507:     }

This method body can be moved to [`ConstantPoolBuilder​::methodTypeEntry​(MethodTypeDesc)`] and that method be made `default` like [`ConstantPoolBuilder​::classEntry​(ClassDesc)`], [`ConstantPoolBuilder​::packageEntry​(PackageDesc)`], and [`ConstantPoolBuilder​::moduleEntry​(ModuleDesc)`].

[`ConstantPoolBuilder​::methodTypeEntry​(MethodTypeDesc)`]: https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/lang/classfile/constantpool/ConstantPoolBuilder.html#methodTypeEntry(java.lang.constant.MethodTypeDesc)
[`ConstantPoolBuilder​::classEntry​(ClassDesc)`]: https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/lang/classfile/constantpool/ConstantPoolBuilder.html#classEntry(java.lang.constant.ClassDesc)
[`ConstantPoolBuilder​::packageEntry​(PackageDesc)`]: https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/lang/classfile/constantpool/ConstantPoolBuilder.html#packageEntry(java.lang.constant.PackageDesc)
[`ConstantPoolBuilder​::moduleEntry​(ModuleDesc)`]: https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/lang/classfile/constantpool/ConstantPoolBuilder.html#moduleEntry(java.lang.constant.ModuleDesc)

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20957#discussion_r1756268000


More information about the core-libs-dev mailing list