spsc example
[model-checker-benchmarks.git] / chase-lev-deque-bugfix / note.txt
1 #1: Ordering parameters
2
3 wildcard8 -> sc (fence in take())
4 wildcard12 -> sc (update of top in take())
5 *wildcard23 -> release (update of array in resize())
6 wildcard25 -> acquire (load of top in push())
7 *wildcard31 -> release (fence in push())
8 wildcard33 -> acquire (load of top in steal())
9 wildcard34 -> sc (fence in steal())
10 *wildcard35 -> acquire (load of bottom in steal())
11 *wildcard36 -> acquire (load of array in steal())
12 wildcard39 -> sc (update of top in steal())
13
14 #1:
15 wildcard23 -> release
16 wildcard36 -> acquire
17 Update of array in resize(), should be release; since only steal() need to
18 establish hb, so in steal wildcard36 should be acquire.
19
20 wildcard31 -> release (fence) 
21 wildcard35 -> acquire
22 Establish hb between push() and steal() via the variable bottom. 
23
24 wildcard33 -> acquire
25 wildcard12 -> release (at least)
26 Establish hb between take() and steal() when there's only one element in the
27 deque, and take() gets the last element. The hb ensures that the steal() will
28 see the updated bottom in take().