RFR: 8321283: Reuse StringLatin1::equals in regionMatches

David Schlosnagle duke at openjdk.org
Wed Nov 26 20:14:13 UTC 2025


On Sun, 3 Dec 2023 06:05:45 GMT, Francesco Nigro <duke at openjdk.org> wrote:

>> src/java.base/share/classes/java/lang/String.java line 2184:
>> 
>>> 2182:         byte[] tv = value;
>>> 2183:         byte[] ov = other.value;
>>> 2184:         if (coder == otherCoder) {
>> 
>> Is this change needed as `otherCoder` is not reused?
>> 
>> Suggestion:
>> 
>>         byte[] tv = value;
>>         byte[] ov = other.value;
>>         byte coder = coder();
>>         if (coder == other.coder()) {
>
> Not necessary, but given that later, in the path I have introduced, I am using directly the coder byte to both compute the actual length of `tv` (inlining String::length) and verify the coder to be the same for both `tv` and `ov`, I have avoided fetching it twice.
> I see that "could" increase the register pressure, but I haven't verified it yet; there is any performance concern or is a readability/style-only concern?

Defer to the maintainers on preference, I just noticed `otherCoder` was unused outside of single comparison and other similar patterns in this file seem to inline.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16933#discussion_r1413875411


More information about the core-libs-dev mailing list