RFR: 8343249: [Windows] Implement SpinPause [v4]
Stuart Monteith
smonteith at openjdk.org
Mon Dec 2 17:37:43 UTC 2024
On Mon, 18 Nov 2024 06:08:08 GMT, Julian Waters <jwaters at openjdk.org> wrote:
>> SpinPause is currently not implemented on any Windows platforms, due to a lack of access to assembly in the Microsoft compiler. The YieldProcessor macro can act as a stand in for this purpose, as it compiles down to a single pause instruction on x64 (Which seems to be all that one needs to implement SpinPause in HotSpot). I am less certain about the Windows/ARM64 implementation. There, YieldProcessor compiles down to dmb ishst; yield and I am unsure whether that is a correct SpinPause implementation. If need be, I can retract the ARM64 implementation and only have this for x86
>
> Julian Waters has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains five commits:
>
> - Merge branch 'openjdk:master' into patch-13
> - Merge branch 'master' into patch-13
> - Swap to handwritten assembly to implement SpinPause in os_windows_aarch64.cpp
> - YieldProcessor in os_windows_aarch64.cpp
> - 8343249
Apologies - AFAICT that looks functional.
I'm not aware of specific SpinPause benchmarks, however, it is mostly used just for object monitors, so realistically you want to run benchmarks with a reliance on them.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/21781#issuecomment-2512247570
More information about the hotspot-runtime-dev
mailing list