Clean up HashTable constructors
authorzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 28 May 2015 08:13:10 +0000 (08:13 +0000)
committerzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 28 May 2015 08:13:10 +0000 (08:13 +0000)
https://bugs.webkit.org/show_bug.cgi?id=145369

Reviewed by Andreas Kling.

Use nullptr to initialize pointer member variables in the HashTable
default constructor. Copy and move constructors can use constructor
delegation instead of replicating all member initializations. Move
constructor should simply call HashTable::swap() instead of replicating
all the swap operations.

* wtf/HashTable.h:
(WTF::KeyTraits>::HashTable):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@184949 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WTF/ChangeLog
Source/WTF/wtf/HashTable.h

index f970b91..88af236 100644 (file)
@@ -1,3 +1,19 @@
+2015-05-28  Zan Dobersek  <zdobersek@igalia.com>
+
+        Clean up HashTable constructors
+        https://bugs.webkit.org/show_bug.cgi?id=145369
+
+        Reviewed by Andreas Kling.
+
+        Use nullptr to initialize pointer member variables in the HashTable
+        default constructor. Copy and move constructors can use constructor
+        delegation instead of replicating all member initializations. Move
+        constructor should simply call HashTable::swap() instead of replicating
+        all the swap operations.
+
+        * wtf/HashTable.h:
+        (WTF::KeyTraits>::HashTable):
+
 2015-05-27  Alexey Proskuryakov  <ap@apple.com>
 
         [Mac] Fix clang static analyzer build
index 1454512..546fc4d 100644 (file)
@@ -532,13 +532,13 @@ namespace WTF {
 
     template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits>
     inline HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits>::HashTable()
-        : m_table(0)
+        : m_table(nullptr)
         , m_tableSize(0)
         , m_tableSizeMask(0)
         , m_keyCount(0)
         , m_deletedCount(0)
 #if CHECK_HASHTABLE_ITERATORS
-        , m_iterators(0)
+        , m_iterators(nullptr)
         , m_mutex(std::make_unique<std::mutex>())
 #endif
 #if DUMP_HASHTABLE_STATS_PER_TABLE
@@ -1155,18 +1155,7 @@ namespace WTF {
 
     template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits>
     HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits>::HashTable(const HashTable& other)
-        : m_table(0)
-        , m_tableSize(0)
-        , m_tableSizeMask(0)
-        , m_keyCount(0)
-        , m_deletedCount(0)
-#if CHECK_HASHTABLE_ITERATORS
-        , m_iterators(0)
-        , m_mutex(std::make_unique<std::mutex>())
-#endif
-#if DUMP_HASHTABLE_STATS_PER_TABLE
-        , m_stats(std::make_unique<Stats>(*other.m_stats))
-#endif
+        : HashTable()
     {
         // Copy the hash table the dumb way, by adding each element to the new table.
         // It might be more efficient to copy the table slots, but it's not clear that efficiency is needed.
@@ -1206,29 +1195,9 @@ namespace WTF {
 
     template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits>
     inline HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits>::HashTable(HashTable&& other)
-#if CHECK_HASHTABLE_ITERATORS
-        : m_iterators(nullptr)
-        , m_mutex(std::make_unique<std::mutex>())
-#endif
+        : HashTable()
     {
-        other.invalidateIterators();
-
-        m_table = other.m_table;
-        m_tableSize = other.m_tableSize;
-        m_tableSizeMask = other.m_tableSizeMask;
-        m_keyCount = other.m_keyCount;
-        m_deletedCount = other.m_deletedCount;
-
-        other.m_table = nullptr;
-        other.m_tableSize = 0;
-        other.m_tableSizeMask = 0;
-        other.m_keyCount = 0;
-        other.m_deletedCount = 0;
-
-#if DUMP_HASHTABLE_STATS_PER_TABLE
-        m_stats = WTF::move(other.m_stats);
-        other.m_stats = nullptr;
-#endif
+        swap(other);
     }
 
     template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits>