Fix misc compilation errors in ThreadCachedIntTest.
authorPeter Griess <pgriess@fb.com>
Thu, 26 Sep 2013 14:25:58 +0000 (09:25 -0500)
committerPeter Griess <pgriess@fb.com>
Tue, 15 Oct 2013 01:46:58 +0000 (18:46 -0700)
Summary:
- int64_t is a long on x86_64, but a long long on 32-bit.
- Build a uint64_t from pthread_self() before performing masking on it.

Test Plan:
- fbconfig -r folly && fbmake runtests
- ./configure && make check on Ubuntu/FC/Mac

Reviewed By: andrei.alexandrescu@fb.com

FB internal diff: D998598

folly/test/ThreadCachedIntTest.cpp

index 9272fb293e7917b148de8f582118edf480d898e4..3f0287694c7603e91c79723d9086648ed1486bde 100644 (file)
@@ -162,7 +162,8 @@ struct ShardedAtomicInt {
   std::atomic<int64_t> ints_[kBuckets_];
 
   inline void inc(int64_t val = 1) {
-    int bucket = hash::twang_mix64(pthread_self()) & (kBuckets_ - 1);
+    int bucket = hash::twang_mix64(
+      uint64_t(pthread_self())) & (kBuckets_ - 1);
     std::atomic_fetch_add(&ints_[bucket], val);
   }
 
@@ -193,8 +194,10 @@ REG_BASELINE(_thread64, global__thread64 += 1);
 REG_BASELINE(_thread32, global__thread32 += 1);
 REG_BASELINE(ThreadLocal64, *globalTL64Baseline += 1);
 REG_BASELINE(ThreadLocal32, *globalTL32Baseline += 1);
-REG_BASELINE(atomic_inc64, std::atomic_fetch_add(&globalInt64Baseline, 1L));
-REG_BASELINE(atomic_inc32, std::atomic_fetch_add(&globalInt32Baseline, 1));
+REG_BASELINE(atomic_inc64,
+             std::atomic_fetch_add(&globalInt64Baseline, int64_t(1)));
+REG_BASELINE(atomic_inc32,
+             std::atomic_fetch_add(&globalInt32Baseline, int32_t(1)));
 REG_BASELINE(ShardedAtm64, shd_int64.inc());
 
 BENCHMARK_PARAM(BM_mt_cache_size64, 0);