X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=folly%2FMicroSpinLock.h;h=17d181f79dc2dfee75cd9430e21aa5c676d6b532;hb=HEAD;hp=ee2c4420f62a33953d68d94885708ece6cddfe0b;hpb=2177f05a16891e5dc381ccfa56d36ce91418aa09;p=folly.git diff --git a/folly/MicroSpinLock.h b/folly/MicroSpinLock.h index ee2c4420..17d181f7 100644 --- a/folly/MicroSpinLock.h +++ b/folly/MicroSpinLock.h @@ -1,5 +1,5 @@ /* - * Copyright 2017 Facebook, Inc. + * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -39,16 +39,14 @@ #include #include -#include -#include +#include +#include #include #include -#include -#include - #include -#include +#include +#include namespace folly { @@ -86,11 +84,11 @@ struct MicroSpinLock { sleeper.wait(); } } while (!try_lock()); - DCHECK(payload()->load() == LOCKED); + assert(payload()->load() == LOCKED); } void unlock() { - CHECK(payload()->load() == LOCKED); + assert(payload()->load() == LOCKED); payload()->store(FREE, std::memory_order_release); } @@ -121,7 +119,7 @@ static_assert( #define FOLLY_CACHE_LINE_SIZE 64 template -struct FOLLY_ALIGNED_MAX SpinLockArray { +struct alignas(max_align_v) SpinLockArray { T& operator[](size_t i) { return data_[i].lock; } @@ -143,9 +141,8 @@ struct FOLLY_ALIGNED_MAX SpinLockArray { // Check if T can theoretically cross a cache line. static_assert( - folly::max_align_v > 0 && - FOLLY_CACHE_LINE_SIZE % folly::max_align_v == 0 && - sizeof(T) <= folly::max_align_v, + max_align_v > 0 && FOLLY_CACHE_LINE_SIZE % max_align_v == 0 && + sizeof(T) <= max_align_v, "T can cross cache line boundaries"); char padding_[FOLLY_CACHE_LINE_SIZE]; @@ -158,4 +155,4 @@ typedef std::lock_guard MSLGuard; ////////////////////////////////////////////////////////////////////// -} +} // namespace folly