<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[184949] trunk/Source/WTF</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/184949">184949</a></dd>
<dt>Author</dt> <dd>zandobersek@gmail.com</dd>
<dt>Date</dt> <dd>2015-05-28 01:13:10 -0700 (Thu, 28 May 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>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):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFwtfHashTableh">trunk/Source/WTF/wtf/HashTable.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (184948 => 184949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2015-05-28 07:44:41 UTC (rev 184948)
+++ trunk/Source/WTF/ChangeLog        2015-05-28 08:13:10 UTC (rev 184949)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+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):
+
</ins><span class="cx"> 2015-05-27 Alexey Proskuryakov <ap@apple.com>
</span><span class="cx">
</span><span class="cx"> [Mac] Fix clang static analyzer build
</span></span></pre></div>
<a id="trunkSourceWTFwtfHashTableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/HashTable.h (184948 => 184949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/HashTable.h        2015-05-28 07:44:41 UTC (rev 184948)
+++ trunk/Source/WTF/wtf/HashTable.h        2015-05-28 08:13:10 UTC (rev 184949)
</span><span class="lines">@@ -532,13 +532,13 @@
</span><span class="cx">
</span><span class="cx"> template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits>
</span><span class="cx"> inline HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits>::HashTable()
</span><del>- : m_table(0)
</del><ins>+ : m_table(nullptr)
</ins><span class="cx"> , m_tableSize(0)
</span><span class="cx"> , m_tableSizeMask(0)
</span><span class="cx"> , m_keyCount(0)
</span><span class="cx"> , m_deletedCount(0)
</span><span class="cx"> #if CHECK_HASHTABLE_ITERATORS
</span><del>- , m_iterators(0)
</del><ins>+ , m_iterators(nullptr)
</ins><span class="cx"> , m_mutex(std::make_unique<std::mutex>())
</span><span class="cx"> #endif
</span><span class="cx"> #if DUMP_HASHTABLE_STATS_PER_TABLE
</span><span class="lines">@@ -1155,18 +1155,7 @@
</span><span class="cx">
</span><span class="cx"> template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits>
</span><span class="cx"> HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits>::HashTable(const HashTable& other)
</span><del>- : 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
</del><ins>+ : HashTable()
</ins><span class="cx"> {
</span><span class="cx"> // Copy the hash table the dumb way, by adding each element to the new table.
</span><span class="cx"> // It might be more efficient to copy the table slots, but it's not clear that efficiency is needed.
</span><span class="lines">@@ -1206,29 +1195,9 @@
</span><span class="cx">
</span><span class="cx"> template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits>
</span><span class="cx"> inline HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits>::HashTable(HashTable&& other)
</span><del>-#if CHECK_HASHTABLE_ITERATORS
- : m_iterators(nullptr)
- , m_mutex(std::make_unique<std::mutex>())
-#endif
</del><ins>+ : HashTable()
</ins><span class="cx"> {
</span><del>- 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
</del><ins>+ swap(other);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits>
</span></span></pre>
</div>
</div>
</body>
</html>