Merge
authorvaleriep
Wed, 07 Aug 2019 20:47:43 +0000
changeset 57674 4e3a26572bb6
parent 57673 24f1a593dcd0 (current diff)
parent 57672 167cb7b4cd81 (diff)
child 57678 b948b920e29f
Merge
--- a/src/hotspot/share/gc/shared/taskqueue.inline.hpp	Wed Aug 07 20:46:28 2019 +0000
+++ b/src/hotspot/share/gc/shared/taskqueue.inline.hpp	Wed Aug 07 20:47:43 2019 +0000
@@ -184,6 +184,11 @@
   } else {
     // Otherwise, the queue contained exactly one element; we take the slow
     // path.
+
+    // The barrier is required to prevent reordering the two reads of _age:
+    // one is the _age.get() below, and the other is _age.top() above the if-stmt.
+    // The algorithm may fail if _age.get() reads an older value than _age.top().
+    OrderAccess::loadload();
     return pop_local_slow(localBot, _age.get());
   }
 }