RFR: 8306729: Add nominal descriptors of modules and packages to Constants API [v2]
Adam Sotona
asotona at openjdk.org
Mon Apr 24 15:50:57 UTC 2023
On Mon, 24 Apr 2023 14:30:46 GMT, Roger Riggs <rriggs at openjdk.org> wrote:
>> Adam Sotona has updated the pull request incrementally with one additional commit since the last revision:
>>
>> added links to JVMS and utility methods moved to ConstantUtils
>
> src/java.base/share/classes/java/lang/constant/ConstantUtils.java line 80:
>
>> 78: /**
>> 79: * Validates the correctness of a binary package name. In particular checks for the presence of
>> 80: * invalid characters in the name.
>
> It may be useful to note that the empty string are considered valid.
> Also add @throws NPE; there's an implicit null check in checking the length.
> Also in validateBinaryPackageName and validateModuleName.
I'll add that notes, thanks.
> src/java.base/share/classes/java/lang/constant/ConstantUtils.java line 130:
>
>> 128: }
>> 129: return name;
>> 130: }
>
> If these are performance sensitive or get used a lot, should there be an array of flags indexed by the byte/char to indicate the valid cases?
It is just a range check and three escaped characters check. The range check can be implemented bit-wise and escaped check may be by a switch case, however I don't think there would be any performance benefits.
> src/java.base/share/classes/java/lang/constant/ModuleDescImpl.java line 27:
>
>> 25: package java.lang.constant;
>> 26:
>> 27: record ModuleDescImpl(String moduleName) implements ModuleDesc {
>
> Given the validation is elsewhere, it might be useful to add a comment saying the moduleName must have been validated.
I'll add it, thanks.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13615#discussion_r1175483446
PR Review Comment: https://git.openjdk.org/jdk/pull/13615#discussion_r1175482952
PR Review Comment: https://git.openjdk.org/jdk/pull/13615#discussion_r1175484294
More information about the core-libs-dev
mailing list