RFR: 8357531: The `SegmentBulkOperations::fill` method can be improved using overlaps [v5]

Andrey Turbanov aturbanov at openjdk.org
Tue May 27 10:04: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

test/micro/org/openjdk/bench/java/lang/foreign/SegmentBulkFill.java line 53:

> 51: @State(Scope.Thread)
> 52: @OutputTimeUnit(TimeUnit.NANOSECONDS)
> 53: @Fork(value = 3, jvmArgs = { "--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED","--add-opens=java.base/jdk.internal.foreign=ALL-UNNAMED"})

Suggestion:

@Fork(value = 3, jvmArgs = {"--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED", "--add-opens=java.base/jdk.internal.foreign=ALL-UNNAMED"})

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25383#discussion_r2108774005


More information about the core-libs-dev mailing list