RFR(S): 8206003: SafepointSynchronize with TLH: StoreStore barriers should be moved out of the loop
martin.doerr at sap.com
Thu Jun 28 14:52:55 UTC 2018
I have recently come across a bad placement of memory barriers in SafepointSynchronize::begin() and end() which were changed for JEP 312: Thread-Local Handshakes. They iterate over all JavaThreads and call SafepointMechanism::arm_local_poll or disarm_local_poll. Unfortunately, the release barriers are inside the latter functions.
Assume we have several 1000 JavaThreads. This means the code executes several 1000 release barriers on weak memory model platforms (PPC64 and ARM/aarch64). Only one is needed.
A goal of JEP 312 was to minimize latency of safepoints which gets defeated by this issue to some extend on these platforms.
It could be fixed by this proposal:
More information about the hotspot-runtime-dev