mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-20 04:43:32 +00:00
8229169: False failure of GenericTaskQueue::pop_local on architectures with weak memory model
Reviewed-by: mdoerr, kbarrett, tschatzl
This commit is contained in:
parent
5233e25c4c
commit
854eeb238e
@ -184,6 +184,11 @@ GenericTaskQueue<E, F, N>::pop_local(volatile E& t, uint threshold) {
|
||||
} 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());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user