6888847: TaskQueue needs release_store() for correctness on RMO machines
Summary: See title.
Reviewed-by: jmasa, ysr, jcoomes, iveresov, tonyp
--- a/hotspot/src/share/vm/utilities/taskqueue.hpp Wed Oct 07 10:09:57 2009 -0400
+++ b/hotspot/src/share/vm/utilities/taskqueue.hpp Wed Oct 07 09:48:42 2009 -0400
@@ -207,7 +207,7 @@
// Actually means 0, so do the push.
uint localBot = _bottom;
_elems[localBot] = t;
- _bottom = increment_index(localBot);
+ OrderAccess::release_store(&_bottom, increment_index(localBot));
return true;
}
return false;
@@ -485,7 +485,7 @@
assert((dirty_n_elems >= 0) && (dirty_n_elems < N), "n_elems out of range.");
if (dirty_n_elems < max_elems()) {
_elems[localBot] = t;
- _bottom = increment_index(localBot);
+ OrderAccess::release_store(&_bottom, increment_index(localBot));
return true;
} else {
return push_slow(t, dirty_n_elems);