src/hotspot/share/runtime/safepointMechanism.cpp
changeset 53775 5d20b085d893
parent 53631 a5321bcfa2de
child 54323 846bc643f4ef
--- a/src/hotspot/share/runtime/safepointMechanism.cpp	Fri Feb 15 07:53:03 2019 -0500
+++ b/src/hotspot/share/runtime/safepointMechanism.cpp	Fri Feb 15 14:15:10 2019 +0100
@@ -86,6 +86,9 @@
 void SafepointMechanism::block_if_requested_slow(JavaThread *thread) {
   // local poll already checked, if used.
   if (global_poll()) {
+    // Any load in ::block must not pass the global poll load.
+    // Otherwise we might load an old safepoint counter (for example).
+    OrderAccess::loadload();
     SafepointSynchronize::block(thread);
   }
   if (uses_thread_local_poll() && thread->has_handshake()) {