RFR: 8329331: Intrinsify Unsafe::setMemory [v7]

Dean Long dlong at openjdk.org
Mon Apr 8 22:19:12 UTC 2024


On Mon, 8 Apr 2024 19:11:19 GMT, Scott Gibbons <sgibbons at openjdk.org> wrote:

>> This code makes an intrinsic stub for `Unsafe::setMemory` for x86_64.  See [this PR](https://github.com/openjdk/jdk/pull/16760) for discussion around this change.
>> 
>> Overall, making this an intrinsic improves overall performance of `Unsafe::setMemory` by up to 4x for all buffer sizes.
>> 
>> Tested with tier-1 (and full CI).  I've added a table of the before and after numbers for the JMH I ran (`MemorySegmentZeroUnsafe`).
>> 
>> [setMemoryBM.txt](https://github.com/openjdk/jdk/files/14808974/setMemoryBM.txt)
>
> Scott Gibbons has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add movq to locate_operand

Thanks, I see that my ideas have pretty much already been discussed in https://github.com/openjdk/jdk/pull/16760.  I might have missed it, but has the possibility of always setting the aligned interior region with 8 byte stores been discussed?  A literal reading of the javadoc seems to disallow it, but it seems like it should be allowed based on memory coherence.  Only the unaligned head and tail would need special treatment.

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

PR Comment: https://git.openjdk.org/jdk/pull/18555#issuecomment-2043732829


More information about the core-libs-dev mailing list