RFR: 8310843: Reimplement ByteArray and ByteArrayLittleEndian with Unsafe [v10]

Roger Riggs rriggs at openjdk.org
Thu Jul 20 14:05:48 UTC 2023


On Thu, 13 Jul 2023 23:05:48 GMT, Glavo <duke at openjdk.org> wrote:

>> `ByteArray` and `ByteArrayLittleEndian` are very useful tool classes that can be used in many places to performance tuning.
>> 
>> Currently they are implemented by `VarHandle`, so using them may have some impact on startup time.
>> 
>> This PR reimplements them using `Unsafe`, which reduces the impact on startup time.
>
> Glavo has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 15 additional commits since the last revision:
> 
>  - Merge branch 'openjdk:master' into unsafe
>  - add 8310843 to @bug
>  - Merge branch 'openjdk:master' into unsafe
>  - Merge branch 'openjdk:master' into unsafe
>  - delete incorrect comments
>  - delete extraneous whitespace
>  - add javadoc
>  - delete extraneous whitespace
>  - fix test
>  - update tests
>  - ... and 5 more: https://git.openjdk.org/jdk/compare/29f2390f...cb56e736

These classes are used where numbers are being formatted into existing byte arrays and may be assembled with other strings.
For example, StringConcatHelper and AbstractStringBuilder, both optimized for assembling LATIN1 and UTF16 strings.
Switching to use a different implementation would result in more allocation and/or copying the strings.

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

PR Comment: https://git.openjdk.org/jdk/pull/14636#issuecomment-1643986050


More information about the core-libs-dev mailing list