Summary:
Somebody reported compilation issues with the closure in post()'s
assert, resulting in "error: lambda-expression in unevaluated context".
While I haven't been able to reproduce the problem locally, it is easy
enough to work around in this case.
Reviewed By: djwatson, mcallahan
Differential Revision:
D6759739
fbshipit-source-id:
9f8082a1e20cd9ddf626cb176542e4e861a7e702
if (!MayBlock) {
/// Spin-only version
///
- assert([&] {
- auto state = state_.load(std::memory_order_relaxed);
- return (state == INIT || state == EARLY_DELIVERY);
- }());
+ assert(
+ ((1 << state_.load(std::memory_order_relaxed)) &
+ ((1 << INIT) | (1 << EARLY_DELIVERY))) != 0);
state_.store(EARLY_DELIVERY, std::memory_order_release);
return;
}