figure 3. fasttrack race detection algorithm and its comparison to Djit+.
Fasttrack State:
Ct : VC
Lm : VC
Wx : Epoch
Rx : Epoch VC
Djit+ State:
Ct : VC
Lm : VC
Wx : VC
Rx : VC
When Thread t performs rd(t, x):
[Ft reaD same epoch]
if Rx = Et then
skip
endif
63.4% oF reaDs
82.3% of all Operations
[Djit+ reaD same epoch]
if Rx(t) = Ct(t) then
skip
endif
78.0% oF reaDs
[Ft reaD shareD]
if Rx ∈ VC then
assert Wx Ct
Rx (t) := Ct(t)
endif
20.8% oF reaDs
[Ft reaD exclusive]
15.7% oF reaDs
[Djit+ reaD]
if Rx(t) ≠ Ct(t) then
assert Wx Ct
Rx(t) := Ct(t)
endif
22.0% oF reaDs
[Ft reaD share]
0.1% oF reaDs
When Thread t performs wr(t, x):
[Ft write same epoch]
if Wx = Et then
skip
endif
71.0% oF writes
[Ft write exclusive]
if Rx ∈ Epoch then
assert Rx Ct
assert Wx Ct
[Ft write shareD]
if Rx ∈ VC then
assert Rx Ct
assert Wx Ct
Wx := Et
Rx := ⊥e
endif
28.9% oF writes
0.1% oF writes
14.5% of all Operations
[Djit+ write same epoch]
if Wx(t) = Ct(t) then
skip
endif
[Djit+ write]
if Wx(t) ≠ Ct(t) then
assert Wx Ct
assert Rx Ct Wx(t) := Ct(t)
endif
71.0% oF writes
29.0% oF writes