Fixes for C++98
authorJeff Preshing <filter-github@preshing.com>
Wed, 18 May 2016 18:19:40 +0000 (14:19 -0400)
committerJeff Preshing <filter-github@preshing.com>
Wed, 18 May 2016 18:19:40 +0000 (14:19 -0400)
20 files changed:
junction/QSBR.cpp
junction/extra/impl/MapAdapter_CDS_Cuckoo.h
junction/extra/impl/MapAdapter_CDS_Michael.h
junction/extra/impl/MapAdapter_Crude.h
junction/extra/impl/MapAdapter_Folly.h
junction/extra/impl/MapAdapter_Grampa.h
junction/extra/impl/MapAdapter_Leapfrog.h
junction/extra/impl/MapAdapter_Leapfrog_RWLock.h
junction/extra/impl/MapAdapter_LibCuckoo.h
junction/extra/impl/MapAdapter_Linear.h
junction/extra/impl/MapAdapter_Linear_Mutex.h
junction/extra/impl/MapAdapter_Linear_RWLock.h
junction/extra/impl/MapAdapter_NBDS.h
junction/extra/impl/MapAdapter_Null.h
junction/extra/impl/MapAdapter_StdMap.h
junction/extra/impl/MapAdapter_TBB.h
junction/extra/impl/MapAdapter_Tervel.h
samples/MapCorrectnessTests/TestEnvironment.h
samples/MapPerformanceTests/MapPerformanceTests.cpp
samples/MapScalabilityTests/MapScalabilityTests.cpp

index b1ed1385e2a8f8d4ede8f657dcc98f0798b2922a..c8131e64ac24f7211c0c23258eb7928962ac2c6c 100644 (file)
@@ -14,7 +14,6 @@
 #include <turf/Thread.h>
 #include <turf/Mutex.h>
 #include <turf/RaceDetector.h>
