RFR: 8357531: The `SegmentBulkOperations::fill` method can be improved using overlaps [v6]
Andrew Haley
aph at openjdk.org
Thu May 29 09:54:57 UTC 2025
On Tue, 27 May 2025 12:03:41 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 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 seven additional commits since the last revision:
>
> - Merge branch 'master' into fill-overlap
> - Update test/micro/org/openjdk/bench/java/lang/foreign/SegmentBulkFill.java
>
> Co-authored-by: Andrey Turbanov <turbanoff at gmail.com>
> - Update benchmark to reflect new fill method
> - Simplify
> - Add case for long operations and break out methods
> - Correct typo in comment
> - Simplify the fill method
test/micro/org/openjdk/bench/java/lang/foreign/SegmentBulkFill.java line 98:
> 96: }
> 97:
> 98: @Fork(value = 3, jvmArgs = {"-Djava.lang.foreign.native.threshold.power.fill=0"})
Why did you remove this line? It's essential for correct `Unsafe` results.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25383#discussion_r2113610553
More information about the core-libs-dev
mailing list