RFR: 8310929: Optimization for Integer.toString [v12]

温绍锦 duke at openjdk.org
Thu Jul 20 09:22:48 UTC 2023


On Mon, 17 Jul 2023 20:54:25 GMT, Roger Riggs <rriggs at openjdk.org> wrote:

>> 温绍锦 has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Integer/Long toString test against compact strings
>>   
>>   Co-authored-by: liach <liach at users.noreply.github.com>
>
> src/java.base/share/classes/java/lang/Long.java line 559:
> 
>> 557:                     Unsafe.ARRAY_BYTE_BASE_OFFSET + charPos,
>> 558:                     Integer.PACKED_DIGITS[(int)((q * 100) - i)],
>> 559:                     false);
> 
> Add the array bound check for the store of the characters.

I added assert with reference to the implementation of StringUTF16#putChar, is this safe enough?

> src/java.base/share/classes/java/lang/Long.java line 584:
> 
>> 582:                     Unsafe.ARRAY_BYTE_BASE_OFFSET + charPos,
>> 583:                     Integer.PACKED_DIGITS[-i2],
>> 584:                     false);
> 
> Replace the implicit array bounds check with an explicit array index check if using Unsafe.

I added assert with reference to the implementation of StringUTF16#putChar, is this safe enough?

> src/java.base/share/classes/java/lang/StringUTF16.java line 1595:
> 
>> 1593:                     PACKED_DIGITS_UTF16[-i]);
>> 1594:         } else {
>> 1595:             putChar(buf, --charPos, '0' - i);
> 
> Ditto add explicit array bounds check when using Unsafe, especially since the method is used outside of the source file.  Here and in the uses of Unsafe below.

I added assert with reference to the implementation of StringUTF16#putChar, is this safe enough?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/14699#discussion_r1269188797
PR Review Comment: https://git.openjdk.org/jdk/pull/14699#discussion_r1269188920
PR Review Comment: https://git.openjdk.org/jdk/pull/14699#discussion_r1269189024


More information about the core-libs-dev mailing list