| 209 | MaxSizeVector<Waiter>& waiters_; |
| 210 | |
| 211 | static void CheckState(uint64_t state, bool waiter = false) { |
| 212 | static_assert(kEpochBits >= 20, "not enough bits to prevent ABA problem"); |
| 213 | const uint64_t waiters = (state & kWaiterMask) >> kWaiterShift; |
| 214 | const uint64_t signals = (state & kSignalMask) >> kSignalShift; |
| 215 | eigen_plain_assert(waiters >= signals); |
| 216 | eigen_plain_assert(waiters < (1 << kWaiterBits) - 1); |
| 217 | eigen_plain_assert(!waiter || waiters > 0); |
| 218 | (void)waiters; |
| 219 | (void)signals; |
| 220 | } |
| 221 | |
| 222 | void Park(Waiter* w) { |
| 223 | EIGEN_MUTEX_LOCK lock(w->mu); |
nothing calls this directly
no outgoing calls
no test coverage detected