<!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>[188557] trunk/Source</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/188557">188557</a></dd>
<dt>Author</dt> <dd>mmaxfield@apple.com</dd>
<dt>Date</dt> <dd>2015-08-17 16:59:05 -0700 (Mon, 17 Aug 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Implement IntegerHasher
https://bugs.webkit.org/show_bug.cgi?id=147866
Reviewed by Darin Adler and Anders Carlsson.
Source/WebCore:
Rename StringHasher.h to Hasher.
No new tests because there is no behavior difference.
* contentextensions/DFAMinimizer.cpp: Use new #include.
* contentextensions/HashableActionList.h: Ditto.
* platform/graphics/FontFeatureSettings.cpp:
(WebCore::FontFeatureSettings::hash): Use new IntegerHasher class.
(WebCore::FontFeature::hash): Deleted.
* platform/graphics/FontFeatureSettings.h: Remove unnecessary function.
* platform/graphics/Gradient.cpp: Use new #include.
* platform/graphics/WidthCache.h: Ditto.
Source/WebInspectorUI:
Update comment.
* UserInterface/Base/Utilities.js:
Source/WebKit2:
Use new #include.
* DatabaseProcess/IndexedDB/IDBIdentifier.h:
* Platform/IPC/StringReference.cpp:
Source/WTF:
Rename StringHasher.h to Hasher.h, and include an IntegerHasher class.
* WTF.vcxproj/WTF.vcxproj: Update to target new file.
* WTF.vcxproj/WTF.vcxproj.filters: Ditto.
* WTF.xcodeproj/project.pbxproj: Ditto.
* wtf/CMakeLists.txt: Ditto.
* wtf/Hasher.h: Renamed from Source/WTF/wtf/StringHasher.h.
* wtf/text/CString.cpp: Use new #include
* wtf/text/StringHash.h: Ditto.
* wtf/text/StringImpl.h: Ditto.
* wtf/unicode/UTF8.cpp: Ditto.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFWTFvcxprojWTFvcxproj">trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj</a></li>
<li><a href="#trunkSourceWTFWTFvcxprojWTFvcxprojfilters">trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters</a></li>
<li><a href="#trunkSourceWTFWTFxcodeprojprojectpbxproj">trunk/Source/WTF/WTF.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWTFwtfCMakeListstxt">trunk/Source/WTF/wtf/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWTFwtftextCStringcpp">trunk/Source/WTF/wtf/text/CString.cpp</a></li>
<li><a href="#trunkSourceWTFwtftextStringHashh">trunk/Source/WTF/wtf/text/StringHash.h</a></li>
<li><a href="#trunkSourceWTFwtftextStringImplh">trunk/Source/WTF/wtf/text/StringImpl.h</a></li>
<li><a href="#trunkSourceWTFwtfunicodeUTF8cpp">trunk/Source/WTF/wtf/unicode/UTF8.cpp</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecontentextensionsDFAMinimizercpp">trunk/Source/WebCore/contentextensions/DFAMinimizer.cpp</a></li>
<li><a href="#trunkSourceWebCorecontentextensionsHashableActionListh">trunk/Source/WebCore/contentextensions/HashableActionList.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontFeatureSettingscpp">trunk/Source/WebCore/platform/graphics/FontFeatureSettings.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsFontFeatureSettingsh">trunk/Source/WebCore/platform/graphics/FontFeatureSettings.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsGradientcpp">trunk/Source/WebCore/platform/graphics/Gradient.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsWidthCacheh">trunk/Source/WebCore/platform/graphics/WidthCache.h</a></li>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceBaseUtilitiesjs">trunk/Source/WebInspectorUI/UserInterface/Base/Utilities.js</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2DatabaseProcessIndexedDBIDBIdentifierh">trunk/Source/WebKit2/DatabaseProcess/IndexedDB/IDBIdentifier.h</a></li>
<li><a href="#trunkSourceWebKit2PlatformIPCStringReferencecpp">trunk/Source/WebKit2/Platform/IPC/StringReference.cpp</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWTFwtfHasherh">trunk/Source/WTF/wtf/Hasher.h</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWTFwtfStringHasherh">trunk/Source/WTF/wtf/StringHasher.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WTF/ChangeLog        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2015-08-17 Myles C. Maxfield <mmaxfield@apple.com>
+
+ Implement IntegerHasher
+ https://bugs.webkit.org/show_bug.cgi?id=147866
+
+ Reviewed by Darin Adler and Anders Carlsson.
+
+ Rename StringHasher.h to Hasher.h, and include an IntegerHasher class.
+
+ * WTF.vcxproj/WTF.vcxproj: Update to target new file.
+ * WTF.vcxproj/WTF.vcxproj.filters: Ditto.
+ * WTF.xcodeproj/project.pbxproj: Ditto.
+ * wtf/CMakeLists.txt: Ditto.
+ * wtf/Hasher.h: Renamed from Source/WTF/wtf/StringHasher.h.
+ * wtf/text/CString.cpp: Use new #include
+ * wtf/text/StringHash.h: Ditto.
+ * wtf/text/StringImpl.h: Ditto.
+ * wtf/unicode/UTF8.cpp: Ditto.
+
</ins><span class="cx"> 2015-08-17 Alex Christensen <achristensen@webkit.org>
</span><span class="cx">
</span><span class="cx"> Move some commands from ./CMakeLists.txt to Source/cmake
</span></span></pre></div>
<a id="trunkSourceWTFWTFvcxprojWTFvcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -216,6 +216,7 @@
</span><span class="cx"> <ClInclude Include="..\wtf\glib\GUniquePtr.h" />
</span><span class="cx"> <ClInclude Include="..\wtf\GregorianDateTime.h" />
</span><span class="cx"> <ClInclude Include="..\wtf\HashCountedSet.h" />
</span><ins>+ <ClInclude Include="..\wtf\Hasher.h" />
</ins><span class="cx"> <ClInclude Include="..\wtf\HashFunctions.h" />
</span><span class="cx"> <ClInclude Include="..\wtf\HashIterators.h" />
</span><span class="cx"> <ClInclude Include="..\wtf\HashMap.h" />
</span><span class="lines">@@ -276,7 +277,6 @@
</span><span class="cx"> <ClInclude Include="..\wtf\StdLibExtras.h" />
</span><span class="cx"> <ClInclude Include="..\wtf\Stopwatch.h" />
</span><span class="cx"> <ClInclude Include="..\wtf\StringExtras.h" />
</span><del>- <ClInclude Include="..\wtf\StringHasher.h" />
</del><span class="cx"> <ClInclude Include="..\wtf\StringPrintStream.h" />
</span><span class="cx"> <ClInclude Include="..\wtf\TemporaryChange.h" />
</span><span class="cx"> <ClInclude Include="..\wtf\text\ASCIIFastPath.h" />
</span></span></pre></div>
<a id="trunkSourceWTFWTFvcxprojWTFvcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WTF/WTF.vcxproj/WTF.vcxproj.filters        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -463,6 +463,9 @@
</span><span class="cx"> <ClInclude Include="..\wtf\HashCountedSet.h">
</span><span class="cx"> <Filter>wtf</Filter>
</span><span class="cx"> </ClInclude>
</span><ins>+ <ClInclude Include="..\wtf\Hasher.h">
+ <Filter>wtf</Filter>
+ </ClInclude>
</ins><span class="cx"> <ClInclude Include="..\wtf\HashFunctions.h">
</span><span class="cx"> <Filter>wtf</Filter>
</span><span class="cx"> </ClInclude>
</span><span class="lines">@@ -622,9 +625,6 @@
</span><span class="cx"> <ClInclude Include="..\wtf\StringExtras.h">
</span><span class="cx"> <Filter>wtf</Filter>
</span><span class="cx"> </ClInclude>
</span><del>- <ClInclude Include="..\wtf\StringHasher.h">
- <Filter>wtf</Filter>
- </ClInclude>
</del><span class="cx"> <ClInclude Include="..\wtf\StringPrintStream.h">
</span><span class="cx"> <Filter>wtf</Filter>
</span><span class="cx"> </ClInclude>
</span><span class="lines">@@ -721,4 +721,4 @@
</span><span class="cx"> <None Include="WTFPostBuild.cmd" />
</span><span class="cx"> <None Include="WTFPreBuild.cmd" />
</span><span class="cx"> </ItemGroup>
</span><del>-</Project>
</del><span class="cx">\ No newline at end of file
</span><ins>+</Project>
</ins></span></pre></div>
<a id="trunkSourceWTFWTFxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/WTF.xcodeproj/project.pbxproj (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/WTF.xcodeproj/project.pbxproj        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WTF/WTF.xcodeproj/project.pbxproj        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -167,6 +167,7 @@
</span><span class="cx">                 A8A473C9151A825B004123FF /* Functional.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A7151A825A004123FF /* Functional.h */; };
</span><span class="cx">                 A8A473CA151A825B004123FF /* GetPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472A8151A825A004123FF /* GetPtr.h */; };
</span><span class="cx">                 A8A473D3151A825B004123FF /* HashCountedSet.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472B3151A825A004123FF /* HashCountedSet.h */; };
</span><ins>+                A8A4742D151A825B004123FF /* Hasher.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47314151A825B004123FF /* Hasher.h */; };
</ins><span class="cx">                 A8A473D4151A825B004123FF /* HashFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472B4151A825A004123FF /* HashFunctions.h */; };
</span><span class="cx">                 A8A473D5151A825B004123FF /* HashIterators.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472B5151A825A004123FF /* HashIterators.h */; };
</span><span class="cx">                 A8A473D6151A825B004123FF /* HashMap.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A472B6151A825A004123FF /* HashMap.h */; };
</span><span class="lines">@@ -226,7 +227,6 @@
</span><span class="cx">                 A8A47429151A825B004123FF /* StaticConstructors.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47310151A825B004123FF /* StaticConstructors.h */; };
</span><span class="cx">                 A8A4742A151A825B004123FF /* StdLibExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47311151A825B004123FF /* StdLibExtras.h */; };
</span><span class="cx">                 A8A4742C151A825B004123FF /* StringExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47313151A825B004123FF /* StringExtras.h */; };
</span><del>-                A8A4742D151A825B004123FF /* StringHasher.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A47314151A825B004123FF /* StringHasher.h */; };
</del><span class="cx">                 A8A47433151A825B004123FF /* TemporaryChange.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4731A151A825B004123FF /* TemporaryChange.h */; };
</span><span class="cx">                 A8A47434151A825B004123FF /* ASCIIFastPath.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A4731C151A825B004123FF /* ASCIIFastPath.h */; };
</span><span class="cx">                 A8A47435151A825B004123FF /* AtomicString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A4731D151A825B004123FF /* AtomicString.cpp */; };
</span><span class="lines">@@ -465,6 +465,7 @@
</span><span class="cx">                 A8A472A7151A825A004123FF /* Functional.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Functional.h; sourceTree = "<group>"; };
</span><span class="cx">                 A8A472A8151A825A004123FF /* GetPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GetPtr.h; sourceTree = "<group>"; };
</span><span class="cx">                 A8A472B3151A825A004123FF /* HashCountedSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashCountedSet.h; sourceTree = "<group>"; };
</span><ins>+                A8A47314151A825B004123FF /* Hasher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Hasher.h; sourceTree = "<group>"; };
</ins><span class="cx">                 A8A472B4151A825A004123FF /* HashFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashFunctions.h; sourceTree = "<group>"; };
</span><span class="cx">                 A8A472B5151A825A004123FF /* HashIterators.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashIterators.h; sourceTree = "<group>"; };
</span><span class="cx">                 A8A472B6151A825A004123FF /* HashMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HashMap.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -524,7 +525,6 @@
</span><span class="cx">                 A8A47310151A825B004123FF /* StaticConstructors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StaticConstructors.h; sourceTree = "<group>"; };
</span><span class="cx">                 A8A47311151A825B004123FF /* StdLibExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StdLibExtras.h; sourceTree = "<group>"; };
</span><span class="cx">                 A8A47313151A825B004123FF /* StringExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringExtras.h; sourceTree = "<group>"; };
</span><del>-                A8A47314151A825B004123FF /* StringHasher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringHasher.h; sourceTree = "<group>"; };
</del><span class="cx">                 A8A4731A151A825B004123FF /* TemporaryChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemporaryChange.h; sourceTree = "<group>"; };
</span><span class="cx">                 A8A4731C151A825B004123FF /* ASCIIFastPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASCIIFastPath.h; sourceTree = "<group>"; };
</span><span class="cx">                 A8A4731D151A825B004123FF /* AtomicString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AtomicString.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -768,6 +768,7 @@
</span><span class="cx">                                 2CCD892915C0390200285083 /* GregorianDateTime.cpp */,
</span><span class="cx">                                 2C05385315BC819000F21B96 /* GregorianDateTime.h */,
</span><span class="cx">                                 A8A472B3151A825A004123FF /* HashCountedSet.h */,
</span><ins>+                                A8A47314151A825B004123FF /* Hasher.h */,
</ins><span class="cx">                                 A8A472B4151A825A004123FF /* HashFunctions.h */,
</span><span class="cx">                                 A8A472B5151A825A004123FF /* HashIterators.h */,
</span><span class="cx">                                 A8A472B6151A825A004123FF /* HashMap.h */,
</span><span class="lines">@@ -871,7 +872,6 @@
</span><span class="cx">                                 1A6BB768162F300500DD16DB /* StreamBuffer.h */,
</span><span class="cx">                                 A8A47313151A825B004123FF /* StringExtras.h */,
</span><span class="cx">                                 A748745117A0BDAE00FA04CB /* StringHashDumpContext.h */,
</span><del>-                                A8A47314151A825B004123FF /* StringHasher.h */,
</del><span class="cx">                                 0FDDBFA51666DFA300C55FEF /* StringPrintStream.cpp */,
</span><span class="cx">                                 0FDDBFA61666DFA300C55FEF /* StringPrintStream.h */,
</span><span class="cx">                                 A8A4731A151A825B004123FF /* TemporaryChange.h */,
</span><span class="lines">@@ -1122,6 +1122,7 @@
</span><span class="cx">                                 A8A473CA151A825B004123FF /* GetPtr.h in Headers */,
</span><span class="cx">                                 2C05385415BC819000F21B96 /* GregorianDateTime.h in Headers */,
</span><span class="cx">                                 A8A473D3151A825B004123FF /* HashCountedSet.h in Headers */,
</span><ins>+                                A8A4742D151A825B004123FF /* Hasher.h in Headers */,
</ins><span class="cx">                                 A8A473D4151A825B004123FF /* HashFunctions.h in Headers */,
</span><span class="cx">                                 A8A473D5151A825B004123FF /* HashIterators.h in Headers */,
</span><span class="cx">                                 A8A473D6151A825B004123FF /* HashMap.h in Headers */,
</span><span class="lines">@@ -1204,7 +1205,6 @@
</span><span class="cx">                                 A8A4743F151A825B004123FF /* StringHash.h in Headers */,
</span><span class="cx">                                 FE8225311B2A1E5B00BA68FD /* NakedPtr.h in Headers */,
</span><span class="cx">                                 A748745417A0BDAE00FA04CB /* StringHashDumpContext.h in Headers */,
</span><del>-                                A8A4742D151A825B004123FF /* StringHasher.h in Headers */,
</del><span class="cx">                                 A8A47441151A825B004123FF /* StringImpl.h in Headers */,
</span><span class="cx">                                 A8A47442151A825B004123FF /* StringOperators.h in Headers */,
</span><span class="cx">                                 0FDDBFA81666DFA300C55FEF /* StringPrintStream.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceWTFwtfCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/CMakeLists.txt (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/CMakeLists.txt        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WTF/wtf/CMakeLists.txt        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> GetPtr.h
</span><span class="cx"> GregorianDateTime.h
</span><span class="cx"> HashCountedSet.h
</span><ins>+ Hasher.h
</ins><span class="cx"> HashFunctions.h
</span><span class="cx"> HashIterators.h
</span><span class="cx"> HashMap.h
</span><span class="lines">@@ -90,7 +91,6 @@
</span><span class="cx"> StdLibExtras.h
</span><span class="cx"> Stopwatch.h
</span><span class="cx"> StringExtras.h
</span><del>- StringHasher.h
</del><span class="cx"> StringPrintStream.h
</span><span class="cx"> ThreadIdentifierDataPthreads.h
</span><span class="cx"> ThreadSafeRefCounted.h
</span></span></pre></div>
<a id="trunkSourceWTFwtfHasherhfromrev188553trunkSourceWTFwtfStringHasherh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WTF/wtf/Hasher.h (from rev 188553, trunk/Source/WTF/wtf/StringHasher.h) (0 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/Hasher.h         (rev 0)
+++ trunk/Source/WTF/wtf/Hasher.h        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -0,0 +1,314 @@
</span><ins>+/*
+ * Copyright (C) 2005, 2006, 2008, 2010, 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef WTF_Hasher_h
+#define WTF_Hasher_h
+
+#include <unicode/utypes.h>
+#include <wtf/text/LChar.h>
+
+namespace WTF {
+
+// Paul Hsieh's SuperFastHash
+// http://www.azillionmonkeys.com/qed/hash.html
+
+// LChar data is interpreted as Latin-1-encoded (zero extended to 16 bits).
+
+// NOTE: The hash computation here must stay in sync with the create_hash_table script in
+// JavaScriptCore and the CodeGeneratorJS.pm script in WebCore.
+
+// Golden ratio. Arbitrary start value to avoid mapping all zeros to a hash value of zero.
+static const unsigned stringHashingStartValue = 0x9E3779B9U;
+
+class StringHasher {
+public:
+ static const unsigned flagCount = 8; // Save 8 bits for StringImpl to use as flags.
+
+ StringHasher()
+ : m_hash(stringHashingStartValue)
+ , m_hasPendingCharacter(false)
+ , m_pendingCharacter(0)
+ {
+ }
+
+ // The hasher hashes two characters at a time, and thus an "aligned" hasher is one
+ // where an even number of characters have been added. Callers that always add
+ // characters two at a time can use the "assuming aligned" functions.
+ void addCharactersAssumingAligned(UChar a, UChar b)
+ {
+ ASSERT(!m_hasPendingCharacter);
+ m_hash += a;
+ m_hash = (m_hash << 16) ^ ((b << 11) ^ m_hash);
+ m_hash += m_hash >> 11;
+ }
+
+ void addCharacter(UChar character)
+ {
+ if (m_hasPendingCharacter) {
+ m_hasPendingCharacter = false;
+ addCharactersAssumingAligned(m_pendingCharacter, character);
+ return;
+ }
+
+ m_pendingCharacter = character;
+ m_hasPendingCharacter = true;
+ }
+
+ void addCharacters(UChar a, UChar b)
+ {
+ if (m_hasPendingCharacter) {
+#if !ASSERT_DISABLED
+ m_hasPendingCharacter = false;
+#endif
+ addCharactersAssumingAligned(m_pendingCharacter, a);
+ m_pendingCharacter = b;
+#if !ASSERT_DISABLED
+ m_hasPendingCharacter = true;
+#endif
+ return;
+ }
+
+ addCharactersAssumingAligned(a, b);
+ }
+
+ template<typename T, UChar Converter(T)> void addCharactersAssumingAligned(const T* data, unsigned length)
+ {
+ ASSERT(!m_hasPendingCharacter);
+
+ bool remainder = length & 1;
+ length >>= 1;
+
+ while (length--) {
+ addCharactersAssumingAligned(Converter(data[0]), Converter(data[1]));
+ data += 2;
+ }
+
+ if (remainder)
+ addCharacter(Converter(*data));
+ }
+
+ template<typename T> void addCharactersAssumingAligned(const T* data, unsigned length)
+ {
+ addCharactersAssumingAligned<T, defaultConverter>(data, length);
+ }
+
+ template<typename T, UChar Converter(T)> void addCharactersAssumingAligned(const T* data)
+ {
+ ASSERT(!m_hasPendingCharacter);
+
+ while (T a = *data++) {
+ T b = *data++;
+ if (!b) {
+ addCharacter(Converter(a));
+ break;
+ }
+ addCharactersAssumingAligned(Converter(a), Converter(b));
+ }
+ }
+
+ template<typename T> void addCharactersAssumingAligned(const T* data)
+ {
+ addCharactersAssumingAligned<T, defaultConverter>(data);
+ }
+
+ template<typename T, UChar Converter(T)> void addCharacters(const T* data, unsigned length)
+ {
+ if (m_hasPendingCharacter && length) {
+ m_hasPendingCharacter = false;
+ addCharactersAssumingAligned(m_pendingCharacter, Converter(*data++));
+ --length;
+ }
+ addCharactersAssumingAligned<T, Converter>(data, length);
+ }
+
+ template<typename T> void addCharacters(const T* data, unsigned length)
+ {
+ addCharacters<T, defaultConverter>(data, length);
+ }
+
+ template<typename T, UChar Converter(T)> void addCharacters(const T* data)
+ {
+ if (m_hasPendingCharacter && *data) {
+ m_hasPendingCharacter = false;
+ addCharactersAssumingAligned(m_pendingCharacter, Converter(*data++));
+ }
+ addCharactersAssumingAligned<T, Converter>(data);
+ }
+
+ template<typename T> void addCharacters(const T* data)
+ {
+ addCharacters<T, defaultConverter>(data);
+ }
+
+ unsigned hashWithTop8BitsMasked() const
+ {
+ unsigned result = avalancheBits();
+
+ // Reserving space from the high bits for flags preserves most of the hash's
+ // value, since hash lookup typically masks out the high bits anyway.
+ result &= (1U << (sizeof(result) * 8 - flagCount)) - 1;
+
+ // This avoids ever returning a hash code of 0, since that is used to
+ // signal "hash not computed yet". Setting the high bit maintains
+ // reasonable fidelity to a hash code of 0 because it is likely to yield
+ // exactly 0 when hash lookup masks out the high bits.
+ if (!result)
+ result = 0x80000000 >> flagCount;
+
+ return result;
+ }
+
+ unsigned hash() const
+ {
+ unsigned result = avalancheBits();
+
+ // This avoids ever returning a hash code of 0, since that is used to
+ // signal "hash not computed yet". Setting the high bit maintains
+ // reasonable fidelity to a hash code of 0 because it is likely to yield
+ // exactly 0 when hash lookup masks out the high bits.
+ if (!result)
+ result = 0x80000000;
+
+ return result;
+ }
+
+ template<typename T, UChar Converter(T)> static unsigned computeHashAndMaskTop8Bits(const T* data, unsigned length)
+ {
+ StringHasher hasher;
+ hasher.addCharactersAssumingAligned<T, Converter>(data, length);
+ return hasher.hashWithTop8BitsMasked();
+ }
+
+ template<typename T, UChar Converter(T)> static unsigned computeHashAndMaskTop8Bits(const T* data)
+ {
+ StringHasher hasher;
+ hasher.addCharactersAssumingAligned<T, Converter>(data);
+ return hasher.hashWithTop8BitsMasked();
+ }
+
+ template<typename T> static unsigned computeHashAndMaskTop8Bits(const T* data, unsigned length)
+ {
+ return computeHashAndMaskTop8Bits<T, defaultConverter>(data, length);
+ }
+
+ template<typename T> static unsigned computeHashAndMaskTop8Bits(const T* data)
+ {
+ return computeHashAndMaskTop8Bits<T, defaultConverter>(data);
+ }
+
+ template<typename T, UChar Converter(T)> static unsigned computeHash(const T* data, unsigned length)
+ {
+ StringHasher hasher;
+ hasher.addCharactersAssumingAligned<T, Converter>(data, length);
+ return hasher.hash();
+ }
+
+ template<typename T, UChar Converter(T)> static unsigned computeHash(const T* data)
+ {
+ StringHasher hasher;
+ hasher.addCharactersAssumingAligned<T, Converter>(data);
+ return hasher.hash();
+ }
+
+ template<typename T> static unsigned computeHash(const T* data, unsigned length)
+ {
+ return computeHash<T, defaultConverter>(data, length);
+ }
+
+ template<typename T> static unsigned computeHash(const T* data)
+ {
+ return computeHash<T, defaultConverter>(data);
+ }
+
+ static unsigned hashMemory(const void* data, unsigned length)
+ {
+ // FIXME: Why does this function use the version of the hash that drops the top 8 bits?
+ // We want that for all string hashing so we can use those bits in StringImpl and hash
+ // strings consistently, but I don't see why we'd want that for general memory hashing.
+ ASSERT(!(length % 2));
+ return computeHashAndMaskTop8Bits<UChar>(static_cast<const UChar*>(data), length / sizeof(UChar));
+ }
+
+ template<size_t length> static unsigned hashMemory(const void* data)
+ {
+ static_assert(!(length % 2), "length must be a multiple of two!");
+ return hashMemory(data, length);
+ }
+
+private:
+ static UChar defaultConverter(UChar character)
+ {
+ return character;
+ }
+
+ static UChar defaultConverter(LChar character)
+ {
+ return character;
+ }
+
+ unsigned avalancheBits() const
+ {
+ unsigned result = m_hash;
+
+ // Handle end case.
+ if (m_hasPendingCharacter) {
+ result += m_pendingCharacter;
+ result ^= result << 11;
+ result += result >> 17;
+ }
+
+ // Force "avalanching" of final 31 bits.
+ result ^= result << 3;
+ result += result >> 5;
+ result ^= result << 2;
+ result += result >> 15;
+ result ^= result << 10;
+
+ return result;
+ }
+
+ unsigned m_hash;
+ bool m_hasPendingCharacter;
+ UChar m_pendingCharacter;
+};
+
+class IntegerHasher {
+public:
+ void add(unsigned integer)
+ {
+ m_underlyingHasher.addCharactersAssumingAligned(integer, integer >> 16);
+ }
+
+ unsigned hash() const
+ {
+ return m_underlyingHasher.hash();
+ }
+
+private:
+ StringHasher m_underlyingHasher;
+};
+
+} // namespace WTF
+
+using WTF::IntegerHasher;
+using WTF::StringHasher;
+
+#endif // WTF_Hasher_h
</ins></span></pre></div>
<a id="trunkSourceWTFwtfStringHasherh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WTF/wtf/StringHasher.h (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/StringHasher.h        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WTF/wtf/StringHasher.h        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -1,297 +0,0 @@
</span><del>-/*
- * Copyright (C) 2005, 2006, 2008, 2010, 2013 Apple Inc. All rights reserved.
- * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef WTF_StringHasher_h
-#define WTF_StringHasher_h
-
-#include <unicode/utypes.h>
-#include <wtf/text/LChar.h>
-
-namespace WTF {
-
-// Paul Hsieh's SuperFastHash
-// http://www.azillionmonkeys.com/qed/hash.html
-
-// LChar data is interpreted as Latin-1-encoded (zero extended to 16 bits).
-
-// NOTE: The hash computation here must stay in sync with the create_hash_table script in
-// JavaScriptCore and the CodeGeneratorJS.pm script in WebCore.
-
-// Golden ratio. Arbitrary start value to avoid mapping all zeros to a hash value of zero.
-static const unsigned stringHashingStartValue = 0x9E3779B9U;
-
-class StringHasher {
-public:
- static const unsigned flagCount = 8; // Save 8 bits for StringImpl to use as flags.
-
- StringHasher()
- : m_hash(stringHashingStartValue)
- , m_hasPendingCharacter(false)
- , m_pendingCharacter(0)
- {
- }
-
- // The hasher hashes two characters at a time, and thus an "aligned" hasher is one
- // where an even number of characters have been added. Callers that always add
- // characters two at a time can use the "assuming aligned" functions.
- void addCharactersAssumingAligned(UChar a, UChar b)
- {
- ASSERT(!m_hasPendingCharacter);
- m_hash += a;
- m_hash = (m_hash << 16) ^ ((b << 11) ^ m_hash);
- m_hash += m_hash >> 11;
- }
-
- void addCharacter(UChar character)
- {
- if (m_hasPendingCharacter) {
- m_hasPendingCharacter = false;
- addCharactersAssumingAligned(m_pendingCharacter, character);
- return;
- }
-
- m_pendingCharacter = character;
- m_hasPendingCharacter = true;
- }
-
- void addCharacters(UChar a, UChar b)
- {
- if (m_hasPendingCharacter) {
-#if !ASSERT_DISABLED
- m_hasPendingCharacter = false;
-#endif
- addCharactersAssumingAligned(m_pendingCharacter, a);
- m_pendingCharacter = b;
-#if !ASSERT_DISABLED
- m_hasPendingCharacter = true;
-#endif
- return;
- }
-
- addCharactersAssumingAligned(a, b);
- }
-
- template<typename T, UChar Converter(T)> void addCharactersAssumingAligned(const T* data, unsigned length)
- {
- ASSERT(!m_hasPendingCharacter);
-
- bool remainder = length & 1;
- length >>= 1;
-
- while (length--) {
- addCharactersAssumingAligned(Converter(data[0]), Converter(data[1]));
- data += 2;
- }
-
- if (remainder)
- addCharacter(Converter(*data));
- }
-
- template<typename T> void addCharactersAssumingAligned(const T* data, unsigned length)
- {
- addCharactersAssumingAligned<T, defaultConverter>(data, length);
- }
-
- template<typename T, UChar Converter(T)> void addCharactersAssumingAligned(const T* data)
- {
- ASSERT(!m_hasPendingCharacter);
-
- while (T a = *data++) {
- T b = *data++;
- if (!b) {
- addCharacter(Converter(a));
- break;
- }
- addCharactersAssumingAligned(Converter(a), Converter(b));
- }
- }
-
- template<typename T> void addCharactersAssumingAligned(const T* data)
- {
- addCharactersAssumingAligned<T, defaultConverter>(data);
- }
-
- template<typename T, UChar Converter(T)> void addCharacters(const T* data, unsigned length)
- {
- if (m_hasPendingCharacter && length) {
- m_hasPendingCharacter = false;
- addCharactersAssumingAligned(m_pendingCharacter, Converter(*data++));
- --length;
- }
- addCharactersAssumingAligned<T, Converter>(data, length);
- }
-
- template<typename T> void addCharacters(const T* data, unsigned length)
- {
- addCharacters<T, defaultConverter>(data, length);
- }
-
- template<typename T, UChar Converter(T)> void addCharacters(const T* data)
- {
- if (m_hasPendingCharacter && *data) {
- m_hasPendingCharacter = false;
- addCharactersAssumingAligned(m_pendingCharacter, Converter(*data++));
- }
- addCharactersAssumingAligned<T, Converter>(data);
- }
-
- template<typename T> void addCharacters(const T* data)
- {
- addCharacters<T, defaultConverter>(data);
- }
-
- unsigned hashWithTop8BitsMasked() const
- {
- unsigned result = avalancheBits();
-
- // Reserving space from the high bits for flags preserves most of the hash's
- // value, since hash lookup typically masks out the high bits anyway.
- result &= (1U << (sizeof(result) * 8 - flagCount)) - 1;
-
- // This avoids ever returning a hash code of 0, since that is used to
- // signal "hash not computed yet". Setting the high bit maintains
- // reasonable fidelity to a hash code of 0 because it is likely to yield
- // exactly 0 when hash lookup masks out the high bits.
- if (!result)
- result = 0x80000000 >> flagCount;
-
- return result;
- }
-
- unsigned hash() const
- {
- unsigned result = avalancheBits();
-
- // This avoids ever returning a hash code of 0, since that is used to
- // signal "hash not computed yet". Setting the high bit maintains
- // reasonable fidelity to a hash code of 0 because it is likely to yield
- // exactly 0 when hash lookup masks out the high bits.
- if (!result)
- result = 0x80000000;
-
- return result;
- }
-
- template<typename T, UChar Converter(T)> static unsigned computeHashAndMaskTop8Bits(const T* data, unsigned length)
- {
- StringHasher hasher;
- hasher.addCharactersAssumingAligned<T, Converter>(data, length);
- return hasher.hashWithTop8BitsMasked();
- }
-
- template<typename T, UChar Converter(T)> static unsigned computeHashAndMaskTop8Bits(const T* data)
- {
- StringHasher hasher;
- hasher.addCharactersAssumingAligned<T, Converter>(data);
- return hasher.hashWithTop8BitsMasked();
- }
-
- template<typename T> static unsigned computeHashAndMaskTop8Bits(const T* data, unsigned length)
- {
- return computeHashAndMaskTop8Bits<T, defaultConverter>(data, length);
- }
-
- template<typename T> static unsigned computeHashAndMaskTop8Bits(const T* data)
- {
- return computeHashAndMaskTop8Bits<T, defaultConverter>(data);
- }
-
- template<typename T, UChar Converter(T)> static unsigned computeHash(const T* data, unsigned length)
- {
- StringHasher hasher;
- hasher.addCharactersAssumingAligned<T, Converter>(data, length);
- return hasher.hash();
- }
-
- template<typename T, UChar Converter(T)> static unsigned computeHash(const T* data)
- {
- StringHasher hasher;
- hasher.addCharactersAssumingAligned<T, Converter>(data);
- return hasher.hash();
- }
-
- template<typename T> static unsigned computeHash(const T* data, unsigned length)
- {
- return computeHash<T, defaultConverter>(data, length);
- }
-
- template<typename T> static unsigned computeHash(const T* data)
- {
- return computeHash<T, defaultConverter>(data);
- }
-
- static unsigned hashMemory(const void* data, unsigned length)
- {
- // FIXME: Why does this function use the version of the hash that drops the top 8 bits?
- // We want that for all string hashing so we can use those bits in StringImpl and hash
- // strings consistently, but I don't see why we'd want that for general memory hashing.
- ASSERT(!(length % 2));
- return computeHashAndMaskTop8Bits<UChar>(static_cast<const UChar*>(data), length / sizeof(UChar));
- }
-
- template<size_t length> static unsigned hashMemory(const void* data)
- {
- static_assert(!(length % 2), "length must be a multiple of two!");
- return hashMemory(data, length);
- }
-
-private:
- static UChar defaultConverter(UChar character)
- {
- return character;
- }
-
- static UChar defaultConverter(LChar character)
- {
- return character;
- }
-
- unsigned avalancheBits() const
- {
- unsigned result = m_hash;
-
- // Handle end case.
- if (m_hasPendingCharacter) {
- result += m_pendingCharacter;
- result ^= result << 11;
- result += result >> 17;
- }
-
- // Force "avalanching" of final 31 bits.
- result ^= result << 3;
- result += result >> 5;
- result ^= result << 2;
- result += result >> 15;
- result ^= result << 10;
-
- return result;
- }
-
- unsigned m_hash;
- bool m_hasPendingCharacter;
- UChar m_pendingCharacter;
-};
-
-} // namespace WTF
-
-using WTF::StringHasher;
-
-#endif // WTF_StringHasher_h
</del></span></pre></div>
<a id="trunkSourceWTFwtftextCStringcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/CString.cpp (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/CString.cpp        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WTF/wtf/text/CString.cpp        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> #include "CString.h"
</span><span class="cx">
</span><span class="cx"> #include <string.h>
</span><del>-#include <wtf/StringHasher.h>
</del><ins>+#include <wtf/Hasher.h>
</ins><span class="cx">
</span><span class="cx"> namespace WTF {
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWTFwtftextStringHashh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/StringHash.h (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/StringHash.h        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WTF/wtf/text/StringHash.h        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">
</span><span class="cx"> #include <wtf/text/AtomicString.h>
</span><span class="cx"> #include <wtf/HashTraits.h>
</span><del>-#include <wtf/StringHasher.h>
</del><ins>+#include <wtf/Hasher.h>
</ins><span class="cx">
</span><span class="cx"> namespace WTF {
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWTFwtftextStringImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/text/StringImpl.h (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/text/StringImpl.h        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WTF/wtf/text/StringImpl.h        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -28,9 +28,9 @@
</span><span class="cx"> #include <unicode/ustring.h>
</span><span class="cx"> #include <wtf/ASCIICType.h>
</span><span class="cx"> #include <wtf/Forward.h>
</span><ins>+#include <wtf/Hasher.h>
</ins><span class="cx"> #include <wtf/MathExtras.h>
</span><span class="cx"> #include <wtf/StdLibExtras.h>
</span><del>-#include <wtf/StringHasher.h>
</del><span class="cx"> #include <wtf/Vector.h>
</span><span class="cx"> #include <wtf/text/ConversionMode.h>
</span><span class="cx"> #include <wtf/text/StringCommon.h>
</span></span></pre></div>
<a id="trunkSourceWTFwtfunicodeUTF8cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/unicode/UTF8.cpp (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/unicode/UTF8.cpp        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WTF/wtf/unicode/UTF8.cpp        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> #include "UTF8.h"
</span><span class="cx">
</span><span class="cx"> #include "ASCIICType.h"
</span><del>-#include <wtf/StringHasher.h>
</del><ins>+#include <wtf/Hasher.h>
</ins><span class="cx"> #include <wtf/unicode/CharacterNames.h>
</span><span class="cx">
</span><span class="cx"> namespace WTF {
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WebCore/ChangeLog        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2015-08-17 Myles C. Maxfield <mmaxfield@apple.com>
+
+ Implement IntegerHasher
+ https://bugs.webkit.org/show_bug.cgi?id=147866
+
+ Reviewed by Darin Adler and Anders Carlsson.
+
+ Rename StringHasher.h to Hasher.
+
+ No new tests because there is no behavior difference.
+
+ * contentextensions/DFAMinimizer.cpp: Use new #include.
+ * contentextensions/HashableActionList.h: Ditto.
+ * platform/graphics/FontFeatureSettings.cpp:
+ (WebCore::FontFeatureSettings::hash): Use new IntegerHasher class.
+ (WebCore::FontFeature::hash): Deleted.
+ * platform/graphics/FontFeatureSettings.h: Remove unnecessary function.
+ * platform/graphics/Gradient.cpp: Use new #include.
+ * platform/graphics/WidthCache.h: Ditto.
+
</ins><span class="cx"> 2015-08-17 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> Log actual PageCache retrieval success rate using diagnostic logging
</span></span></pre></div>
<a id="trunkSourceWebCorecontentextensionsDFAMinimizercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/contentextensions/DFAMinimizer.cpp (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/contentextensions/DFAMinimizer.cpp        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WebCore/contentextensions/DFAMinimizer.cpp        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx"> #include "MutableRangeList.h"
</span><span class="cx"> #include <wtf/HashMap.h>
</span><span class="cx"> #include <wtf/HashSet.h>
</span><del>-#include <wtf/StringHasher.h>
</del><ins>+#include <wtf/Hasher.h>
</ins><span class="cx"> #include <wtf/Vector.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCorecontentextensionsHashableActionListh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/contentextensions/HashableActionList.h (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/contentextensions/HashableActionList.h        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WebCore/contentextensions/HashableActionList.h        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> #ifndef HashableActionList_h
</span><span class="cx"> #define HashableActionList_h
</span><span class="cx">
</span><del>-#include <wtf/StringHasher.h>
</del><ins>+#include <wtf/Hasher.h>
</ins><span class="cx"> #include <wtf/Vector.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontFeatureSettingscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/FontFeatureSettings.cpp (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/FontFeatureSettings.cpp        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WebCore/platform/graphics/FontFeatureSettings.cpp        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -46,11 +46,6 @@
</span><span class="cx"> return (m_tag.impl() < other.m_tag.impl()) || (m_tag.impl() == other.m_tag.impl() && m_value < other.m_value);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-unsigned FontFeature::hash() const
-{
- return WTF::PairHash<AtomicString, unsigned>::hash(std::make_pair(m_tag, m_value));
-}
-
</del><span class="cx"> Ref<FontFeatureSettings> FontFeatureSettings::create()
</span><span class="cx"> {
</span><span class="cx"> return adoptRef(*new FontFeatureSettings);
</span><span class="lines">@@ -69,10 +64,12 @@
</span><span class="cx">
</span><span class="cx"> unsigned FontFeatureSettings::hash() const
</span><span class="cx"> {
</span><del>- unsigned result = 0;
- for (size_t i = 0; i < size(); ++i)
- result = WTF::pairIntHash(result, at(i).hash());
- return result;
</del><ins>+ IntegerHasher hasher;
+ for (auto& feature : m_list) {
+ hasher.add(feature.tag().impl()->existingHash());
+ hasher.add(feature.value());
+ }
+ return hasher.hash();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsFontFeatureSettingsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/FontFeatureSettings.h (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/FontFeatureSettings.h        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WebCore/platform/graphics/FontFeatureSettings.h        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -45,8 +45,6 @@
</span><span class="cx"> int value() const { return m_value; }
</span><span class="cx"> bool enabled() const { return value(); }
</span><span class="cx">
</span><del>- unsigned hash() const;
-
</del><span class="cx"> private:
</span><span class="cx"> AtomicString m_tag;
</span><span class="cx"> const int m_value { 0 };
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsGradientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/Gradient.cpp (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/Gradient.cpp        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WebCore/platform/graphics/Gradient.cpp        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -30,7 +30,7 @@
</span><span class="cx"> #include "Color.h"
</span><span class="cx"> #include "FloatRect.h"
</span><span class="cx"> #include <wtf/HashFunctions.h>
</span><del>-#include <wtf/StringHasher.h>
</del><ins>+#include <wtf/Hasher.h>
</ins><span class="cx">
</span><span class="cx"> using WTF::pairIntHash;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsWidthCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/WidthCache.h (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/WidthCache.h        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WebCore/platform/graphics/WidthCache.h        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -30,8 +30,8 @@
</span><span class="cx"> #include <wtf/Forward.h>
</span><span class="cx"> #include <wtf/HashFunctions.h>
</span><span class="cx"> #include <wtf/HashSet.h>
</span><ins>+#include <wtf/Hasher.h>
</ins><span class="cx"> #include <wtf/RefPtr.h>
</span><del>-#include <wtf/StringHasher.h>
</del><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WebInspectorUI/ChangeLog        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2015-08-17 Myles C. Maxfield <mmaxfield@apple.com>
+
+ Implement IntegerHasher
+ https://bugs.webkit.org/show_bug.cgi?id=147866
+
+ Reviewed by Darin Adler and Anders Carlsson.
+
+ Update comment.
+
+ * UserInterface/Base/Utilities.js:
+
</ins><span class="cx"> 2015-08-17 Brian Burg <bburg@apple.com>
</span><span class="cx">
</span><span class="cx"> Web Inspector: InspectorTest should be a subclass of TestHarness
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceBaseUtilitiesjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Utilities.js (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Base/Utilities.js        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Utilities.js        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -588,7 +588,7 @@
</span><span class="cx"> {
</span><span class="cx"> get: function()
</span><span class="cx"> {
</span><del>- // Matches the wtf/StringHasher.h (SuperFastHash) algorithm.
</del><ins>+ // Matches the wtf/Hasher.h (SuperFastHash) algorithm.
</ins><span class="cx">
</span><span class="cx"> // Arbitrary start value to avoid mapping all 0's to all 0's.
</span><span class="cx"> const stringHashingStartValue = 0x9e3779b9;
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WebKit2/ChangeLog        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2015-08-17 Myles C. Maxfield <mmaxfield@apple.com>
+
+ Implement IntegerHasher
+ https://bugs.webkit.org/show_bug.cgi?id=147866
+
+ Reviewed by Darin Adler and Anders Carlsson.
+
+ Use new #include.
+
+ * DatabaseProcess/IndexedDB/IDBIdentifier.h:
+ * Platform/IPC/StringReference.cpp:
+
</ins><span class="cx"> 2015-08-13 Anders Carlsson <andersca@apple.com>
</span><span class="cx">
</span><span class="cx"> Add WKWindowFeaturesRef and a new modern createNewPage UI client callback
</span></span></pre></div>
<a id="trunkSourceWebKit2DatabaseProcessIndexedDBIDBIdentifierh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/IDBIdentifier.h (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/IDBIdentifier.h        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/IDBIdentifier.h        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE) && ENABLE(DATABASE_PROCESS)
</span><span class="cx">
</span><span class="cx"> #include <wtf/HashTraits.h>
</span><del>-#include <wtf/StringHasher.h>
</del><ins>+#include <wtf/Hasher.h>
</ins><span class="cx">
</span><span class="cx"> namespace WebKit {
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2PlatformIPCStringReferencecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Platform/IPC/StringReference.cpp (188556 => 188557)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Platform/IPC/StringReference.cpp        2015-08-17 23:59:03 UTC (rev 188556)
+++ trunk/Source/WebKit2/Platform/IPC/StringReference.cpp        2015-08-17 23:59:05 UTC (rev 188557)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> #include "ArgumentDecoder.h"
</span><span class="cx"> #include "ArgumentEncoder.h"
</span><span class="cx"> #include "DataReference.h"
</span><del>-#include <wtf/StringHasher.h>
</del><ins>+#include <wtf/Hasher.h>
</ins><span class="cx"> #include <wtf/text/CString.h>
</span><span class="cx">
</span><span class="cx"> namespace IPC {
</span></span></pre>
</div>
</div>
</body>
</html>