| @@ -29,27 +29,27 @@ class StaticSpinMutex { | | | @@ -29,27 +29,27 @@ class StaticSpinMutex { |
29 | return; | | 29 | return; |
30 | LockSlow(); | | 30 | LockSlow(); |
31 | } | | 31 | } |
32 | | | 32 | |
33 | bool TryLock() { | | 33 | bool TryLock() { |
34 | return atomic_exchange(&state_, 1, memory_order_acquire) == 0; | | 34 | return atomic_exchange(&state_, 1, memory_order_acquire) == 0; |
35 | } | | 35 | } |
36 | | | 36 | |
37 | void Unlock() { | | 37 | void Unlock() { |
38 | atomic_store(&state_, 0, memory_order_release); | | 38 | atomic_store(&state_, 0, memory_order_release); |
39 | } | | 39 | } |
40 | | | 40 | |
41 | void CheckLocked() { | | 41 | void CheckLocked() { |
42 | CHECK_EQ(atomic_load(&state_, memory_order_relaxed), 1); | | 42 | CHECK_NE(atomic_load(&state_, memory_order_relaxed), 0); |
43 | } | | 43 | } |
44 | | | 44 | |
45 | private: | | 45 | private: |
46 | atomic_uint8_t state_; | | 46 | atomic_uint8_t state_; |
47 | | | 47 | |
48 | void NOINLINE LockSlow() { | | 48 | void NOINLINE LockSlow() { |
49 | for (int i = 0;; i++) { | | 49 | for (int i = 0;; i++) { |
50 | if (i < 10) | | 50 | if (i < 10) |
51 | proc_yield(10); | | 51 | proc_yield(10); |
52 | else | | 52 | else |
53 | internal_sched_yield(); | | 53 | internal_sched_yield(); |
54 | if (atomic_load(&state_, memory_order_relaxed) == 0 | | 54 | if (atomic_load(&state_, memory_order_relaxed) == 0 |
55 | && atomic_exchange(&state_, 1, memory_order_acquire) == 0) | | 55 | && atomic_exchange(&state_, 1, memory_order_acquire) == 0) |