RFR: 8306697: Add method to obtain String for CONSTANT_Class_info in ClassDesc [v2]
Mandy Chung
mchung at openjdk.org
Thu Apr 27 17:56:25 UTC 2023
On Sat, 22 Apr 2023 18:40:45 GMT, Chen Liang <liach at openjdk.org> wrote:
>> Add a method `internalName` to `ClassDesc`, and unifies handling of string representation of a class constant in CONSTANT_Class_info via `ofInternalName` and `internalName` APIs, documented in `ClassDesc` itself. In particular, `ofInternalName` now accepts arrays.
>>
>> The motivation of this API is that avoiding frequent String creations via caching (enabled by this new API, will be in a separate patch) would speed up Classfile API's [writing of simple class files](https://github.com/openjdk/jdk/blob/master/test/micro/org/openjdk/bench/jdk/classfile/Write.java) by 1/3. See https://mail.openjdk.org/pipermail/classfile-api-dev/2023-April/000296.html for more context.
>>
>> This API is futureproof: for Valhalla's Q-types, it will return their string representation in CONSTANT_Class_info, which is most likely their full descriptor string.
>>
>> Javadoc: https://cr.openjdk.org/~liach/8306697/java.base/java/lang/constant/ClassDesc.html
>
> Chen Liang has updated the pull request incrementally with one additional commit since the last revision:
>
> Unify ofInternalName and internalName, document about CONSTANT_Class_info, remove misleading JVMS 4.4.1 links
With option 4, `ConstantPoolBuilder::classEntry` can simply become:
default ClassEntry classEntry(ClassDesc classDesc) {
return classEntry(utf8Entry(classDesc.classDescString()));
}
vs option 2:
default ClassEntry classEntry(ClassDesc classDesc) {
return classEntry(utf8Entry(classDesc.isPrimitive()
? classDesc.descriptorString()
: classDesc.internalName().get()));
}
-------------
PR Comment: https://git.openjdk.org/jdk/pull/13598#issuecomment-1526089568
More information about the core-libs-dev
mailing list