<!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>[189700] releases/WebKitGTK/webkit-2.10/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/189700">189700</a></dd>
<dt>Author</dt> <dd>carlosgc@webkit.org</dd>
<dt>Date</dt> <dd>2015-09-14 02:40:26 -0700 (Mon, 14 Sep 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merge <a href="http://trac.webkit.org/projects/webkit/changeset/188824">r188824</a> - [JSC] Static hash tables should be 100% compile-time constant.
&lt;https://webkit.org/b/148359&gt;

Reviewed by Michael Saboff.

Source/JavaScriptCore:

We were dirtying the memory pages containing static hash tables the
first time they were used, when a dynamically allocated index-to-key
table was built and cached in the HashTable struct.

It turns out that this &quot;optimization&quot; was completely useless, since
we've long since decoupled static hash tables from the JSC::VM and
we can get the key for an index via HashTable::values[index].m_key!

We also get rid of VM::keywords which was a little wrapper around
a VM-specific copy of JSC::mainTable. There was nothing VM-specific
about it at all, so clients now use JSC::mainTable directly.

After this change all fooHashTable structs end up in __DATA __const
and no runtime initialization/allocation takes place.

* create_hash_table:
* jsc.cpp:
* parser/Lexer.cpp:
(JSC::isLexerKeyword):
(JSC::Lexer&lt;LChar&gt;::parseIdentifier):
(JSC::Lexer&lt;UChar&gt;::parseIdentifier):
(JSC::Lexer&lt;CharacterType&gt;::parseIdentifierSlowCase):
(JSC::Keywords::Keywords): Deleted.
* parser/Lexer.h:
(JSC::Keywords::isKeyword): Deleted.
(JSC::Keywords::getKeyword): Deleted.
(JSC::Keywords::~Keywords): Deleted.
* runtime/LiteralParser.cpp:
(JSC::LiteralParser&lt;CharType&gt;::tryJSONPParse):
* runtime/Lookup.cpp:
(JSC::HashTable::createTable): Deleted.
(JSC::HashTable::deleteTable): Deleted.
* runtime/Lookup.h:
(JSC::HashTable::entry):
(JSC::HashTable::ConstIterator::key):
(JSC::HashTable::ConstIterator::skipInvalidKeys):
(JSC::HashTable::copy): Deleted.
(JSC::HashTable::initializeIfNeeded): Deleted.
(JSC::HashTable::begin): Deleted.
(JSC::HashTable::end): Deleted.
* runtime/VM.cpp:
(JSC::VM::VM): Deleted.
* runtime/VM.h:
* testRegExp.cpp:

Source/WebCore:

Adjust WebCore bindings generator for new JSC::HashTable layout
and rebaseline the bindings tests for that change.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHashTable):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
* bindings/scripts/test/JS/JSTestException.cpp:
* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestTypedefs.cpp:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#releasesWebKitGTKwebkit210SourceJavaScriptCoreChangeLog">releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceJavaScriptCorecreate_hash_table">releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/create_hash_table</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceJavaScriptCorejsccpp">releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/jsc.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceJavaScriptCoreparserLexercpp">releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/parser/Lexer.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceJavaScriptCoreparserLexerh">releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/parser/Lexer.h</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceJavaScriptCoreruntimeLiteralParsercpp">releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/LiteralParser.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceJavaScriptCoreruntimeLookupcpp">releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/Lookup.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceJavaScriptCoreruntimeLookuph">releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/Lookup.h</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceJavaScriptCoreruntimeVMcpp">releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/VM.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceJavaScriptCoreruntimeVMh">releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/VM.h</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceJavaScriptCoretestRegExpcpp">releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/testRegExp.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceWebCoreChangeLog">releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceWebCorebindingsscriptsCodeGeneratorJSpm">releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp">releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp">releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestEventTargetcpp">releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestExceptioncpp">releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestInterfacecpp">releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestObjcpp">releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestTypedefscpp">releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="releasesWebKitGTKwebkit210SourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/ChangeLog (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/ChangeLog        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/ChangeLog        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -1,3 +1,55 @@
</span><ins>+2015-08-22  Andreas Kling  &lt;akling@apple.com&gt;
+
+        [JSC] Static hash tables should be 100% compile-time constant.
+        &lt;https://webkit.org/b/148359&gt;
+
+        Reviewed by Michael Saboff.
+
+        We were dirtying the memory pages containing static hash tables the
+        first time they were used, when a dynamically allocated index-to-key
+        table was built and cached in the HashTable struct.
+
+        It turns out that this &quot;optimization&quot; was completely useless, since
+        we've long since decoupled static hash tables from the JSC::VM and
+        we can get the key for an index via HashTable::values[index].m_key!
+
+        We also get rid of VM::keywords which was a little wrapper around
+        a VM-specific copy of JSC::mainTable. There was nothing VM-specific
+        about it at all, so clients now use JSC::mainTable directly.
+
+        After this change all fooHashTable structs end up in __DATA __const
+        and no runtime initialization/allocation takes place.
+
+        * create_hash_table:
+        * jsc.cpp:
+        * parser/Lexer.cpp:
+        (JSC::isLexerKeyword):
+        (JSC::Lexer&lt;LChar&gt;::parseIdentifier):
+        (JSC::Lexer&lt;UChar&gt;::parseIdentifier):
+        (JSC::Lexer&lt;CharacterType&gt;::parseIdentifierSlowCase):
+        (JSC::Keywords::Keywords): Deleted.
+        * parser/Lexer.h:
+        (JSC::Keywords::isKeyword): Deleted.
+        (JSC::Keywords::getKeyword): Deleted.
+        (JSC::Keywords::~Keywords): Deleted.
+        * runtime/LiteralParser.cpp:
+        (JSC::LiteralParser&lt;CharType&gt;::tryJSONPParse):
+        * runtime/Lookup.cpp:
+        (JSC::HashTable::createTable): Deleted.
+        (JSC::HashTable::deleteTable): Deleted.
+        * runtime/Lookup.h:
+        (JSC::HashTable::entry):
+        (JSC::HashTable::ConstIterator::key):
+        (JSC::HashTable::ConstIterator::skipInvalidKeys):
+        (JSC::HashTable::copy): Deleted.
+        (JSC::HashTable::initializeIfNeeded): Deleted.
+        (JSC::HashTable::begin): Deleted.
+        (JSC::HashTable::end): Deleted.
+        * runtime/VM.cpp:
+        (JSC::VM::VM): Deleted.
+        * runtime/VM.h:
+        * testRegExp.cpp:
+
</ins><span class="cx"> 2015-08-20  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         DFG should have a KnownBooleanUse for cases where we are required to know that the child is a boolean and it's not OK to speculate
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceJavaScriptCorecreate_hash_table"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/create_hash_table (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/create_hash_table        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/create_hash_table        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -330,7 +330,7 @@
</span><span class="cx">         $i++;
</span><span class="cx">     }
</span><span class="cx">     print &quot;};\n\n&quot;;
</span><del>-    print &quot;JS_EXPORT_PRIVATE extern const struct HashTable $name =\n&quot;;
-    print &quot;    \{ $packedSize, $compactHashSizeMask, $hasSetter, $nameEntries, 0, $nameIndex \};\n&quot;;
</del><ins>+    print &quot;static const struct HashTable $name =\n&quot;;
+    print &quot;    \{ $packedSize, $compactHashSizeMask, $hasSetter, $nameEntries, $nameIndex \};\n&quot;;
</ins><span class="cx">     print &quot;} // namespace\n&quot;;
</span><span class="cx"> }
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceJavaScriptCorejsccpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/jsc.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/jsc.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/jsc.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -101,10 +101,6 @@
</span><span class="cx"> using namespace JSC;
</span><span class="cx"> using namespace WTF;
</span><span class="cx"> 
</span><del>-namespace JSC {
-WTF_IMPORT extern const struct HashTable globalObjectTable;
-}
-
</del><span class="cx"> namespace {
</span><span class="cx"> 
</span><span class="cx"> NO_RETURN_WITH_VALUE static void jscExit(int status)
</span><span class="lines">@@ -689,10 +685,9 @@
</span><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-const ClassInfo GlobalObject::s_info = { &quot;global&quot;, &amp;JSGlobalObject::s_info, &amp;globalObjectTable, CREATE_METHOD_TABLE(GlobalObject) };
</del><ins>+const ClassInfo GlobalObject::s_info = { &quot;global&quot;, &amp;JSGlobalObject::s_info, nullptr, CREATE_METHOD_TABLE(GlobalObject) };
</ins><span class="cx"> const GlobalObjectMethodTable GlobalObject::s_globalObjectMethodTable = { &amp;allowsAccessFrom, &amp;supportsProfiling, &amp;supportsRichSourceInfo, &amp;shouldInterruptScript, &amp;javaScriptRuntimeFlags, 0, &amp;shouldInterruptScriptBeforeTimeout };
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> GlobalObject::GlobalObject(VM&amp; vm, Structure* structure)
</span><span class="cx">     : JSGlobalObject(vm, structure, &amp;s_globalObjectMethodTable)
</span><span class="cx"> {
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceJavaScriptCoreparserLexercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/parser/Lexer.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/parser/Lexer.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/parser/Lexer.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -44,10 +44,9 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-Keywords::Keywords(VM&amp; vm)
-    : m_vm(vm)
-    , m_keywordTable(JSC::mainTable)
</del><ins>+bool isLexerKeyword(const Identifier&amp; identifier)
</ins><span class="cx"> {
</span><ins>+    return JSC::mainTable.entry(identifier);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> enum CharacterType {
</span><span class="lines">@@ -948,7 +947,7 @@
</span><span class="cx">     if (UNLIKELY((remaining &lt; maxTokenLength) &amp;&amp; !(lexerFlags &amp; LexerFlagsIgnoreReservedWords)) &amp;&amp; !isPrivateName) {
</span><span class="cx">         ASSERT(shouldCreateIdentifier);
</span><span class="cx">         if (remaining &lt; maxTokenLength) {
</span><del>-            const HashTableValue* entry = m_vm-&gt;keywords-&gt;getKeyword(*ident);
</del><ins>+            const HashTableValue* entry = JSC::mainTable.entry(*ident);
</ins><span class="cx">             ASSERT((remaining &lt; maxTokenLength) || !entry);
</span><span class="cx">             if (!entry)
</span><span class="cx">                 return IDENT;
</span><span class="lines">@@ -1025,7 +1024,7 @@
</span><span class="cx">     if (UNLIKELY((remaining &lt; maxTokenLength) &amp;&amp; !(lexerFlags &amp; LexerFlagsIgnoreReservedWords)) &amp;&amp; !isPrivateName) {
</span><span class="cx">         ASSERT(shouldCreateIdentifier);
</span><span class="cx">         if (remaining &lt; maxTokenLength) {
</span><del>-            const HashTableValue* entry = m_vm-&gt;keywords-&gt;getKeyword(*ident);
</del><ins>+            const HashTableValue* entry = JSC::mainTable.entry(*ident);
</ins><span class="cx">             ASSERT((remaining &lt; maxTokenLength) || !entry);
</span><span class="cx">             if (!entry)
</span><span class="cx">                 return IDENT;
</span><span class="lines">@@ -1089,7 +1088,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (LIKELY(!(lexerFlags &amp; LexerFlagsIgnoreReservedWords))) {
</span><span class="cx">         ASSERT(shouldCreateIdentifier);
</span><del>-        const HashTableValue* entry = m_vm-&gt;keywords-&gt;getKeyword(*ident);
</del><ins>+        const HashTableValue* entry = JSC::mainTable.entry(*ident);
</ins><span class="cx">         if (!entry)
</span><span class="cx">             return IDENT;
</span><span class="cx">         JSTokenType token = static_cast&lt;JSTokenType&gt;(entry-&gt;lexerValue());
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceJavaScriptCoreparserLexerh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/parser/Lexer.h (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/parser/Lexer.h        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/parser/Lexer.h        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -33,33 +33,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-class Keywords {
-    WTF_MAKE_FAST_ALLOCATED;
-public:
-    bool isKeyword(const Identifier&amp; ident) const
-    {
-        return m_keywordTable.entry(ident);
-    }
-    
-    const HashTableValue* getKeyword(const Identifier&amp; ident) const
-    {
-        return m_keywordTable.entry(ident);
-    }
-
-    explicit Keywords(VM&amp;);
-
-    ~Keywords()
-    {
-        m_keywordTable.deleteTable();
-    }
-    
-private:
-    friend class VM;
-    
-    VM&amp; m_vm;
-    const HashTable m_keywordTable;
-};
-
</del><span class="cx"> enum LexerFlags {
</span><span class="cx">     LexerFlagsIgnoreReservedWords = 1, 
</span><span class="cx">     LexerFlagsDontBuildStrings = 2,
</span><span class="lines">@@ -68,6 +41,8 @@
</span><span class="cx"> 
</span><span class="cx"> struct ParsedUnicodeEscapeValue;
</span><span class="cx"> 
</span><ins>+bool isLexerKeyword(const Identifier&amp;);
+
</ins><span class="cx"> template &lt;typename T&gt;
</span><span class="cx"> class Lexer {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(Lexer);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceJavaScriptCoreruntimeLiteralParsercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/LiteralParser.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/LiteralParser.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/LiteralParser.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx">             entry.m_pathEntryName = Identifier::fromString(&amp;m_exec-&gt;vm(), m_lexer.currentToken().start, m_lexer.currentToken().end - m_lexer.currentToken().start);
</span><span class="cx">             path.append(entry);
</span><span class="cx">         }
</span><del>-        if (m_exec-&gt;vm().keywords-&gt;isKeyword(entry.m_pathEntryName))
</del><ins>+        if (isLexerKeyword(entry.m_pathEntryName))
</ins><span class="cx">             return false;
</span><span class="cx">         TokenType tokenType = m_lexer.next();
</span><span class="cx">         if (entry.m_type == JSONPPathEntryTypeDeclare &amp;&amp; tokenType != TokAssign)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceJavaScriptCoreruntimeLookupcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/Lookup.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/Lookup.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/Lookup.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -27,27 +27,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-void HashTable::createTable() const
-{
-    ASSERT(!keys);
-    keys = static_cast&lt;const char**&gt;(fastMalloc(sizeof(char*) * numberOfValues));
-
-    for (int i = 0; i &lt; numberOfValues; ++i) {
-        if (values[i].m_key)
-            keys[i] = values[i].m_key;
-        else
-            keys[i] = 0;
-    }
-}
-
-void HashTable::deleteTable() const
-{
-    if (keys) {
-        fastFree(keys);
-        keys = nullptr;
-    }
-}
-
</del><span class="cx"> void reifyStaticAccessor(VM&amp; vm, const HashTableValue&amp; value, JSObject&amp; thisObj, PropertyName propertyName)
</span><span class="cx"> {
</span><span class="cx">     JSGlobalObject* globalObject = thisObj.globalObject();
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceJavaScriptCoreruntimeLookuph"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/Lookup.h (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/Lookup.h        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/Lookup.h        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -72,34 +72,16 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> struct HashTable {
</span><del>-    mutable int numberOfValues;
</del><ins>+    int numberOfValues;
</ins><span class="cx">     int indexMask;
</span><span class="cx">     bool hasSetterOrReadonlyProperties;
</span><span class="cx"> 
</span><span class="cx">     const HashTableValue* values; // Fixed values generated by script.
</span><del>-    mutable const char** keys; // Table allocated at runtime.
</del><span class="cx">     const CompactHashIndex* index;
</span><span class="cx"> 
</span><del>-    ALWAYS_INLINE HashTable copy() const
-    {
-        // Don't copy dynamic table since it's thread specific.
-        HashTable result = { numberOfValues, indexMask, hasSetterOrReadonlyProperties, values, 0, index };
-        return result;
-    }
-
-    ALWAYS_INLINE void initializeIfNeeded() const
-    {
-        if (!keys)
-            createTable();
-    }
-
-    JS_EXPORT_PRIVATE void deleteTable() const;
-
</del><span class="cx">     // Find an entry in the table, and return the entry.
</span><span class="cx">     ALWAYS_INLINE const HashTableValue* entry(PropertyName propertyName) const
</span><span class="cx">     {
</span><del>-        initializeIfNeeded();
-
</del><span class="cx">         if (propertyName.isSymbol())
</span><span class="cx">             return nullptr;
</span><span class="cx"> 
</span><span class="lines">@@ -107,15 +89,13 @@
</span><span class="cx">         if (!uid)
</span><span class="cx">             return nullptr;
</span><span class="cx"> 
</span><del>-        ASSERT(keys);
-
</del><span class="cx">         int indexEntry = IdentifierRepHash::hash(uid) &amp; indexMask;
</span><span class="cx">         int valueIndex = index[indexEntry].value;
</span><span class="cx">         if (valueIndex == -1)
</span><span class="cx">             return nullptr;
</span><span class="cx"> 
</span><span class="cx">         while (true) {
</span><del>-            if (WTF::equal(uid, keys[valueIndex]))
</del><ins>+            if (WTF::equal(uid, values[valueIndex].m_key))
</ins><span class="cx">                 return &amp;values[valueIndex];
</span><span class="cx"> 
</span><span class="cx">             indexEntry = index[indexEntry].next;
</span><span class="lines">@@ -142,7 +122,7 @@
</span><span class="cx"> 
</span><span class="cx">         const char* key()
</span><span class="cx">         {
</span><del>-            return m_table-&gt;keys[m_position];
</del><ins>+            return m_table-&gt;values[m_position].m_key;
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         const HashTableValue* operator-&gt;()
</span><span class="lines">@@ -168,7 +148,7 @@
</span><span class="cx">         void skipInvalidKeys()
</span><span class="cx">         {
</span><span class="cx">             ASSERT(m_position &lt;= m_table-&gt;numberOfValues);
</span><del>-            while (m_position &lt; m_table-&gt;numberOfValues &amp;&amp; !m_table-&gt;keys[m_position])
</del><ins>+            while (m_position &lt; m_table-&gt;numberOfValues &amp;&amp; !m_table-&gt;values[m_position].m_key)
</ins><span class="cx">                 ++m_position;
</span><span class="cx">             ASSERT(m_position &lt;= m_table-&gt;numberOfValues);
</span><span class="cx">         }
</span><span class="lines">@@ -179,18 +159,12 @@
</span><span class="cx"> 
</span><span class="cx">     ConstIterator begin() const
</span><span class="cx">     {
</span><del>-        initializeIfNeeded();
</del><span class="cx">         return ConstIterator(this, 0);
</span><span class="cx">     }
</span><span class="cx">     ConstIterator end() const
</span><span class="cx">     {
</span><del>-        initializeIfNeeded();
</del><span class="cx">         return ConstIterator(this, numberOfValues);
</span><span class="cx">     }
</span><del>-
-private:
-    // Convert the hash table keys to identifiers.
-    JS_EXPORT_PRIVATE void createTable() const;
</del><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> JS_EXPORT_PRIVATE bool setUpStaticFunctionSlot(ExecState*, const HashTableValue*, JSObject* thisObject, PropertyName, PropertySlot&amp;);
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceJavaScriptCoreruntimeVMcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/VM.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/VM.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/VM.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -153,7 +153,6 @@
</span><span class="cx">     , emptyList(new MarkedArgumentBuffer)
</span><span class="cx">     , stringCache(*this)
</span><span class="cx">     , prototypeMap(*this)
</span><del>-    , keywords(std::make_unique&lt;Keywords&gt;(*this))
</del><span class="cx">     , interpreter(0)
</span><span class="cx">     , jsArrayClassInfo(JSArray::info())
</span><span class="cx">     , jsFinalObjectClassInfo(JSFinalObject::info())
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceJavaScriptCoreruntimeVMh"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/VM.h (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/VM.h        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/runtime/VM.h        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -86,7 +86,6 @@
</span><span class="cx"> class Interpreter;
</span><span class="cx"> class JSGlobalObject;
</span><span class="cx"> class JSObject;
</span><del>-class Keywords;
</del><span class="cx"> class LLIntOffsetsExtractor;
</span><span class="cx"> class LegacyProfiler;
</span><span class="cx"> class NativeExecutable;
</span><span class="lines">@@ -348,7 +347,6 @@
</span><span class="cx"> 
</span><span class="cx">     typedef HashMap&lt;RefPtr&lt;SourceProvider&gt;, RefPtr&lt;SourceProviderCache&gt;&gt; SourceProviderCacheMap;
</span><span class="cx">     SourceProviderCacheMap sourceProviderCacheMap;
</span><del>-    std::unique_ptr&lt;Keywords&gt; keywords;
</del><span class="cx">     Interpreter* interpreter;
</span><span class="cx"> #if ENABLE(JIT)
</span><span class="cx">     std::unique_ptr&lt;JITThunks&gt; jitStubs;
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceJavaScriptCoretestRegExpcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/testRegExp.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/testRegExp.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/JavaScriptCore/testRegExp.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -45,10 +45,6 @@
</span><span class="cx"> #include &lt;windows.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-namespace JSC {
-WTF_IMPORT extern const struct HashTable globalObjectTable;
-}
-
</del><span class="cx"> const int MaxLineLength = 100 * 1024;
</span><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span><span class="lines">@@ -137,7 +133,7 @@
</span><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-const ClassInfo GlobalObject::s_info = { &quot;global&quot;, &amp;JSGlobalObject::s_info, &amp;globalObjectTable, CREATE_METHOD_TABLE(GlobalObject) };
</del><ins>+const ClassInfo GlobalObject::s_info = { &quot;global&quot;, &amp;JSGlobalObject::s_info, nullptr, CREATE_METHOD_TABLE(GlobalObject) };
</ins><span class="cx"> 
</span><span class="cx"> GlobalObject::GlobalObject(VM&amp; vm, Structure* structure, const Vector&lt;String&gt;&amp; arguments)
</span><span class="cx">     : JSGlobalObject(vm, structure)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -1,3 +1,24 @@
</span><ins>+2015-08-22  Andreas Kling  &lt;akling@apple.com&gt;
+
+        [JSC] Static hash tables should be 100% compile-time constant.
+        &lt;https://webkit.org/b/148359&gt;
+
+        Reviewed by Michael Saboff.
+
+        Adjust WebCore bindings generator for new JSC::HashTable layout
+        and rebaseline the bindings tests for that change.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateHashTable):
+        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
+        * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
+        * bindings/scripts/test/JS/JSTestEventTarget.cpp:
+        * bindings/scripts/test/JS/JSTestException.cpp:
+        * bindings/scripts/test/JS/JSTestInterface.cpp:
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
+        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
+
</ins><span class="cx"> 2015-08-22  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Page::renderTreeSize() does not include anonymous renderers.
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -4236,7 +4236,7 @@
</span><span class="cx">     my $packedSize = scalar @{$keys};
</span><span class="cx"> 
</span><span class="cx">     my $compactSizeMask = $numEntries - 1;
</span><del>-    push(@implContent, &quot;static const HashTable $name = { $packedSize, $compactSizeMask, $hasSetter, $nameEntries, 0, $nameIndex };\n&quot;);
</del><ins>+    push(@implContent, &quot;static const HashTable $name = { $packedSize, $compactSizeMask, $hasSetter, $nameEntries, $nameIndex };\n&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> sub WriteData
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx">     { &quot;excitingAttr&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestActiveDOMObjectExcitingAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static const HashTable JSTestActiveDOMObjectTable = { 2, 3, true, JSTestActiveDOMObjectTableValues, 0, JSTestActiveDOMObjectTableIndex };
</del><ins>+static const HashTable JSTestActiveDOMObjectTable = { 2, 3, true, JSTestActiveDOMObjectTableValues, JSTestActiveDOMObjectTableIndex };
</ins><span class="cx"> const ClassInfo JSTestActiveDOMObjectConstructor::s_info = { &quot;TestActiveDOMObjectConstructor&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSTestActiveDOMObjectConstructor) };
</span><span class="cx"> 
</span><span class="cx"> JSTestActiveDOMObjectConstructor::JSTestActiveDOMObjectConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -99,7 +99,7 @@
</span><span class="cx">     { &quot;constructor&quot;, DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestCustomNamedGetterConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static const HashTable JSTestCustomNamedGetterTable = { 1, 1, true, JSTestCustomNamedGetterTableValues, 0, JSTestCustomNamedGetterTableIndex };
</del><ins>+static const HashTable JSTestCustomNamedGetterTable = { 1, 1, true, JSTestCustomNamedGetterTableValues, JSTestCustomNamedGetterTableIndex };
</ins><span class="cx"> const ClassInfo JSTestCustomNamedGetterConstructor::s_info = { &quot;TestCustomNamedGetterConstructor&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSTestCustomNamedGetterConstructor) };
</span><span class="cx"> 
</span><span class="cx"> JSTestCustomNamedGetterConstructor::JSTestCustomNamedGetterConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -108,7 +108,7 @@
</span><span class="cx">     { &quot;constructor&quot;, DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestEventTargetConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static const HashTable JSTestEventTargetTable = { 1, 1, true, JSTestEventTargetTableValues, 0, JSTestEventTargetTableIndex };
</del><ins>+static const HashTable JSTestEventTargetTable = { 1, 1, true, JSTestEventTargetTableValues, JSTestEventTargetTableIndex };
</ins><span class="cx"> const ClassInfo JSTestEventTargetConstructor::s_info = { &quot;TestEventTargetConstructor&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSTestEventTargetConstructor) };
</span><span class="cx"> 
</span><span class="cx"> JSTestEventTargetConstructor::JSTestEventTargetConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestExceptioncpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx">     { &quot;name&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestExceptionName), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static const HashTable JSTestExceptionTable = { 1, 1, true, JSTestExceptionTableValues, 0, JSTestExceptionTableIndex };
</del><ins>+static const HashTable JSTestExceptionTable = { 1, 1, true, JSTestExceptionTableValues, JSTestExceptionTableIndex };
</ins><span class="cx"> const ClassInfo JSTestExceptionConstructor::s_info = { &quot;TestExceptionConstructor&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSTestExceptionConstructor) };
</span><span class="cx"> 
</span><span class="cx"> JSTestExceptionConstructor::JSTestExceptionConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -195,7 +195,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static const HashTable JSTestInterfaceTable = { 2, 3, true, JSTestInterfaceTableValues, 0, JSTestInterfaceTableIndex };
</del><ins>+static const HashTable JSTestInterfaceTable = { 2, 3, true, JSTestInterfaceTableValues, JSTestInterfaceTableIndex };
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestInterfaceConstructorTableValues[] =
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -395,7 +395,7 @@
</span><span class="cx">     { &quot;contentDocument&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjContentDocument), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static const HashTable JSTestObjTable = { 6, 15, true, JSTestObjTableValues, 0, JSTestObjTableIndex };
</del><ins>+static const HashTable JSTestObjTable = { 6, 15, true, JSTestObjTableValues, JSTestObjTableIndex };
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestObjConstructorTableValues[] =
</span></span></pre></div>
<a id="releasesWebKitGTKwebkit210SourceWebCorebindingsscriptstestJSJSTestTypedefscpp"></a>
<div class="modfile"><h4>Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (189699 => 189700)</h4>
<pre class="diff"><span>
<span class="info">--- releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2015-09-14 09:08:34 UTC (rev 189699)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2015-09-14 09:40:26 UTC (rev 189700)
</span><span class="lines">@@ -136,7 +136,7 @@
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 }
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static const HashTable JSTestTypedefsTable = { 0, 1, false, JSTestTypedefsTableValues, 0, JSTestTypedefsTableIndex };
</del><ins>+static const HashTable JSTestTypedefsTable = { 0, 1, false, JSTestTypedefsTableValues, JSTestTypedefsTableIndex };
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestTypedefsConstructorTableValues[] =
</span></span></pre>
</div>
</div>

</body>
</html>