RFR: 8357531: The `SegmentBulkOperations::fill` method can be improved using overlaps [v5]
Chen Liang
liach at openjdk.org
Fri May 23 19:55:54 UTC 2025
On Thu, 22 May 2025 11:52:34 GMT, Per Minborg <pminborg at openjdk.org> wrote:
>> This PR builds on a concept John Rose told me about some time ago. Instead of combining memory operations of various sizes, a single large and skewed memory operation can be made to clean up the tail of remaining bytes.
>>
>> This has the effect of simplifying and shortening the code. The number of branches to evaluate is reduced.
>>
>> It should be noted that the performance of the fill operation affects the allocation of new segments (as they are zeroed out before being returned to the client code).
>>
>> This PR passes tier1, tier2, and tier3 on multiple platforms.
>
> Per Minborg has updated the pull request incrementally with one additional commit since the last revision:
>
> Update benchmark to reflect new fill method
Can we remove all meaningless `!Architecture.isLittleEndian()` calls and use the platform-specific endianness unsafe primitives instead? For compensation, we can add a check in each of fill2/fill3/fill4 that `assert value == Integer/Short/Long.reverseBytes(value)` if you think that is necessary.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/25383#issuecomment-2905651428
More information about the core-libs-dev
mailing list