-#include <unordered_map>
 #include <vector>
 
 namespace junction {
index 56ea0dfef5d2858d8cccc6b8071e357c0bde4f73..975ab880db06d50cc5d10b05cbefefe9d2844376 100644 (file)
@@ -30,7 +30,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "CDS CuckooMap";
+    static TURF_CONSTEXPR const char* getMapName() { return "CDS CuckooMap"; }
 
     cds::gc::HP* m_hpGC;
 
index 8820b79e5a49cc5f5cb6e7941e65971782dfe70e..b82ddfceff001fb72b147ee14b60172a7c06ccc5 100644 (file)
@@ -30,7 +30,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "CDS MichaelKVList";
+    static TURF_CONSTEXPR const char* getMapName() { return "CDS MichaelKVList"; }
 
     cds::gc::HP* m_hpGC;
 
index 1548ff6c492865a806ee376b5c4c2e5d377e9a6e..b64ad2fbc3f095b1586b8183ba16e775943f2d6a 100644 (file)
@@ -22,7 +22,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "Junction Crude map";
+    static TURF_CONSTEXPR const char* getMapName() { return "Junction Crude map"; }
 
     MapAdapter(ureg) {
     }
index 2054483d85335511378c25b2dfb2230cc821012a..dd2378fbe9099f04cb85e2b0508cfacf92e000f0 100644 (file)
@@ -26,7 +26,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "Folly AtomicHashMap";
+    static TURF_CONSTEXPR const char* getMapName() { return "Folly AtomicHashMap"; }
 
     MapAdapter(ureg) {
     }
index 9bf4bf401417ff688725382d6cfba45af4fefa58..4ee552f211b9250f6ba501f0901b3b86ce54287a 100644 (file)
@@ -23,7 +23,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "Junction Grampa map";
+    static TURF_CONSTEXPR const char* getMapName() { return "Junction Grampa map"; }
 
     MapAdapter(ureg) {
     }
index 7661725c01619568559d1981f867f59dba7ffe1f..9e89f9dd7b8ae3143e52d539f33a680f94715695 100644 (file)
@@ -23,7 +23,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "Junction Leapfrog map";
+    static TURF_CONSTEXPR const char* getMapName() { return "Junction Leapfrog map"; }
 
     MapAdapter(ureg) {
     }
index 547cee3cdc3bc6f79d0eaa62bbe54f7d5f017f7e..d47780a42006482dd85391a00ffd89ff7c2008bd 100644 (file)
@@ -23,7 +23,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "Single + RWLock";
+    static TURF_CONSTEXPR const char* getMapName() { return "Single + RWLock"; }
 
     MapAdapter(ureg) {
     }
index 784f9b034d2847af2caa895a680eb78f23db112a..2f905872e90ba12c5bc3f8568451f361a0ad9da5 100644 (file)
@@ -26,7 +26,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "libcuckoo cuckoohash_map";
+    static TURF_CONSTEXPR const char* getMapName() { return "libcuckoo cuckoohash_map"; }
 
     MapAdapter(ureg) {
     }
index d991782e896d99a6a0189badeefc40ce8d897d7d..d0ae898b40d794caa902a50032222983df452bbe 100644 (file)
@@ -23,7 +23,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "Junction Linear map";
+    static TURF_CONSTEXPR const char* getMapName() { return "Junction Linear map"; }
 
     MapAdapter(ureg) {
     }
index 3592a1f7f5e6ce2944327057fc6c293d7ef6bb3b..c11acba6f5b820ad715107b70d4d15ef74c14f93 100644 (file)
@@ -23,7 +23,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "Single + Mutex";
+    static TURF_CONSTEXPR const char* getMapName() { return "Single + Mutex"; }
 
     MapAdapter(ureg) {
     }
index 24bb227b89bc3dd7472945a81f280836c03446b0..7109c13cc34e1ada79e9fc6c84b4e7d5c3ede041 100644 (file)
@@ -23,7 +23,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "Single + RWLock";
+    static TURF_CONSTEXPR const char* getMapName() { return "Single + RWLock"; }
 
     MapAdapter(ureg) {
     }
index 13e933406c36a2a9874a36350963c27ccaa89727..8e2e7454a02b37db641659d75809deb58790072c 100644 (file)
@@ -31,7 +31,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "nbds hashtable_t";
+    static TURF_CONSTEXPR const char* getMapName() { return "nbds hashtable_t"; }
 
     MapAdapter(ureg) {
     }
index f25dd9dc2146274c8479d930ae1d91b083fd91c1..dfbb0ad2fc2574bd81be3f8b2e4e956e6ff11fe3 100644 (file)
@@ -20,7 +20,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "Null";
+    static TURF_CONSTEXPR const char* getMapName() { return "Null"; }
 
     MapAdapter(ureg) {
     }
index 9fde8f4b136eb63eaf209f50bc7bd47b0ebf53f5..9ec81dacc3a47ea2121b6647a11eb3d4b422b9d8 100644 (file)
@@ -22,7 +22,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "std::map + std::mutex";
+    static TURF_CONSTEXPR const char* getMapName() { return "std::map + std::mutex"; }
 
     MapAdapter(ureg) {
     }
index 3e9bc0129ea112a140d13f7a05f289a626d5699d..a40972611384e976db315f13d200e602e9c49a28 100644 (file)
@@ -26,7 +26,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "Intel TBB concurrent_hash_map";
+    static TURF_CONSTEXPR const char* getMapName() { return "Intel TBB concurrent_hash_map"; }
 
     MapAdapter(ureg) {
     }
index 440dff002dba4549ab21d3aa50f8165799f223d3..a3f7ebd19da5ddbd5e227732f04bb89c6112dbaa 100644 (file)
@@ -27,7 +27,7 @@ namespace extra {
 
 class MapAdapter {
 public:
-    static TURF_CONSTEXPR const char* MapName = "Tervel HashMap";
+    static TURF_CONSTEXPR const char* getMapName() { return "Tervel HashMap"; }
 
     tervel::Tervel m_tervel;
 
index 2ff9997fc9ee988f5f941ca9c8229b4023beab2a..7ef9b6b6b2ed6d220165a5d5ff603d28a8307f69 100644 (file)
@@ -30,7 +30,7 @@ struct TestEnvironment {
     TestEnvironment() : numThreads(dispatcher.getNumPhysicalCores()), adapter(numThreads) {
         TURF_ASSERT(numThreads > 0);
         for (ureg t = 0; t < numThreads; t++)
-            threads.emplace_back(adapter, t);
+            threads.push_back(MapAdapter::ThreadContext(adapter, t));
         dispatcher.kickMulti(&MapAdapter::ThreadContext::registerThread, &threads[0], threads.size());
     }
 
index ceead97ea0b19dbfb31897591a51b2547104eee8..331aba09dbcc734b55c3894c67f2a934f52de293 100644 (file)
@@ -19,6 +19,7 @@
 #include <junction/extra/MapAdapter.h>
 #include <algorithm>
 #include <vector>
+#include <stdio.h>
 
 using namespace turf::intTypes;
 typedef junction::extra::MapAdapter MapAdapter;
@@ -70,7 +71,7 @@ struct SharedState {
 
 class ThreadState {
 public:
-    SharedState& m_shared;
+    SharedState* m_shared;
     MapAdapter::ThreadContext m_threadCtx;
     ureg m_threadIndex;
     u32 m_rangeLo;
@@ -104,8 +105,8 @@ public:
 
     Stats m_stats;
 
-    ThreadState(SharedState& shared, ureg threadIndex, u32 rangeLo, u32 rangeHi)
-        : m_shared(shared), m_threadCtx(shared.adapter, threadIndex) {
+    ThreadState(SharedState* shared, ureg threadIndex, u32 rangeLo, u32 rangeHi)
+        : m_shared(shared), m_threadCtx(shared->adapter, threadIndex) {
         m_threadIndex = threadIndex;
         m_rangeLo = rangeLo;
         m_rangeHi = rangeHi;
@@ -123,8 +124,8 @@ public:
 
     void initialPopulate() {
         TURF_ASSERT(m_addIndex == m_removeIndex);
-        MapAdapter::Map* map = m_shared.map;
-        for (ureg i = 0; i < m_shared.numKeysPerThread; i++) {
+        MapAdapter::Map* map = m_shared->map;
+        for (ureg i = 0; i < m_shared->numKeysPerThread; i++) {
             u32 key = m_addIndex * Prime;
             map->assign(key, (void*) (key & ~uptr(3)));
             if (++m_addIndex == m_rangeHi)
@@ -133,17 +134,17 @@ public:
     }
 
     void run() {
-        MapAdapter::Map* map = m_shared.map;
+        MapAdapter::Map* map = m_shared->map;
         turf::CPUTimer::Converter converter;
-        Delay delay(m_shared.delayFactor);
+        Delay delay(m_shared->delayFactor);
         Stats stats;
         ureg lookupIndex = m_rangeLo;
-        ureg remaining = m_shared.itersPerChunk;
+        ureg remaining = m_shared->itersPerChunk;
         if (m_threadIndex == 0)
-            m_shared.spinKicker.kick(m_shared.numThreads - 1);
+            m_shared->spinKicker.kick(m_shared->numThreads - 1);
         else {
             remaining = ~u32(0);
-            m_shared.spinKicker.waitForKick();
+            m_shared->spinKicker.waitForKick();
         }
 
         // ---------
@@ -151,7 +152,7 @@ public:
         for (; remaining > 0; remaining--) {
             // Add
             delay.delay(stats.workUnitsDone);
-            if (m_shared.doneFlag.load(turf::Relaxed))
+            if (m_shared->doneFlag.load(turf::Relaxed))
                 break;
             u32 key = m_addIndex * Prime;
             if (key >= 2) {
@@ -164,9 +165,9 @@ public:
             // Lookup
             if (s32(lookupIndex - m_removeIndex) < 0)
                 lookupIndex = m_removeIndex;
-            for (ureg l = 0; l < m_shared.readsPerWrite; l++) {
+            for (ureg l = 0; l < m_shared->readsPerWrite; l++) {
                 delay.delay(stats.workUnitsDone);
-                if (m_shared.doneFlag.load(turf::Relaxed))
+                if (m_shared->doneFlag.load(turf::Relaxed))
                     break;
                 key = lookupIndex * Prime;
                 if (key >= 2) {
@@ -182,7 +183,7 @@ public:
 
             // Remove
             delay.delay(stats.workUnitsDone);
-            if (m_shared.doneFlag.load(turf::Relaxed))
+            if (m_shared->doneFlag.load(turf::Relaxed))
                 break;
             key = m_removeIndex * Prime;
             if (key >= 2) {
@@ -195,9 +196,9 @@ public:
             // Lookup
             if (s32(lookupIndex - m_removeIndex) < 0)
                 lookupIndex = m_removeIndex;
-            for (ureg l = 0; l < m_shared.readsPerWrite; l++) {
+            for (ureg l = 0; l < m_shared->readsPerWrite; l++) {
                 delay.delay(stats.workUnitsDone);
-                if (m_shared.doneFlag.load(turf::Relaxed))
+                if (m_shared->doneFlag.load(turf::Relaxed))
                     break;
                 key = lookupIndex * Prime;
                 if (key >= 2) {
@@ -212,7 +213,7 @@ public:
             }
         }
         if (m_threadIndex == 0)
-            m_shared.doneFlag.store(1, turf::Relaxed);
+            m_shared->doneFlag.store(1, turf::Relaxed);
         m_threadCtx.update();
         turf::CPUTimer::Point end = turf::CPUTimer::get();
         // ---------
@@ -248,7 +249,7 @@ int main(int argc, const char** argv) {
     for (ureg t = 0; t < numThreads; t++) {
         u32 rangeLo = 0xffffffffu / numThreads * t + 1;
         u32 rangeHi = 0xffffffffu / numThreads * (t + 1) + 1;
-        threads.emplace_back(shared, t, rangeLo, rangeHi);
+        threads.push_back(ThreadState(&shared, t, rangeLo, rangeHi));
     }
     dispatcher.kickMulti(&ThreadState::registerThread, &threads[0], threads.size());
 
@@ -259,7 +260,7 @@ int main(int argc, const char** argv) {
         dispatcher.kickMulti(&ThreadState::initialPopulate, &threads[0], threads.size());
 
         printf("{\n");
-        printf("'mapType': '%s',\n", MapAdapter::MapName);
+        printf("'mapType': '%s',\n", MapAdapter::getMapName());
         printf("'readsPerWrite': %d,\n", (int) readsPerWrite);
         printf("'itersPerChunk': %d,\n", (int) itersPerChunk);
         printf("'chunks': %d,\n", (int) chunks);
index a9fa58b48052b2c621363bcc43119584ab68f955..839656ffbb8b704cfe051a7e8fdd178bf5a2dc98 100644 (file)
@@ -19,6 +19,7 @@
 #include <junction/extra/MapAdapter.h>
 #include <algorithm>
 #include <vector>
+#include <stdio.h>
 
 using namespace turf::intTypes;
 typedef junction::extra::MapAdapter MapAdapter;
@@ -49,7 +50,7 @@ struct SharedState {
 
 class ThreadState {
 public:
-    SharedState& m_shared;
+    SharedState* m_shared;
     MapAdapter::ThreadContext m_threadCtx;
     ureg m_threadIndex;
     u32 m_rangeLo;
@@ -80,8 +81,8 @@ public:
 
     Stats m_stats;
 
-    ThreadState(SharedState& shared, ureg threadIndex, u32 rangeLo, u32 rangeHi)
-        : m_shared(shared), m_threadCtx(shared.adapter, threadIndex) {
+    ThreadState(SharedState* shared, ureg threadIndex, u32 rangeLo, u32 rangeHi)
+        : m_shared(shared), m_threadCtx(shared->adapter, threadIndex) {
         m_threadIndex = threadIndex;
         m_rangeLo = rangeLo;
         m_rangeHi = rangeHi;
@@ -99,8 +100,8 @@ public:
 
     void initialPopulate() {
         TURF_ASSERT(m_addIndex == m_removeIndex);
-        MapAdapter::Map* map = m_shared.map;
-        for (ureg i = 0; i < m_shared.numKeysPerThread; i++) {
+        MapAdapter::Map* map = m_shared->map;
+        for (ureg i = 0; i < m_shared->numKeysPerThread; i++) {
             u32 key = m_addIndex * Prime;
             if (key >= 2)
                 map->assign(key, (void*) uptr(key));
@@ -110,23 +111,23 @@ public:
     }
 
     void run() {
-        MapAdapter::Map* map = m_shared.map;
+        MapAdapter::Map* map = m_shared->map;
         turf::CPUTimer::Converter converter;
         Stats stats;
         ureg lookupIndex = m_rangeLo;
-        ureg remaining = m_shared.itersPerChunk;
+        ureg remaining = m_shared->itersPerChunk;
         if (m_threadIndex == 0)
-            m_shared.spinKicker.kick(m_shared.numThreads - 1);
+            m_shared->spinKicker.kick(m_shared->numThreads - 1);
         else {
             remaining = ~u32(0);
-            m_shared.spinKicker.waitForKick();
+            m_shared->spinKicker.waitForKick();
         }
 
         // ---------
         turf::CPUTimer::Point start = turf::CPUTimer::get();
         for (; remaining > 0; remaining--) {
             // Add
-            if (m_shared.doneFlag.load(turf::Relaxed))
+            if (m_shared->doneFlag.load(turf::Relaxed))
                 break;
             u32 key = m_addIndex * Prime;
             if (key >= 2) {
@@ -139,8 +140,8 @@ public:
             // Lookup
             if (s32(lookupIndex - m_removeIndex) < 0)
                 lookupIndex = m_removeIndex;
-            for (ureg l = 0; l < m_shared.readsPerWrite; l++) {
-                if (m_shared.doneFlag.load(turf::Relaxed))
+            for (ureg l = 0; l < m_shared->readsPerWrite; l++) {
+                if (m_shared->doneFlag.load(turf::Relaxed))
                     break;
                 key = lookupIndex * Prime;
                 if (key >= 2) {
@@ -155,7 +156,7 @@ public:
             }
 
             // Remove
-            if (m_shared.doneFlag.load(turf::Relaxed))
+            if (m_shared->doneFlag.load(turf::Relaxed))
                 break;
             key = m_removeIndex * Prime;
             if (key >= 2) {
@@ -168,8 +169,8 @@ public:
             // Lookup
             if (s32(lookupIndex - m_removeIndex) < 0)
                 lookupIndex = m_removeIndex;
-            for (ureg l = 0; l < m_shared.readsPerWrite; l++) {
-                if (m_shared.doneFlag.load(turf::Relaxed))
+            for (ureg l = 0; l < m_shared->readsPerWrite; l++) {
+                if (m_shared->doneFlag.load(turf::Relaxed))
                     break;
                 key = lookupIndex * Prime;
                 if (key >= 2) {
@@ -184,7 +185,7 @@ public:
             }
         }
         if (m_threadIndex == 0)
-            m_shared.doneFlag.store(1, turf::Relaxed);
+            m_shared->doneFlag.store(1, turf::Relaxed);
         m_threadCtx.update();
         turf::CPUTimer::Point end = turf::CPUTimer::get();
         // ---------
@@ -221,7 +222,7 @@ int main(int argc, const char** argv) {
     for (ureg t = 0; t < numCores; t++) {
         u32 rangeLo = 0xffffffffu / numCores * t + 1;
         u32 rangeHi = 0xffffffffu / numCores * (t + 1) + 1;
-        threads.emplace_back(shared, t, rangeLo, rangeHi);
+        threads.push_back(ThreadState(&shared, t, rangeLo, rangeHi));
     }
     dispatcher.kickOne(0, &ThreadState::registerThread, threads[0]);
 
@@ -234,7 +235,7 @@ int main(int argc, const char** argv) {
         }
 
         printf("{\n");
-        printf("'mapType': '%s',\n", MapAdapter::MapName);
+        printf("'mapType': '%s',\n", MapAdapter::getMapName());
         printf("'population': %d,\n", (int) (numCores * NumKeysPerThread));
         printf("'readsPerWrite': %d,\n", (int) readsPerWrite);
         printf("'itersPerChunk': %d,\n", (int) itersPerChunk);