Avoid dynamic initialization guards for thread_local seed in raw_hash_set. PiperOrigin-RevId: 938062685 Change-Id: I876d94b29259c737057b701e3bd80db42224927d
diff --git a/absl/container/internal/raw_hash_set.cc b/absl/container/internal/raw_hash_set.cc index 80efa1e..c8936cf 100644 --- a/absl/container/internal/raw_hash_set.cc +++ b/absl/container/internal/raw_hash_set.cc
@@ -83,7 +83,8 @@ static std::atomic<size_t> counter(0); size_t value = counter.fetch_add(1, std::memory_order_relaxed); #endif // ABSL_HAVE_THREAD_LOCAL - return value ^ static_cast<size_t>(reinterpret_cast<uintptr_t>(&counter)); + return (value * size_t{0xad53}) ^ + static_cast<size_t>(reinterpret_cast<uintptr_t>(&counter)); } bool ShouldRehashForBugDetection(size_t capacity) { @@ -138,10 +139,7 @@ // which is caused by non-constexpr initialization. uint16_t NextHashTableSeed() { static_assert(PerTableSeed::kBitCount <= 16); - thread_local uint16_t seed = - static_cast<uint16_t>(reinterpret_cast<uintptr_t>(&seed)); - seed += uint16_t{0xad53}; - return seed; + return static_cast<uint16_t>(RandomSeed()); } GenerationType* EmptyGeneration() {