On Fri, 19 Apr 2024 22:08:52 GMT, Scott Gibbons <sgibb...@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: > > Long to short jmp; other cleanup The SIGBUS was due to improper scoping of the UnsafeCopyMemoryMark. The change is: ` {` ` // Add set memory mark to protect against unsafe accesses faulting` `- UnsafeCopyMemoryMark(this, ((t == T_BYTE) && !aligned), true);` `+ UnsafeCopyMemoryMark usmm(this, ((t == T_BYTE) && !aligned), true);` ` __ generate_fill(t, aligned, to, value, r11, rax, xmm0);` ` }` ------------- PR Comment: https://git.openjdk.org/jdk/pull/18555#issuecomment-2067758164