RTS: fix pushWSDeque to invoke write barrier when element is added
authorKarel Gardas <karel.gardas@centrum.cz>
Sat, 9 Jul 2011 16:07:00 +0000 (18:07 +0200)
committerManuel M T Chakravarty <chak@cse.unsw.edu.au>
Wed, 10 Aug 2011 12:03:41 +0000 (22:03 +1000)
commit9ebdbb27a8b26a424cab8916f5f0c2388af2ce2d
treecee2c64e7a490a947551a1c270f15c50f67ff70c
parenta9b455c4b6960d47d31e769052104a4a4fc26cf0
RTS: fix pushWSDeque to invoke write barrier when element is added

This patch fixes RTS' pushWSDeque function. We need to invoke
write barrier after element is added to the queue and before moving
bottom. The reason for this is possible write reordering on modern CPUs
(e.g. ARMv7MP) where setting of element might be done later after moving
bottom. When such situation happen other thread might be waiting to steal
data from the queue and when bottom is moved it eagerly steals undefined
data from the queue since setting of element has not happened yet.
rts/WSDeque.c