RFR: 8357289: Break down the String constructor into smaller methods [v3]
Per Minborg
pminborg at openjdk.org
Mon May 26 12:02:55 UTC 2025
On Sun, 25 May 2025 12:54:03 GMT, Chen Liang <liach at openjdk.org> wrote:
>> private String(char[] value, int off, int len, Void sig) {
>> if (len == 0) {
>> this.value = "".value;
>> this.coder = "".coder;
>> return;
>> }
>> if (COMPACT_STRINGS) {
>> byte[] val = StringUTF16.compress(value, off, len);
>> this.coder = StringUTF16.coderFromArrayLen(val, len);
>> this.value = val;
>> return;
>> }
>> this.coder = UTF16;
>> this.value = StringUTF16.toBytes(value, off, len);
>> }
>>
>>
>> This constructor has additional processing logic for len == 0.
>>
>> ValueObject may be used here in the future. I think it is better to keep the original structure.
>
> I thought this would both increase cleaniness and reduce code size of the decode method. @minborg What do you think? This also removes one of the switches on COMPACT_STRING.
I think it is better to keep the code smaller rather than saving 0.2 ns for skipping the zero-length check, which might get optimized away anyhow.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25290#discussion_r2107187594
More information about the core-libs-dev
mailing list