<!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>[165603] trunk</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/165603">165603</a></dd>
<dt>Author</dt> <dd>barraclough@apple.com</dd>
<dt>Date</dt> <dd>2014-03-13 23:45:39 -0700 (Thu, 13 Mar 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Reduce memory use for static property maps
https://bugs.webkit.org/show_bug.cgi?id=129986
Reviewed by Andreas Kling.
Static property tables are currently duplicated on first use from read-only memory into dirty memory
in every process, and since the entries are large (48 bytes) and the tables can be unusually sparse
(we use a custom hash table without a rehash) a lot of memory may be wasted.
Source/JavaScriptCore:
First, reduce the size of the hashtable. Instead of storing values in the table the hashtable maps
from string hashes to indicies into a densely packed array of values. Compute the index table at
compile time as a part of the derived sources step, such that this may be read-only data.
Second, don't copy all data from the HashTableValue array into a HashEntry objects. Instead refer
directly to the HashTableValue entries. The only data that needs to be allocated at runtime are the
keys, which are Identifiers.
* create_hash_table:
- emit the hash table index into the derived source (we were calculating this already to ensure chaining does not get too deep).
* parser/Lexer.cpp:
(JSC::Lexer<LChar>::parseIdentifier):
(JSC::Lexer<UChar>::parseIdentifier):
(JSC::Lexer<T>::parseIdentifierSlowCase):
- HashEntry -> HashTableValue.
* parser/Lexer.h:
(JSC::Keywords::getKeyword):
- HashEntry -> HashTableValue.
* runtime/ClassInfo.h:
- removed HashEntry.
* runtime/JSObject.cpp:
(JSC::getClassPropertyNames):
- use HashTable::ConstIterator.
(JSC::JSObject::put):
(JSC::JSObject::deleteProperty):
(JSC::JSObject::findPropertyHashEntry):
- HashEntry -> HashTableValue.
(JSC::JSObject::reifyStaticFunctionsForDelete):
- changed HashTable::ConstIterator interface.
* runtime/JSObject.h:
- HashEntry -> HashTableValue.
* runtime/Lookup.cpp:
(JSC::HashTable::createTable):
- table -> keys, keys array is now densely packed.
(JSC::HashTable::deleteTable):
- table -> keys.
(JSC::setUpStaticFunctionSlot):
- HashEntry -> HashTableValue.
* runtime/Lookup.h:
(JSC::HashTableValue::builtinGenerator):
(JSC::HashTableValue::function):
(JSC::HashTableValue::functionLength):
(JSC::HashTableValue::propertyGetter):
(JSC::HashTableValue::propertyPutter):
(JSC::HashTableValue::lexerValue):
- added accessor methods from HashEntry.
(JSC::HashTable::copy):
- fields changed.
(JSC::HashTable::initializeIfNeeded):
- table -> keys.
(JSC::HashTable::entry):
- HashEntry -> HashTableValue.
(JSC::HashTable::ConstIterator::ConstIterator):
- iterate packed value array, so no need to skipInvalidKeys().
(JSC::HashTable::ConstIterator::value):
(JSC::HashTable::ConstIterator::key):
(JSC::HashTable::ConstIterator::operator->):
- accessors now get HashTableValue/StringImpl* separately.
(JSC::HashTable::ConstIterator::operator++):
- iterate packed value array, so no need to skipInvalidKeys().
(JSC::HashTable::end):
- end is now size of dense not sparse array.
(JSC::getStaticPropertySlot):
(JSC::getStaticFunctionSlot):
(JSC::getStaticValueSlot):
(JSC::putEntry):
(JSC::lookupPut):
- HashEntry -> HashTableValue.
Source/WebCore:
* bindings/js/JSDOMBinding.h:
(WebCore::getStaticValueSlotEntryWithoutCaching):
(WebCore::getStaticValueSlotEntryWithoutCaching<JSDOMWrapper>):
- HashEntry -> HashTableValue.
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::getOwnPropertySlot):
- HashEntry -> HashTableValue.
* bindings/js/JSHistoryCustom.cpp:
(WebCore::JSHistory::getOwnPropertySlotDelegate):
- HashEntry -> HashTableValue.
* bindings/js/JSLocationCustom.cpp:
(WebCore::JSLocation::getOwnPropertySlotDelegate):
(WebCore::JSLocation::putDelegate):
- HashEntry -> HashTableValue.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateGetOwnPropertySlotBody):
- HashEntry -> HashTableValue.
(GenerateHashTable):
- emit the hash table index into the derived source (we were calculating this already to ensure chaining does not get too deep).
LayoutTests:
* inspector-protocol/debugger/setPauseOnExceptions-all-expected.txt:
* inspector-protocol/debugger/setPauseOnExceptions-none-expected.txt:
* inspector-protocol/debugger/setPauseOnExceptions-uncaught-expected.txt:
* js/dom/dom-static-property-for-in-iteration-expected.txt:
- Properties now iterated in correct order, not permuted by hash table.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsinspectorprotocoldebuggersetPauseOnExceptionsallexpectedtxt">trunk/LayoutTests/inspector-protocol/debugger/setPauseOnExceptions-all-expected.txt</a></li>
<li><a href="#trunkLayoutTestsinspectorprotocoldebuggersetPauseOnExceptionsnoneexpectedtxt">trunk/LayoutTests/inspector-protocol/debugger/setPauseOnExceptions-none-expected.txt</a></li>
<li><a href="#trunkLayoutTestsinspectorprotocoldebuggersetPauseOnExceptionsuncaughtexpectedtxt">trunk/LayoutTests/inspector-protocol/debugger/setPauseOnExceptions-uncaught-expected.txt</a></li>
<li><a href="#trunkLayoutTestsjsdomdomstaticpropertyforiniterationexpectedtxt">trunk/LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCorecreate_hash_table">trunk/Source/JavaScriptCore/create_hash_table</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserLexercpp">trunk/Source/JavaScriptCore/parser/Lexer.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserLexerh">trunk/Source/JavaScriptCore/parser/Lexer.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeClassInfoh">trunk/Source/JavaScriptCore/runtime/ClassInfo.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSObjectcpp">trunk/Source/JavaScriptCore/runtime/JSObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSObjecth">trunk/Source/JavaScriptCore/runtime/JSObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeLookupcpp">trunk/Source/JavaScriptCore/runtime/Lookup.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeLookuph">trunk/Source/JavaScriptCore/runtime/Lookup.h</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingh">trunk/Source/WebCore/bindings/js/JSDOMBinding.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHistoryCustomcpp">trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSLocationCustomcpp">trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSattributecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSreadonlycpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/LayoutTests/ChangeLog        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2014-03-12 Gavin Barraclough <barraclough@apple.com>
+
+ Reduce memory use for static property maps
+ https://bugs.webkit.org/show_bug.cgi?id=129986
+
+ Reviewed by Andreas Kling.
+
+ Static property tables are currently duplicated on first use from read-only memory into dirty memory
+ in every process, and since the entries are large (48 bytes) and the tables can be unusually sparse
+ (we use a custom hash table without a rehash) a lot of memory may be wasted.
+
+ * inspector-protocol/debugger/setPauseOnExceptions-all-expected.txt:
+ * inspector-protocol/debugger/setPauseOnExceptions-none-expected.txt:
+ * inspector-protocol/debugger/setPauseOnExceptions-uncaught-expected.txt:
+ * js/dom/dom-static-property-for-in-iteration-expected.txt:
+ - Properties now iterated in correct order, not permuted by hash table.
+
</ins><span class="cx"> 2014-03-13 Manish R Gurnaney <m.gurnaney@samsung.com>
</span><span class="cx">
</span><span class="cx"> Scroll size is not recalculated when absolute left of child is updated
</span></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocoldebuggersetPauseOnExceptionsallexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector-protocol/debugger/setPauseOnExceptions-all-expected.txt (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/debugger/setPauseOnExceptions-all-expected.txt        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/LayoutTests/inspector-protocol/debugger/setPauseOnExceptions-all-expected.txt        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> CONSOLE MESSAGE: line 1: caught inline: {"line":1,"column":36}
</span><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: {"line":3,"column":11,"sourceURL":"exception.js"}
</span><del>-CONSOLE MESSAGE: line 38: catchNested caught exception: {"code":8,"message":"NotFoundError: DOM Exception 8","name":"NotFoundError","line":8,"column":30,"sourceURL":"exception.js"}
</del><ins>+CONSOLE MESSAGE: line 38: catchNested caught exception: {"code":8,"name":"NotFoundError","message":"NotFoundError: DOM Exception 8","line":8,"column":30,"sourceURL":"exception.js"}
</ins><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: "exception in host function"
</span><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: "exception string"
</span><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: {"line":18,"column":12,"sourceURL":"exception.js"}
</span></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocoldebuggersetPauseOnExceptionsnoneexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector-protocol/debugger/setPauseOnExceptions-none-expected.txt (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/debugger/setPauseOnExceptions-none-expected.txt        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/LayoutTests/inspector-protocol/debugger/setPauseOnExceptions-none-expected.txt        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> CONSOLE MESSAGE: line 1: caught inline: {"line":1,"column":36}
</span><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: {"line":3,"column":11,"sourceURL":"exception.js"}
</span><del>-CONSOLE MESSAGE: line 38: catchNested caught exception: {"code":8,"message":"NotFoundError: DOM Exception 8","name":"NotFoundError","line":8,"column":30,"sourceURL":"exception.js"}
</del><ins>+CONSOLE MESSAGE: line 38: catchNested caught exception: {"code":8,"name":"NotFoundError","message":"NotFoundError: DOM Exception 8","line":8,"column":30,"sourceURL":"exception.js"}
</ins><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: "exception in host function"
</span><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: "exception string"
</span><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: {"line":18,"column":12,"sourceURL":"exception.js"}
</span></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocoldebuggersetPauseOnExceptionsuncaughtexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector-protocol/debugger/setPauseOnExceptions-uncaught-expected.txt (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/debugger/setPauseOnExceptions-uncaught-expected.txt        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/LayoutTests/inspector-protocol/debugger/setPauseOnExceptions-uncaught-expected.txt        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> CONSOLE MESSAGE: line 1: caught inline: {"line":1,"column":36}
</span><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: {"line":3,"column":11,"sourceURL":"exception.js"}
</span><del>-CONSOLE MESSAGE: line 38: catchNested caught exception: {"code":8,"message":"NotFoundError: DOM Exception 8","name":"NotFoundError","line":8,"column":30,"sourceURL":"exception.js"}
</del><ins>+CONSOLE MESSAGE: line 38: catchNested caught exception: {"code":8,"name":"NotFoundError","message":"NotFoundError: DOM Exception 8","line":8,"column":30,"sourceURL":"exception.js"}
</ins><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: "exception in host function"
</span><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: "exception string"
</span><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: {"line":18,"column":12,"sourceURL":"exception.js"}
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> CONSOLE MESSAGE: line 18: Error: error message
</span><span class="cx"> CONSOLE MESSAGE: line 1: caught inline: {"line":1,"column":36}
</span><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: {"line":3,"column":11,"sourceURL":"exception.js"}
</span><del>-CONSOLE MESSAGE: line 38: catchNested caught exception: {"code":8,"message":"NotFoundError: DOM Exception 8","name":"NotFoundError","line":8,"column":30,"sourceURL":"exception.js"}
</del><ins>+CONSOLE MESSAGE: line 38: catchNested caught exception: {"code":8,"name":"NotFoundError","message":"NotFoundError: DOM Exception 8","line":8,"column":30,"sourceURL":"exception.js"}
</ins><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: "exception in host function"
</span><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: "exception string"
</span><span class="cx"> CONSOLE MESSAGE: line 38: catchNested caught exception: {"line":18,"column":12,"sourceURL":"exception.js"}
</span></span></pre></div>
<a id="trunkLayoutTestsjsdomdomstaticpropertyforiniterationexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -9,102 +9,102 @@
</span><span class="cx"> PASS a["hick"] is 4
</span><span class="cx"> PASS a["hock"] is 5
</span><span class="cx"> PASS a["snood"] is 6
</span><del>-PASS a["origin"] is file://
-PASS a["hash"] is
-PASS a["search"] is
-PASS a["text"] is nerget
-PASS a["hostname"] is
-PASS a["rel"] is
</del><ins>+PASS a["charset"] is
+PASS a["coords"] is
</ins><span class="cx"> PASS a["hreflang"] is
</span><ins>+PASS a["name"] is
</ins><span class="cx"> PASS a["ping"] is
</span><ins>+PASS a["rel"] is
</ins><span class="cx"> PASS a["rev"] is
</span><del>-PASS a["host"] is
-PASS a["charset"] is
</del><ins>+PASS a["shape"] is
</ins><span class="cx"> PASS a["target"] is
</span><span class="cx"> PASS a["type"] is
</span><del>-PASS a["coords"] is
-PASS a["name"] is
-PASS a["shape"] is
</del><ins>+PASS a["hash"] is
+PASS a["host"] is
+PASS a["hostname"] is
</ins><span class="cx"> PASS a["port"] is
</span><span class="cx"> PASS a["protocol"] is file:
</span><del>-PASS a["outerHTML"] is <a id="foo" href="bar">nerget</a>
-PASS a["spellcheck"] is true
-PASS a["webkitdropzone"] is
</del><ins>+PASS a["search"] is
+PASS a["origin"] is file://
+PASS a["text"] is nerget
</ins><span class="cx"> PASS a["title"] is
</span><span class="cx"> PASS a["lang"] is
</span><span class="cx"> PASS a["translate"] is true
</span><del>-PASS a["hidden"] is false
-PASS a["innerText"] is nerget
</del><span class="cx"> PASS a["dir"] is
</span><del>-PASS a["innerHTML"] is nerget
-PASS a["contentEditable"] is inherit
</del><span class="cx"> PASS a["tabIndex"] is 0
</span><span class="cx"> PASS a["draggable"] is true
</span><ins>+PASS a["webkitdropzone"] is
+PASS a["hidden"] is false
+PASS a["accessKey"] is
+PASS a["innerHTML"] is nerget
+PASS a["innerText"] is nerget
+PASS a["outerHTML"] is <a id="foo" href="bar">nerget</a>
</ins><span class="cx"> PASS a["outerText"] is nerget
</span><del>-PASS a["accessKey"] is
</del><span class="cx"> PASS a["children"] is [object HTMLCollection]
</span><ins>+PASS a["contentEditable"] is inherit
</ins><span class="cx"> PASS a["isContentEditable"] is false
</span><ins>+PASS a["spellcheck"] is true
+PASS a["tagName"] is A
+PASS a["attributes"] is [object NamedNodeMap]
</ins><span class="cx"> PASS a["style"] is [object CSSStyleDeclaration]
</span><span class="cx"> PASS a["id"] is foo
</span><del>-PASS a["dataset"] is [object DOMStringMap]
</del><ins>+PASS a["offsetLeft"] is 8
+PASS a["offsetTop"] is 774
+PASS a["offsetWidth"] is 39
+PASS a["offsetHeight"] is 18
+PASS a["offsetParent"] is [object HTMLBodyElement]
+PASS a["clientLeft"] is 0
+PASS a["clientTop"] is 0
</ins><span class="cx"> PASS a["clientWidth"] is 0
</span><ins>+PASS a["clientHeight"] is 0
+PASS a["scrollLeft"] is 0
+PASS a["scrollTop"] is 0
</ins><span class="cx"> PASS a["scrollWidth"] is 0
</span><del>-PASS a["attributes"] is [object NamedNodeMap]
-PASS a["webkitRegionOverset"] is undefined
-PASS a["ALLOW_KEYBOARD_INPUT"] is 1
-PASS a["offsetWidth"] is 39
</del><ins>+PASS a["scrollHeight"] is 0
+PASS a["className"] is
</ins><span class="cx"> PASS a["classList"] is
</span><del>-PASS a["offsetLeft"] is 8
-PASS a["className"] is
-PASS a["clientTop"] is 0
</del><ins>+PASS a["dataset"] is [object DOMStringMap]
+PASS a["firstElementChild"] is null
</ins><span class="cx"> PASS a["lastElementChild"] is null
</span><del>-PASS a["offsetParent"] is [object HTMLBodyElement]
</del><ins>+PASS a["previousElementSibling"] is [object HTMLDivElement]
</ins><span class="cx"> PASS a["nextElementSibling"] is [object HTMLScriptElement]
</span><del>-PASS a["tagName"] is A
-PASS a["previousElementSibling"] is [object HTMLDivElement]
</del><span class="cx"> PASS a["childElementCount"] is 0
</span><del>-PASS a["scrollLeft"] is 0
-PASS a["firstElementChild"] is null
</del><span class="cx"> PASS a["uiactions"] is
</span><del>-PASS a["clientLeft"] is 0
-PASS a["offsetHeight"] is 18
-PASS a["clientHeight"] is 0
-PASS a["offsetTop"] is 1074
-PASS a["scrollTop"] is 0
-PASS a["scrollHeight"] is 0
-PASS a["previousSibling"] is [object Text]
-PASS a["NOTATION_NODE"] is 12
-PASS a["CDATA_SECTION_NODE"] is 4
-PASS a["lastChild"] is [object Text]
-PASS a["ELEMENT_NODE"] is 1
</del><ins>+PASS a["webkitRegionOverset"] is undefined
+PASS a["ALLOW_KEYBOARD_INPUT"] is 1
+PASS a["nodeName"] is A
</ins><span class="cx"> PASS a["nodeValue"] is null
</span><del>-PASS a["DOCUMENT_POSITION_DISCONNECTED"] is 1
-PASS a["ENTITY_NODE"] is 6
-PASS a["TEXT_NODE"] is 3
-PASS a["ENTITY_REFERENCE_NODE"] is 5
-PASS a["textContent"] is nerget
</del><span class="cx"> PASS a["nodeType"] is 1
</span><del>-PASS a["DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC"] is 32
-PASS a["ownerDocument"] is [object HTMLDocument]
-PASS a["PROCESSING_INSTRUCTION_NODE"] is 7
-PASS a["localName"] is a
</del><span class="cx"> PASS a["parentNode"] is [object HTMLBodyElement]
</span><ins>+PASS a["childNodes"] is [object NodeList]
</ins><span class="cx"> PASS a["firstChild"] is [object Text]
</span><del>-PASS a["DOCUMENT_POSITION_PRECEDING"] is 2
-PASS a["DOCUMENT_TYPE_NODE"] is 10
-PASS a["COMMENT_NODE"] is 8
-PASS a["nodeName"] is A
-PASS a["DOCUMENT_POSITION_FOLLOWING"] is 4
-PASS a["prefix"] is null
-PASS a["childNodes"] is [object NodeList]
</del><ins>+PASS a["lastChild"] is [object Text]
+PASS a["previousSibling"] is [object Text]
</ins><span class="cx"> PASS a["nextSibling"] is [object Text]
</span><del>-PASS a["ATTRIBUTE_NODE"] is 2
-PASS a["DOCUMENT_POSITION_CONTAINED_BY"] is 16
</del><ins>+PASS a["ownerDocument"] is [object HTMLDocument]
</ins><span class="cx"> PASS a["namespaceURI"] is http://www.w3.org/1999/xhtml
</span><ins>+PASS a["prefix"] is null
+PASS a["localName"] is a
+PASS a["textContent"] is nerget
</ins><span class="cx"> PASS a["parentElement"] is [object HTMLBodyElement]
</span><ins>+PASS a["ELEMENT_NODE"] is 1
+PASS a["ATTRIBUTE_NODE"] is 2
+PASS a["TEXT_NODE"] is 3
+PASS a["CDATA_SECTION_NODE"] is 4
+PASS a["ENTITY_REFERENCE_NODE"] is 5
+PASS a["ENTITY_NODE"] is 6
+PASS a["PROCESSING_INSTRUCTION_NODE"] is 7
+PASS a["COMMENT_NODE"] is 8
</ins><span class="cx"> PASS a["DOCUMENT_NODE"] is 9
</span><ins>+PASS a["DOCUMENT_TYPE_NODE"] is 10
</ins><span class="cx"> PASS a["DOCUMENT_FRAGMENT_NODE"] is 11
</span><ins>+PASS a["NOTATION_NODE"] is 12
+PASS a["DOCUMENT_POSITION_DISCONNECTED"] is 1
+PASS a["DOCUMENT_POSITION_PRECEDING"] is 2
+PASS a["DOCUMENT_POSITION_FOLLOWING"] is 4
</ins><span class="cx"> PASS a["DOCUMENT_POSITION_CONTAINS"] is 8
</span><ins>+PASS a["DOCUMENT_POSITION_CONTAINED_BY"] is 16
+PASS a["DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC"] is 32
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx">
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -1,3 +1,83 @@
</span><ins>+2014-03-12 Gavin Barraclough <barraclough@apple.com>
+
+ Reduce memory use for static property maps
+ https://bugs.webkit.org/show_bug.cgi?id=129986
+
+ Reviewed by Andreas Kling.
+
+ Static property tables are currently duplicated on first use from read-only memory into dirty memory
+ in every process, and since the entries are large (48 bytes) and the tables can be unusually sparse
+ (we use a custom hash table without a rehash) a lot of memory may be wasted.
+
+ First, reduce the size of the hashtable. Instead of storing values in the table the hashtable maps
+ from string hashes to indicies into a densely packed array of values. Compute the index table at
+ compile time as a part of the derived sources step, such that this may be read-only data.
+
+ Second, don't copy all data from the HashTableValue array into a HashEntry objects. Instead refer
+ directly to the HashTableValue entries. The only data that needs to be allocated at runtime are the
+ keys, which are Identifiers.
+
+ * create_hash_table:
+ - emit the hash table index into the derived source (we were calculating this already to ensure chaining does not get too deep).
+ * parser/Lexer.cpp:
+ (JSC::Lexer<LChar>::parseIdentifier):
+ (JSC::Lexer<UChar>::parseIdentifier):
+ (JSC::Lexer<T>::parseIdentifierSlowCase):
+ - HashEntry -> HashTableValue.
+ * parser/Lexer.h:
+ (JSC::Keywords::getKeyword):
+ - HashEntry -> HashTableValue.
+ * runtime/ClassInfo.h:
+ - removed HashEntry.
+ * runtime/JSObject.cpp:
+ (JSC::getClassPropertyNames):
+ - use HashTable::ConstIterator.
+ (JSC::JSObject::put):
+ (JSC::JSObject::deleteProperty):
+ (JSC::JSObject::findPropertyHashEntry):
+ - HashEntry -> HashTableValue.
+ (JSC::JSObject::reifyStaticFunctionsForDelete):
+ - changed HashTable::ConstIterator interface.
+ * runtime/JSObject.h:
+ - HashEntry -> HashTableValue.
+ * runtime/Lookup.cpp:
+ (JSC::HashTable::createTable):
+ - table -> keys, keys array is now densely packed.
+ (JSC::HashTable::deleteTable):
+ - table -> keys.
+ (JSC::setUpStaticFunctionSlot):
+ - HashEntry -> HashTableValue.
+ * runtime/Lookup.h:
+ (JSC::HashTableValue::builtinGenerator):
+ (JSC::HashTableValue::function):
+ (JSC::HashTableValue::functionLength):
+ (JSC::HashTableValue::propertyGetter):
+ (JSC::HashTableValue::propertyPutter):
+ (JSC::HashTableValue::lexerValue):
+ - added accessor methods from HashEntry.
+ (JSC::HashTable::copy):
+ - fields changed.
+ (JSC::HashTable::initializeIfNeeded):
+ - table -> keys.
+ (JSC::HashTable::entry):
+ - HashEntry -> HashTableValue.
+ (JSC::HashTable::ConstIterator::ConstIterator):
+ - iterate packed value array, so no need to skipInvalidKeys().
+ (JSC::HashTable::ConstIterator::value):
+ (JSC::HashTable::ConstIterator::key):
+ (JSC::HashTable::ConstIterator::operator->):
+ - accessors now get HashTableValue/StringImpl* separately.
+ (JSC::HashTable::ConstIterator::operator++):
+ - iterate packed value array, so no need to skipInvalidKeys().
+ (JSC::HashTable::end):
+ - end is now size of dense not sparse array.
+ (JSC::getStaticPropertySlot):
+ (JSC::getStaticFunctionSlot):
+ (JSC::getStaticValueSlot):
+ (JSC::putEntry):
+ (JSC::lookupPut):
+ - HashEntry -> HashTableValue.
+
</ins><span class="cx"> 2014-03-13 Filip Pizlo <fpizlo@apple.com>
</span><span class="cx">
</span><span class="cx"> Unreviewed, fix Mac no-FTL build.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorecreate_hash_table"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/create_hash_table (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/create_hash_table        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/JavaScriptCore/create_hash_table        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -41,6 +41,8 @@
</span><span class="cx"> my @attrs = ();
</span><span class="cx"> my @values = ();
</span><span class="cx"> my @hashes = ();
</span><ins>+my @table = ();
+my @links = ();
</ins><span class="cx">
</span><span class="cx"> my $hasSetter = "false";
</span><span class="cx">
</span><span class="lines">@@ -76,6 +78,8 @@
</span><span class="cx"> @attrs = ();
</span><span class="cx"> @values = ();
</span><span class="cx"> @hashes = ();
</span><ins>+ @table = ();
+ @links = ();
</ins><span class="cx">
</span><span class="cx"> $inside = 0;
</span><span class="cx"> } elsif (/^(\S+)\s*(\S+)\s*([\w\|]*)\s*(\w*)\s*$/ && $inside) {
</span><span class="lines">@@ -155,8 +159,6 @@
</span><span class="cx">
</span><span class="cx"> sub calcCompactHashSize()
</span><span class="cx"> {
</span><del>- my @table = ();
- my @links = ();
</del><span class="cx"> my $compactHashSize = ceilingToPowerOf2(2 * @keys);
</span><span class="cx"> $compactHashSizeMask = $compactHashSize - 1;
</span><span class="cx"> $compactSize = $compactHashSize;
</span><span class="lines">@@ -247,6 +249,8 @@
</span><span class="cx">
</span><span class="cx"> my $nameEntries = "${name}Values";
</span><span class="cx"> $nameEntries =~ s/:/_/g;
</span><ins>+ my $nameIndex = "${name}Index";
+ $nameIndex =~ s/:/_/g;
</ins><span class="cx">
</span><span class="cx"> print "\n#include \"JSCBuiltins.h\"\n";
</span><span class="cx"> print "\n#include \"Lookup.h\"\n" if ($includelookup);
</span><span class="lines">@@ -257,8 +261,19 @@
</span><span class="cx"> } else {
</span><span class="cx"> print "\nnamespace JSC {\n";
</span><span class="cx"> }
</span><del>- my $count = scalar @keys + 1;
- print "\nstatic const struct HashTableValue ${nameEntries}\[$count\] = {\n";
</del><ins>+
+ print "\nstatic const struct CompactHashIndex ${nameIndex}\[$compactSize\] = {\n";
+ for (my $i = 0; $i < $compactSize; $i++) {
+ my $T = -1;
+ if (defined($table[$i])) { $T = $table[$i]; }
+ my $L = -1;
+ if (defined($links[$i])) { $L = $links[$i]; }
+ print " { $T, $L },\n";
+ }
+ print "};\n\n";
+
+ my $packedSize = scalar @keys;
+ print "\nstatic const struct HashTableValue ${nameEntries}\[$packedSize\] = {\n";
</ins><span class="cx"> my $i = 0;
</span><span class="cx"> foreach my $key (@keys) {
</span><span class="cx"> my $firstValue = "";
</span><span class="lines">@@ -304,9 +319,8 @@
</span><span class="cx"> }
</span><span class="cx"> $i++;
</span><span class="cx"> }
</span><del>- print " { 0, 0, NoIntrinsic, 0, 0 }\n";
</del><span class="cx"> print "};\n\n";
</span><span class="cx"> print "extern const struct HashTable $name =\n";
</span><del>- print " \{ $compactSize, $compactHashSizeMask, $hasSetter, $nameEntries, 0 \};\n";
</del><ins>+ print " \{ $packedSize, $compactHashSizeMask, $hasSetter, $nameEntries, 0, $nameIndex \};\n";
</ins><span class="cx"> print "} // namespace\n";
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserLexercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Lexer.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Lexer.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/JavaScriptCore/parser/Lexer.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -829,7 +829,7 @@
</span><span class="cx"> if (UNLIKELY((remaining < maxTokenLength) && !(lexerFlags & LexerFlagsIgnoreReservedWords)) && !isPrivateName) {
</span><span class="cx"> ASSERT(shouldCreateIdentifier);
</span><span class="cx"> if (remaining < maxTokenLength) {
</span><del>- const HashEntry* entry = m_vm->keywords->getKeyword(*ident);
</del><ins>+ const HashTableValue* entry = m_vm->keywords->getKeyword(*ident);
</ins><span class="cx"> ASSERT((remaining < maxTokenLength) || !entry);
</span><span class="cx"> if (!entry)
</span><span class="cx"> return IDENT;
</span><span class="lines">@@ -906,7 +906,7 @@
</span><span class="cx"> if (UNLIKELY((remaining < maxTokenLength) && !(lexerFlags & LexerFlagsIgnoreReservedWords)) && !isPrivateName) {
</span><span class="cx"> ASSERT(shouldCreateIdentifier);
</span><span class="cx"> if (remaining < maxTokenLength) {
</span><del>- const HashEntry* entry = m_vm->keywords->getKeyword(*ident);
</del><ins>+ const HashTableValue* entry = m_vm->keywords->getKeyword(*ident);
</ins><span class="cx"> ASSERT((remaining < maxTokenLength) || !entry);
</span><span class="cx"> if (!entry)
</span><span class="cx"> return IDENT;
</span><span class="lines">@@ -973,7 +973,7 @@
</span><span class="cx"> ASSERT(shouldCreateIdentifier);
</span><span class="cx"> // Keywords must not be recognized if there was an \uXXXX in the identifier.
</span><span class="cx"> if (remaining < maxTokenLength) {
</span><del>- const HashEntry* entry = m_vm->keywords->getKeyword(*ident);
</del><ins>+ const HashTableValue* entry = m_vm->keywords->getKeyword(*ident);
</ins><span class="cx"> ASSERT((remaining < maxTokenLength) || !entry);
</span><span class="cx"> if (!entry)
</span><span class="cx"> return IDENT;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserLexerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Lexer.h (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Lexer.h        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/JavaScriptCore/parser/Lexer.h        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> return m_keywordTable.entry(m_vm, ident);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- const HashEntry* getKeyword(const Identifier& ident) const
</del><ins>+ const HashTableValue* getKeyword(const Identifier& ident) const
</ins><span class="cx"> {
</span><span class="cx"> return m_keywordTable.entry(m_vm, ident);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeClassInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ClassInfo.h (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ClassInfo.h        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/JavaScriptCore/runtime/ClassInfo.h        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -30,7 +30,6 @@
</span><span class="cx">
</span><span class="cx"> namespace JSC {
</span><span class="cx">
</span><del>-class HashEntry;
</del><span class="cx"> class JSArrayBufferView;
</span><span class="cx"> struct HashTable;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -75,19 +75,17 @@
</span><span class="cx">
</span><span class="cx"> static inline void getClassPropertyNames(ExecState* exec, const ClassInfo* classInfo, PropertyNameArray& propertyNames, EnumerationMode mode, bool didReify)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
+
</ins><span class="cx"> // Add properties from the static hashtables of properties
</span><span class="cx"> for (; classInfo; classInfo = classInfo->parentClass) {
</span><del>- const HashTable* table = classInfo->propHashTable(exec);
</del><ins>+ const HashTable* table = classInfo->propHashTable(vm);
</ins><span class="cx"> if (!table)
</span><span class="cx"> continue;
</span><del>- table->initializeIfNeeded(exec);
- ASSERT(table->table);
</del><span class="cx">
</span><del>- int hashSizeMask = table->compactSize - 1;
- const HashEntry* entry = table->table;
- for (int i = 0; i <= hashSizeMask; ++i, ++entry) {
- if (entry->key() && (!(entry->attributes() & DontEnum) || (mode == IncludeDontEnumProperties)) && !((entry->attributes() & BuiltinOrFunction) && didReify))
- propertyNames.add(entry->key());
</del><ins>+ for (auto iter = table->begin(vm); iter != table->end(vm); ++iter) {
+ if ((!(iter->attributes() & DontEnum) || (mode == IncludeDontEnumProperties)) && !((iter->attributes() & BuiltinOrFunction) && didReify))
+ propertyNames.add(iter.key());
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -396,7 +394,7 @@
</span><span class="cx"> }
</span><span class="cx"> const ClassInfo* info = obj->classInfo();
</span><span class="cx"> if (info->hasStaticSetterOrReadonlyProperties(vm)) {
</span><del>- if (const HashEntry* entry = obj->findPropertyHashEntry(vm, propertyName)) {
</del><ins>+ if (const HashTableValue* entry = obj->findPropertyHashEntry(vm, propertyName)) {
</ins><span class="cx"> putEntry(exec, entry, obj, propertyName, value, slot);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="lines">@@ -1273,7 +1271,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Look in the static hashtable of properties
</span><del>- const HashEntry* entry = thisObject->findPropertyHashEntry(vm, propertyName);
</del><ins>+ const HashTableValue* entry = thisObject->findPropertyHashEntry(vm, propertyName);
</ins><span class="cx"> if (entry) {
</span><span class="cx"> if (entry->attributes() & DontDelete && !vm.isInDefineOwnProperty())
</span><span class="cx"> return false; // this builtin property can't be deleted
</span><span class="lines">@@ -1401,11 +1399,11 @@
</span><span class="cx"> return exec->vm().throwException(exec, createTypeError(exec, ASCIILiteral("No default value")));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-const HashEntry* JSObject::findPropertyHashEntry(VM& vm, PropertyName propertyName) const
</del><ins>+const HashTableValue* JSObject::findPropertyHashEntry(VM& vm, PropertyName propertyName) const
</ins><span class="cx"> {
</span><span class="cx"> for (const ClassInfo* info = classInfo(); info; info = info->parentClass) {
</span><span class="cx"> if (const HashTable* propHashTable = info->propHashTable(vm)) {
</span><del>- if (const HashEntry* entry = propHashTable->entry(vm, propertyName))
</del><ins>+ if (const HashTableValue* entry = propHashTable->entry(vm, propertyName))
</ins><span class="cx"> return entry;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -1621,13 +1619,13 @@
</span><span class="cx"> setStructure(vm, Structure::toUncacheableDictionaryTransition(vm, structure(vm)));
</span><span class="cx">
</span><span class="cx"> for (const ClassInfo* info = classInfo(); info; info = info->parentClass) {
</span><del>- const HashTable* hashTable = info->propHashTable(globalObject()->globalExec());
</del><ins>+ const HashTable* hashTable = info->propHashTable(vm);
</ins><span class="cx"> if (!hashTable)
</span><span class="cx"> continue;
</span><span class="cx"> PropertySlot slot(this);
</span><del>- for (HashTable::ConstIterator iter = hashTable->begin(vm); iter != hashTable->end(vm); ++iter) {
</del><ins>+ for (auto iter = hashTable->begin(vm); iter != hashTable->end(vm); ++iter) {
</ins><span class="cx"> if (iter->attributes() & BuiltinOrFunction)
</span><del>- setUpStaticFunctionSlot(globalObject()->globalExec(), *iter, this, Identifier(&vm, iter->key()), slot);
</del><ins>+ setUpStaticFunctionSlot(globalObject()->globalExec(), iter.value(), this, Identifier(&vm, iter.key()), slot);
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.h (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.h        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.h        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -65,7 +65,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> class GetterSetter;
</span><del>-class HashEntry;
</del><span class="cx"> class InternalFunction;
</span><span class="cx"> class JSFunction;
</span><span class="cx"> class LLIntOffsetsExtractor;
</span><span class="lines">@@ -74,6 +73,7 @@
</span><span class="cx"> class PropertyNameArray;
</span><span class="cx"> class Structure;
</span><span class="cx"> struct HashTable;
</span><ins>+struct HashTableValue;
</ins><span class="cx">
</span><span class="cx"> JS_EXPORT_PRIVATE JSObject* throwTypeError(ExecState*, const String&);
</span><span class="cx"> extern JS_EXPORTDATA const char* StrictModeReadonlyPropertyWriteError;
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx"> friend class JSCell;
</span><span class="cx"> friend class JSFinalObject;
</span><span class="cx"> friend class MarkedBlock;
</span><del>- JS_EXPORT_PRIVATE friend bool setUpStaticFunctionSlot(ExecState*, const HashEntry*, JSObject*, PropertyName, PropertySlot&);
</del><ins>+ JS_EXPORT_PRIVATE friend bool setUpStaticFunctionSlot(ExecState*, const HashTableValue*, JSObject*, PropertyName, PropertySlot&);
</ins><span class="cx">
</span><span class="cx"> enum PutMode {
</span><span class="cx"> PutModePut,
</span><span class="lines">@@ -952,7 +952,7 @@
</span><span class="cx"> bool inlineGetOwnPropertySlot(ExecState*, VM&, Structure&, PropertyName, PropertySlot&);
</span><span class="cx"> JS_EXPORT_PRIVATE void fillGetterPropertySlot(PropertySlot&, JSValue, unsigned, PropertyOffset);
</span><span class="cx">
</span><del>- const HashEntry* findPropertyHashEntry(VM&, PropertyName) const;
</del><ins>+ const HashTableValue* findPropertyHashEntry(VM&, PropertyName) const;
</ins><span class="cx">
</span><span class="cx"> void putIndexedDescriptor(ExecState*, SparseArrayEntry*, const PropertyDescriptor&, PropertyDescriptor& old);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeLookupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Lookup.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Lookup.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/JavaScriptCore/runtime/Lookup.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -28,44 +28,30 @@
</span><span class="cx">
</span><span class="cx"> void HashTable::createTable(VM& vm) const
</span><span class="cx"> {
</span><del>- ASSERT(!table);
- int linkIndex = compactHashSizeMask + 1;
- HashEntry* entries = new HashEntry[compactSize];
- for (int i = 0; i < compactSize; ++i)
- entries[i].setKey(0);
- for (int i = 0; values[i].key; ++i) {
- StringImpl& identifier = Identifier::add(&vm, values[i].key).leakRef();
- int hashIndex = identifier.existingHash() & compactHashSizeMask;
- HashEntry* entry = &entries[hashIndex];
</del><ins>+ ASSERT(!keys);
+ keys = new StringImpl*[numberOfValues];
</ins><span class="cx">
</span><del>- if (entry->key()) {
- while (entry->next()) {
- entry = entry->next();
- }
- ASSERT(linkIndex < compactSize);
- entry->setNext(&entries[linkIndex++]);
- entry = entry->next();
- }
-
- entry->initialize(&identifier, values[i].attributes, values[i].value1, values[i].value2, values[i].intrinsic);
</del><ins>+ for (int i = 0; i < numberOfValues; ++i) {
+ if (values[i].m_key)
+ keys[i] = &Identifier::add(&vm, values[i].m_key).leakRef();
+ else
+ keys[i] = 0;
</ins><span class="cx"> }
</span><del>- table = entries;
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void HashTable::deleteTable() const
</span><span class="cx"> {
</span><del>- if (table) {
- int max = compactSize;
- for (int i = 0; i != max; ++i) {
- if (StringImpl* key = table[i].key())
- key->deref();
</del><ins>+ if (keys) {
+ for (int i = 0; i != numberOfValues; ++i) {
+ if (keys[i])
+ keys[i]->deref();
</ins><span class="cx"> }
</span><del>- delete [] table;
- table = 0;
</del><ins>+ delete [] keys;
+ keys = nullptr;
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool setUpStaticFunctionSlot(ExecState* exec, const HashEntry* entry, JSObject* thisObj, PropertyName propertyName, PropertySlot& slot)
</del><ins>+bool setUpStaticFunctionSlot(ExecState* exec, const HashTableValue* entry, JSObject* thisObj, PropertyName propertyName, PropertySlot& slot)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(thisObj->globalObject());
</span><span class="cx"> ASSERT(entry->attributes() & BuiltinOrFunction);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeLookuph"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Lookup.h (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Lookup.h        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/JavaScriptCore/runtime/Lookup.h        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -30,13 +30,9 @@
</span><span class="cx"> #include <wtf/Assertions.h>
</span><span class="cx">
</span><span class="cx"> namespace JSC {
</span><del>- // Hash table generated by the create_hash_table script.
- struct HashTableValue {
- const char* key; // property name
- unsigned char attributes; // JSObject attributes
- Intrinsic intrinsic;
- intptr_t value1;
- intptr_t value2;
</del><ins>+ struct CompactHashIndex {
+ const int16_t value;
+ const int16_t next;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> // FIXME: There is no reason this get function can't be simpler.
</span><span class="lines">@@ -45,22 +41,14 @@
</span><span class="cx"> typedef PutPropertySlot::PutValueFunc PutFunction;
</span><span class="cx"> typedef FunctionExecutable* (*BuiltinGenerator)(VM&);
</span><span class="cx">
</span><del>- class HashEntry {
- WTF_MAKE_FAST_ALLOCATED;
- public:
- void initialize(StringImpl* key, unsigned char attributes, intptr_t v1, intptr_t v2, Intrinsic intrinsic)
- {
- m_key = key;
- m_attributes = attributes;
- m_u.store.value1 = v1;
- m_u.store.value2 = v2;
- m_intrinsic = intrinsic;
- m_next = 0;
- }
</del><ins>+ // Hash table generated by the create_hash_table script.
+ struct HashTableValue {
+ const char* m_key; // property name
+ unsigned char m_attributes; // JSObject attributes
+ Intrinsic m_intrinsic;
+ intptr_t m_value1;
+ intptr_t m_value2;
</ins><span class="cx">
</span><del>- void setKey(StringImpl* key) { m_key = key; }
- StringImpl* key() const { return m_key; }
-
</del><span class="cx"> unsigned char attributes() const { return m_attributes; }
</span><span class="cx">
</span><span class="cx"> Intrinsic intrinsic() const
</span><span class="lines">@@ -69,87 +57,55 @@
</span><span class="cx"> return m_intrinsic;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- BuiltinGenerator builtinGenerator() const { ASSERT(m_attributes & Builtin); return m_u.builtinGenerator.generatorValue; }
- NativeFunction function() const { ASSERT(m_attributes & Function); return m_u.function.functionValue; }
- unsigned char functionLength() const { ASSERT(m_attributes & Function); return static_cast<unsigned char>(m_u.function.length); }
</del><ins>+ BuiltinGenerator builtinGenerator() const { ASSERT(m_attributes & Builtin); return reinterpret_cast<BuiltinGenerator>(m_value1); }
+ NativeFunction function() const { ASSERT(m_attributes & Function); return reinterpret_cast<NativeFunction>(m_value1); }
+ unsigned char functionLength() const { ASSERT(m_attributes & Function); return static_cast<unsigned char>(m_value2); }
</ins><span class="cx">
</span><del>- GetFunction propertyGetter() const { ASSERT(!(m_attributes & BuiltinOrFunction)); return m_u.property.get; }
- PutFunction propertyPutter() const { ASSERT(!(m_attributes & BuiltinOrFunction)); return m_u.property.put; }
</del><ins>+ GetFunction propertyGetter() const { ASSERT(!(m_attributes & BuiltinOrFunction)); return reinterpret_cast<GetFunction>(m_value1); }
+ PutFunction propertyPutter() const { ASSERT(!(m_attributes & BuiltinOrFunction)); return reinterpret_cast<PutFunction>(m_value2); }
</ins><span class="cx">
</span><del>- intptr_t lexerValue() const { ASSERT(!m_attributes); return m_u.lexer.value; }
-
- void setNext(HashEntry *next) { m_next = next; }
- HashEntry* next() const { return m_next; }
-
- private:
- StringImpl* m_key;
- unsigned char m_attributes; // JSObject attributes
- Intrinsic m_intrinsic;
-
- union {
- struct {
- intptr_t value1;
- intptr_t value2;
- } store;
- struct {
- NativeFunction functionValue;
- intptr_t length; // number of arguments for function
- } function;
- struct {
- BuiltinGenerator generatorValue;
- intptr_t unused;
- } builtinGenerator;
- struct {
- GetFunction get;
- PutFunction put;
- } property;
- struct {
- intptr_t value;
- intptr_t unused;
- } lexer;
- } m_u;
-
- HashEntry* m_next;
</del><ins>+ intptr_t lexerValue() const { ASSERT(!m_attributes); return m_value1; }
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> struct HashTable {
</span><span class="cx">
</span><del>- int compactSize;
- int compactHashSizeMask;
</del><ins>+ mutable int numberOfValues;
+ int indexMask;
</ins><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 HashEntry* table; // Table allocated at runtime.
</del><ins>+ mutable StringImpl** keys; // Table allocated at runtime.
+ const CompactHashIndex* index;
</ins><span class="cx">
</span><span class="cx"> ALWAYS_INLINE HashTable copy() const
</span><span class="cx"> {
</span><span class="cx"> // Don't copy dynamic table since it's thread specific.
</span><del>- HashTable result = { compactSize, compactHashSizeMask, hasSetterOrReadonlyProperties, values, 0 };
</del><ins>+ HashTable result = { numberOfValues, indexMask, hasSetterOrReadonlyProperties, values, 0, index };
</ins><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ALWAYS_INLINE void initializeIfNeeded(VM& vm) const
</span><span class="cx"> {
</span><del>- if (!table)
</del><ins>+ if (!keys)
</ins><span class="cx"> createTable(vm);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ALWAYS_INLINE void initializeIfNeeded(ExecState* exec) const
</span><span class="cx"> {
</span><del>- if (!table)
</del><ins>+ if (!keys)
</ins><span class="cx"> createTable(exec->vm());
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JS_EXPORT_PRIVATE void deleteTable() const;
</span><span class="cx">
</span><span class="cx"> // Find an entry in the table, and return the entry.
</span><del>- ALWAYS_INLINE const HashEntry* entry(VM& vm, PropertyName identifier) const
</del><ins>+ ALWAYS_INLINE const HashTableValue* entry(VM& vm, PropertyName identifier) const
</ins><span class="cx"> {
</span><span class="cx"> initializeIfNeeded(vm);
</span><span class="cx"> return entry(identifier);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- ALWAYS_INLINE const HashEntry* entry(ExecState* exec, PropertyName identifier) const
</del><ins>+ ALWAYS_INLINE const HashTableValue* entry(ExecState* exec, PropertyName identifier) const
</ins><span class="cx"> {
</span><span class="cx"> initializeIfNeeded(exec);
</span><span class="cx"> return entry(identifier);
</span><span class="lines">@@ -164,16 +120,21 @@
</span><span class="cx"> skipInvalidKeys();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- const HashEntry* operator->()
</del><ins>+ const HashTableValue* value()
</ins><span class="cx"> {
</span><del>- return &m_table->table[m_position];
</del><ins>+ return &m_table->values[m_position];
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- const HashEntry* operator*()
</del><ins>+ StringImpl* key()
</ins><span class="cx"> {
</span><del>- return &m_table->table[m_position];
</del><ins>+ return m_table->keys[m_position];
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+ const HashTableValue* operator->()
+ {
+ return value();
+ }
+
</ins><span class="cx"> bool operator!=(const ConstIterator& other)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(m_table == other.m_table);
</span><span class="lines">@@ -182,7 +143,7 @@
</span><span class="cx">
</span><span class="cx"> ConstIterator& operator++()
</span><span class="cx"> {
</span><del>- ASSERT(m_position < m_table->compactSize);
</del><ins>+ ASSERT(m_position < m_table->numberOfValues);
</ins><span class="cx"> ++m_position;
</span><span class="cx"> skipInvalidKeys();
</span><span class="cx"> return *this;
</span><span class="lines">@@ -191,10 +152,10 @@
</span><span class="cx"> private:
</span><span class="cx"> void skipInvalidKeys()
</span><span class="cx"> {
</span><del>- ASSERT(m_position <= m_table->compactSize);
- while (m_position < m_table->compactSize && !m_table->table[m_position].key())
</del><ins>+ ASSERT(m_position <= m_table->numberOfValues);
+ while (m_position < m_table->numberOfValues && !m_table->keys[m_position])
</ins><span class="cx"> ++m_position;
</span><del>- ASSERT(m_position <= m_table->compactSize);
</del><ins>+ ASSERT(m_position <= m_table->numberOfValues);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> const HashTable* m_table;
</span><span class="lines">@@ -209,37 +170,40 @@
</span><span class="cx"> ConstIterator end(VM& vm) const
</span><span class="cx"> {
</span><span class="cx"> initializeIfNeeded(vm);
</span><del>- return ConstIterator(this, compactSize);
</del><ins>+ return ConstIterator(this, numberOfValues);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- ALWAYS_INLINE const HashEntry* entry(PropertyName propertyName) const
</del><ins>+ ALWAYS_INLINE const HashTableValue* entry(PropertyName propertyName) const
</ins><span class="cx"> {
</span><span class="cx"> StringImpl* impl = propertyName.uid();
</span><span class="cx"> if (!impl)
</span><span class="cx"> return 0;
</span><span class="cx">
</span><del>- ASSERT(table);
</del><ins>+ ASSERT(keys);
</ins><span class="cx">
</span><del>- const HashEntry* entry = &table[impl->existingHash() & compactHashSizeMask];
-
- if (!entry->key())
</del><ins>+ int indexEntry = impl->existingHash() & indexMask;
+ int valueIndex = index[indexEntry].value;
+ if (valueIndex == -1)
</ins><span class="cx"> return 0;
</span><span class="cx">
</span><del>- do {
- if (entry->key() == impl)
- return entry;
- entry = entry->next();
- } while (entry);
</del><ins>+ while (true) {
+ if (keys[valueIndex] == impl)
+ return &values[valueIndex];
</ins><span class="cx">
</span><del>- return 0;
</del><ins>+ indexEntry = index[indexEntry].next;
+ if (indexEntry == -1)
+ return nullptr;
+ valueIndex = index[indexEntry].value;
+ ASSERT(valueIndex != -1);
+ };
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Convert the hash table keys to identifiers.
</span><span class="cx"> JS_EXPORT_PRIVATE void createTable(VM&) const;
</span><span class="cx"> };
</span><span class="cx">
</span><del>- JS_EXPORT_PRIVATE bool setUpStaticFunctionSlot(ExecState*, const HashEntry*, JSObject* thisObject, PropertyName, PropertySlot&);
</del><ins>+ JS_EXPORT_PRIVATE bool setUpStaticFunctionSlot(ExecState*, const HashTableValue*, JSObject* thisObject, PropertyName, PropertySlot&);
</ins><span class="cx">
</span><span class="cx"> /**
</span><span class="cx"> * This method does it all (looking in the hashtable, checking for function
</span><span class="lines">@@ -250,7 +214,7 @@
</span><span class="cx"> template <class ThisImp, class ParentImp>
</span><span class="cx"> inline bool getStaticPropertySlot(ExecState* exec, const HashTable& table, ThisImp* thisObj, PropertyName propertyName, PropertySlot& slot)
</span><span class="cx"> {
</span><del>- const HashEntry* entry = table.entry(exec, propertyName);
</del><ins>+ const HashTableValue* entry = table.entry(exec, propertyName);
</ins><span class="cx">
</span><span class="cx"> if (!entry) // not found, forward to parent
</span><span class="cx"> return ParentImp::getOwnPropertySlot(thisObj, exec, propertyName, slot);
</span><span class="lines">@@ -273,7 +237,7 @@
</span><span class="cx"> if (ParentImp::getOwnPropertySlot(thisObj, exec, propertyName, slot))
</span><span class="cx"> return true;
</span><span class="cx">
</span><del>- const HashEntry* entry = table.entry(exec, propertyName);
</del><ins>+ const HashTableValue* entry = table.entry(exec, propertyName);
</ins><span class="cx"> if (!entry)
</span><span class="cx"> return false;
</span><span class="cx">
</span><span class="lines">@@ -287,7 +251,7 @@
</span><span class="cx"> template <class ThisImp, class ParentImp>
</span><span class="cx"> inline bool getStaticValueSlot(ExecState* exec, const HashTable& table, ThisImp* thisObj, PropertyName propertyName, PropertySlot& slot)
</span><span class="cx"> {
</span><del>- const HashEntry* entry = table.entry(exec, propertyName);
</del><ins>+ const HashTableValue* entry = table.entry(exec, propertyName);
</ins><span class="cx">
</span><span class="cx"> if (!entry) // not found, forward to parent
</span><span class="cx"> return ParentImp::getOwnPropertySlot(thisObj, exec, propertyName, slot);
</span><span class="lines">@@ -298,7 +262,7 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- inline void putEntry(ExecState* exec, const HashEntry* entry, JSObject* base, PropertyName propertyName, JSValue value, PutPropertySlot& slot)
</del><ins>+ inline void putEntry(ExecState* exec, const HashTableValue* entry, JSObject* base, PropertyName propertyName, JSValue value, PutPropertySlot& slot)
</ins><span class="cx"> {
</span><span class="cx"> // If this is a function put it as an override property.
</span><span class="cx"> if (entry->attributes() & BuiltinOrFunction) {
</span><span class="lines">@@ -318,7 +282,7 @@
</span><span class="cx"> */
</span><span class="cx"> inline bool lookupPut(ExecState* exec, PropertyName propertyName, JSObject* base, JSValue value, const HashTable& table, PutPropertySlot& slot)
</span><span class="cx"> {
</span><del>- const HashEntry* entry = table.entry(exec, propertyName);
</del><ins>+ const HashTableValue* entry = table.entry(exec, propertyName);
</ins><span class="cx">
</span><span class="cx"> if (!entry)
</span><span class="cx"> return false;
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/ChangeLog        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -1,3 +1,34 @@
</span><ins>+2014-03-12 Gavin Barraclough <barraclough@apple.com>
+
+ Reduce memory use for static property maps
+ https://bugs.webkit.org/show_bug.cgi?id=129986
+
+ Reviewed by Andreas Kling.
+
+ Static property tables are currently duplicated on first use from read-only memory into dirty memory
+ in every process, and since the entries are large (48 bytes) and the tables can be unusually sparse
+ (we use a custom hash table without a rehash) a lot of memory may be wasted.
+
+ * bindings/js/JSDOMBinding.h:
+ (WebCore::getStaticValueSlotEntryWithoutCaching):
+ (WebCore::getStaticValueSlotEntryWithoutCaching<JSDOMWrapper>):
+ - HashEntry -> HashTableValue.
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::getOwnPropertySlot):
+ - HashEntry -> HashTableValue.
+ * bindings/js/JSHistoryCustom.cpp:
+ (WebCore::JSHistory::getOwnPropertySlotDelegate):
+ - HashEntry -> HashTableValue.
+ * bindings/js/JSLocationCustom.cpp:
+ (WebCore::JSLocation::getOwnPropertySlotDelegate):
+ (WebCore::JSLocation::putDelegate):
+ - HashEntry -> HashTableValue.
+ * bindings/scripts/CodeGeneratorJS.pm:
+ (GenerateGetOwnPropertySlotBody):
+ - HashEntry -> HashTableValue.
+ (GenerateHashTable):
+ - emit the hash table index into the derived source (we were calculating this already to ensure chaining does not get too deep).
+
</ins><span class="cx"> 2014-03-13 Manish R Gurnaney <m.gurnaney@samsung.com>
</span><span class="cx">
</span><span class="cx"> Scroll size is not recalculated when absolute left of child is updated
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -601,19 +601,19 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <class ThisImp>
</span><del>-inline const JSC::HashEntry* getStaticValueSlotEntryWithoutCaching(JSC::ExecState* exec, JSC::PropertyName propertyName)
</del><ins>+inline const JSC::HashTableValue* getStaticValueSlotEntryWithoutCaching(JSC::ExecState* exec, JSC::PropertyName propertyName)
</ins><span class="cx"> {
</span><span class="cx"> const JSC::HashTable* table = ThisImp::info()->propHashTable(exec);
</span><span class="cx"> if (!table)
</span><span class="cx"> return getStaticValueSlotEntryWithoutCaching<typename ThisImp::Base>(exec, propertyName);
</span><del>- const JSC::HashEntry* entry = table->entry(exec, propertyName);
</del><ins>+ const JSC::HashTableValue* entry = table->entry(exec, propertyName);
</ins><span class="cx"> if (!entry) // not found, forward to parent
</span><span class="cx"> return getStaticValueSlotEntryWithoutCaching<typename ThisImp::Base>(exec, propertyName);
</span><span class="cx"> return entry;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <>
</span><del>-inline const JSC::HashEntry* getStaticValueSlotEntryWithoutCaching<JSDOMWrapper>(JSC::ExecState*, JSC::PropertyName)
</del><ins>+inline const JSC::HashTableValue* getStaticValueSlotEntryWithoutCaching<JSDOMWrapper>(JSC::ExecState*, JSC::PropertyName)
</ins><span class="cx"> {
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -116,7 +116,7 @@
</span><span class="cx"> // are not affected by properties changed on the Window or anything in its prototype chain.
</span><span class="cx"> // This is consistent with the behavior of Firefox.
</span><span class="cx">
</span><del>- const HashEntry* entry;
</del><ins>+ const HashTableValue* entry;
</ins><span class="cx">
</span><span class="cx"> // We don't want any properties other than "close" and "closed" on a frameless window (i.e. one whose page got closed,
</span><span class="cx"> // or whose iframe got removed).
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHistoryCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx">
</span><span class="cx"> // Check for the few functions that we allow, even when called cross-domain.
</span><span class="cx"> // Make these read-only / non-configurable to prevent writes via defineProperty.
</span><del>- const HashEntry* entry = JSHistoryPrototype::info()->propHashTable(exec)->entry(exec, propertyName);
</del><ins>+ const HashTableValue* entry = JSHistoryPrototype::info()->propHashTable(exec)->entry(exec, propertyName);
</ins><span class="cx"> if (entry) {
</span><span class="cx"> // Allow access to back(), forward() and go() from any frame.
</span><span class="cx"> if (entry->attributes() & JSC::Function) {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSLocationCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx">
</span><span class="cx"> // Check for the few functions that we allow, even when called cross-domain.
</span><span class="cx"> // Make these read-only / non-configurable to prevent writes via defineProperty.
</span><del>- const HashEntry* entry = JSLocationPrototype::info()->propHashTable(exec)->entry(exec, propertyName);
</del><ins>+ const HashTableValue* entry = JSLocationPrototype::info()->propHashTable(exec)->entry(exec, propertyName);
</ins><span class="cx"> if (entry && (entry->attributes() & JSC::Function)) {
</span><span class="cx"> if (entry->function() == jsLocationPrototypeFunctionReplace) {
</span><span class="cx"> slot.setCustom(this, ReadOnly | DontDelete | DontEnum, nonCachingStaticReplaceFunctionGetter);
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx">
</span><span class="cx"> bool sameDomainAccess = shouldAllowAccessToFrame(exec, frame);
</span><span class="cx">
</span><del>- const HashEntry* entry = JSLocation::info()->propHashTable(exec)->entry(exec, propertyName);
</del><ins>+ const HashTableValue* entry = JSLocation::info()->propHashTable(exec)->entry(exec, propertyName);
</ins><span class="cx"> if (!entry) {
</span><span class="cx"> if (sameDomainAccess)
</span><span class="cx"> JSObject::put(this, exec, propertyName, value, slot);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -405,7 +405,7 @@
</span><span class="cx"> my $manualLookupGetterGeneration = sub {
</span><span class="cx"> my $requiresManualLookup = ($indexedGetterFunction && !$hasNumericIndexedGetter) || $namedGetterFunction;
</span><span class="cx"> if ($requiresManualLookup) {
</span><del>- push(@getOwnPropertySlotImpl, " const ${namespaceMaybe}HashEntry* entry = getStaticValueSlotEntryWithoutCaching<$className>(exec, propertyName);\n");
</del><ins>+ push(@getOwnPropertySlotImpl, " const ${namespaceMaybe}HashTableValue* entry = getStaticValueSlotEntryWithoutCaching<$className>(exec, propertyName);\n");
</ins><span class="cx"> push(@getOwnPropertySlotImpl, " if (entry) {\n");
</span><span class="cx"> push(@getOwnPropertySlotImpl, " slot.setCustom(thisObject, entry->attributes(), entry->propertyGetter());\n");
</span><span class="cx"> push(@getOwnPropertySlotImpl, " return true;\n");
</span><span class="lines">@@ -4024,9 +4024,16 @@
</span><span class="cx"> $maxDepth = $depth if ($depth > $maxDepth);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ push(@implContent, "#if COMPILER(MSVC)\n");
+ push(@implContent, "#pragma warning(push)\n");
+ push(@implContent, "#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning\n");
+ push(@implContent, "#endif\n");
+
</ins><span class="cx"> # Start outputing the hashtables
</span><span class="cx"> my $nameEntries = "${name}Values";
</span><span class="cx"> $nameEntries =~ s/:/_/g;
</span><ins>+ my $nameIndex = "${name}Index";
+ $nameIndex =~ s/:/_/g;
</ins><span class="cx"> my $hasSetter = "false";
</span><span class="cx">
</span><span class="cx"> if (($name =~ /Prototype/) or ($name =~ /Constructor/)) {
</span><span class="lines">@@ -4046,8 +4053,19 @@
</span><span class="cx"> push(@implContent, "/* Hash table */\n");
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ push(@implContent, "\nstatic const struct CompactHashIndex ${nameIndex}\[$compactSize\] = {\n");
+ for (my $i = 0; $i < $compactSize; $i++) {
+ my $T = -1;
+ if (defined($table[$i])) { $T = $table[$i]; }
+ my $L = -1;
+ if (defined($links[$i])) { $L = $links[$i]; }
+ push(@implContent, " { $T, $L },\n");
+ }
+ push(@implContent, "};\n\n");
+
</ins><span class="cx"> # Dump the hash table
</span><del>- push(@implContent, "\nstatic const HashTableValue $nameEntries\[\] =\n\{\n");
</del><ins>+ my $packedSize = scalar @{$keys};
+ push(@implContent, "\nstatic const HashTableValue $nameEntries\[$packedSize\] =\n\{\n");
</ins><span class="cx"> $i = 0;
</span><span class="cx"> foreach my $key (@{$keys}) {
</span><span class="cx"> my $conditional;
</span><span class="lines">@@ -4070,14 +4088,21 @@
</span><span class="cx"> $hasSetter = "true";
</span><span class="cx"> }
</span><span class="cx"> push(@implContent, " { \"$key\", @$specials[$i], NoIntrinsic, (intptr_t)" . $firstTargetType . "(@$value1[$i]), (intptr_t) " . $secondTargetType . "(@$value2[$i]) },\n");
</span><del>- push(@implContent, "#endif\n") if $conditional;
</del><ins>+ if ($conditional) {
+ push(@implContent, "#else\n") ;
+ push(@implContent, " { 0, 0, NoIntrinsic, 0, 0 },\n");
+ push(@implContent, "#endif\n") ;
+ }
</ins><span class="cx"> ++$i;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- push(@implContent, " { 0, 0, NoIntrinsic, 0, 0 }\n");
</del><span class="cx"> push(@implContent, "};\n\n");
</span><span class="cx"> my $compactSizeMask = $numEntries - 1;
</span><del>- push(@implContent, "static const HashTable $name = { $compactSize, $compactSizeMask, $hasSetter, $nameEntries, 0 };\n");
</del><ins>+ push(@implContent, "static const HashTable $name = { $packedSize, $compactSizeMask, $hasSetter, $nameEntries, 0, $nameIndex };\n");
+
+ push(@implContent, "#if COMPILER(MSVC)\n");
+ push(@implContent, "#pragma warning(pop)\n");
+ push(@implContent, "#endif\n");
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> sub WriteData
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -33,24 +33,49 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestActiveDOMObjectTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestActiveDOMObjectTableIndex[4] = {
+ { 1, -1 },
+ { 0, -1 },
+ { -1, -1 },
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestActiveDOMObjectTableValues[2] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestActiveDOMObjectConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> { "excitingAttr", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestActiveDOMObjectExcitingAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestActiveDOMObjectTable = { 4, 3, true, JSTestActiveDOMObjectTableValues, 0 };
</del><ins>+static const HashTable JSTestActiveDOMObjectTable = { 2, 3, true, JSTestActiveDOMObjectTableValues, 0, JSTestActiveDOMObjectTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestActiveDOMObjectConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestActiveDOMObjectConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestActiveDOMObjectConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestActiveDOMObjectConstructorTable = { 1, 0, false, JSTestActiveDOMObjectConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestActiveDOMObjectConstructorTable = { 0, 0, false, JSTestActiveDOMObjectConstructorTableValues, 0, JSTestActiveDOMObjectConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestActiveDOMObjectConstructor::s_info = { "TestActiveDOMObjectConstructor", &Base::s_info, &JSTestActiveDOMObjectConstructorTable, 0, CREATE_METHOD_TABLE(JSTestActiveDOMObjectConstructor) };
</span><span class="cx">
</span><span class="cx"> JSTestActiveDOMObjectConstructor::JSTestActiveDOMObjectConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span><span class="lines">@@ -71,16 +96,30 @@
</span><span class="cx"> return getStaticValueSlot<JSTestActiveDOMObjectConstructor, JSDOMWrapper>(exec, JSTestActiveDOMObjectConstructorTable, jsCast<JSTestActiveDOMObjectConstructor*>(object), propertyName, slot);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestActiveDOMObjectPrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestActiveDOMObjectPrototypeTableIndex[4] = {
+ { 0, -1 },
+ { 1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestActiveDOMObjectPrototypeTableValues[2] =
</ins><span class="cx"> {
</span><span class="cx"> { "excitingFunction", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestActiveDOMObjectPrototypeFunctionExcitingFunction), (intptr_t) (1) },
</span><span class="cx"> { "postMessage", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestActiveDOMObjectPrototypeFunctionPostMessage), (intptr_t) (1) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestActiveDOMObjectPrototypeTable = { 4, 3, false, JSTestActiveDOMObjectPrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestActiveDOMObjectPrototypeTable = { 2, 3, false, JSTestActiveDOMObjectPrototypeTableValues, 0, JSTestActiveDOMObjectPrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestActiveDOMObjectPrototype::s_info = { "TestActiveDOMObjectPrototype", &Base::s_info, &JSTestActiveDOMObjectPrototypeTable, 0, CREATE_METHOD_TABLE(JSTestActiveDOMObjectPrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestActiveDOMObjectPrototype::self(VM& vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -32,23 +32,46 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestCustomNamedGetterTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestCustomNamedGetterTableIndex[2] = {
+ { -1, -1 },
+ { 0, -1 },
+};
+
+
+static const HashTableValue JSTestCustomNamedGetterTableValues[1] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestCustomNamedGetterConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestCustomNamedGetterTable = { 2, 1, true, JSTestCustomNamedGetterTableValues, 0 };
</del><ins>+static const HashTable JSTestCustomNamedGetterTable = { 1, 1, true, JSTestCustomNamedGetterTableValues, 0, JSTestCustomNamedGetterTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestCustomNamedGetterConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestCustomNamedGetterConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestCustomNamedGetterConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestCustomNamedGetterConstructorTable = { 1, 0, false, JSTestCustomNamedGetterConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestCustomNamedGetterConstructorTable = { 0, 0, false, JSTestCustomNamedGetterConstructorTableValues, 0, JSTestCustomNamedGetterConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestCustomNamedGetterConstructor::s_info = { "TestCustomNamedGetterConstructor", &Base::s_info, &JSTestCustomNamedGetterConstructorTable, 0, CREATE_METHOD_TABLE(JSTestCustomNamedGetterConstructor) };
</span><span class="cx">
</span><span class="cx"> JSTestCustomNamedGetterConstructor::JSTestCustomNamedGetterConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span><span class="lines">@@ -69,15 +92,27 @@
</span><span class="cx"> return getStaticValueSlot<JSTestCustomNamedGetterConstructor, JSDOMWrapper>(exec, JSTestCustomNamedGetterConstructorTable, jsCast<JSTestCustomNamedGetterConstructor*>(object), propertyName, slot);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestCustomNamedGetterPrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestCustomNamedGetterPrototypeTableIndex[2] = {
+ { -1, -1 },
+ { 0, -1 },
+};
+
+
+static const HashTableValue JSTestCustomNamedGetterPrototypeTableValues[1] =
</ins><span class="cx"> {
</span><span class="cx"> { "anotherFunction", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestCustomNamedGetterPrototypeFunctionAnotherFunction), (intptr_t) (1) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestCustomNamedGetterPrototypeTable = { 2, 1, false, JSTestCustomNamedGetterPrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestCustomNamedGetterPrototypeTable = { 1, 1, false, JSTestCustomNamedGetterPrototypeTableValues, 0, JSTestCustomNamedGetterPrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestCustomNamedGetterPrototype::s_info = { "TestCustomNamedGetterPrototype", &Base::s_info, &JSTestCustomNamedGetterPrototypeTable, 0, CREATE_METHOD_TABLE(JSTestCustomNamedGetterPrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestCustomNamedGetterPrototype::self(VM& vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -33,14 +33,25 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestEventConstructorConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestEventConstructorConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestEventConstructorConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestEventConstructorConstructorTable = { 1, 0, false, JSTestEventConstructorConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestEventConstructorConstructorTable = { 0, 0, false, JSTestEventConstructorConstructorTableValues, 0, JSTestEventConstructorConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL JSTestEventConstructorConstructor::constructJSTestEventConstructor(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx"> JSTestEventConstructorConstructor* jsConstructor = jsCast<JSTestEventConstructorConstructor*>(exec->callee());
</span><span class="lines">@@ -105,17 +116,36 @@
</span><span class="cx"> return ConstructTypeHost;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestEventConstructorPrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestEventConstructorPrototypeTableIndex[9] = {
+ { -1, -1 },
+ { 0, 8 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 2, -1 },
+};
+
+
+static const HashTableValue JSTestEventConstructorPrototypeTableValues[3] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEventConstructorConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> { "attr1", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEventConstructorAttr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> { "attr2", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEventConstructorAttr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestEventConstructorPrototypeTable = { 9, 7, true, JSTestEventConstructorPrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestEventConstructorPrototypeTable = { 3, 7, true, JSTestEventConstructorPrototypeTableValues, 0, JSTestEventConstructorPrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestEventConstructorPrototype::s_info = { "TestEventConstructorPrototype", &Base::s_info, &JSTestEventConstructorPrototypeTable, 0, CREATE_METHOD_TABLE(JSTestEventConstructorPrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestEventConstructorPrototype::self(VM& vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -38,23 +38,46 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestEventTargetTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestEventTargetTableIndex[2] = {
+ { -1, -1 },
+ { 0, -1 },
+};
+
+
+static const HashTableValue JSTestEventTargetTableValues[1] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestEventTargetConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestEventTargetTable = { 2, 1, true, JSTestEventTargetTableValues, 0 };
</del><ins>+static const HashTable JSTestEventTargetTable = { 1, 1, true, JSTestEventTargetTableValues, 0, JSTestEventTargetTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestEventTargetConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestEventTargetConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestEventTargetConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestEventTargetConstructorTable = { 1, 0, false, JSTestEventTargetConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestEventTargetConstructorTable = { 0, 0, false, JSTestEventTargetConstructorTableValues, 0, JSTestEventTargetConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestEventTargetConstructor::s_info = { "TestEventTargetConstructor", &Base::s_info, &JSTestEventTargetConstructorTable, 0, CREATE_METHOD_TABLE(JSTestEventTargetConstructor) };
</span><span class="cx">
</span><span class="cx"> JSTestEventTargetConstructor::JSTestEventTargetConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span><span class="lines">@@ -75,18 +98,36 @@
</span><span class="cx"> return getStaticValueSlot<JSTestEventTargetConstructor, JSDOMWrapper>(exec, JSTestEventTargetConstructorTable, jsCast<JSTestEventTargetConstructor*>(object), propertyName, slot);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestEventTargetPrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestEventTargetPrototypeTableIndex[8] = {
+ { 2, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 3, -1 },
+ { 1, -1 },
+ { 0, -1 },
+};
+
+
+static const HashTableValue JSTestEventTargetPrototypeTableValues[4] =
</ins><span class="cx"> {
</span><span class="cx"> { "item", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestEventTargetPrototypeFunctionItem), (intptr_t) (1) },
</span><span class="cx"> { "addEventListener", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestEventTargetPrototypeFunctionAddEventListener), (intptr_t) (2) },
</span><span class="cx"> { "removeEventListener", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestEventTargetPrototypeFunctionRemoveEventListener), (intptr_t) (2) },
</span><span class="cx"> { "dispatchEvent", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestEventTargetPrototypeFunctionDispatchEvent), (intptr_t) (1) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestEventTargetPrototypeTable = { 8, 7, false, JSTestEventTargetPrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestEventTargetPrototypeTable = { 4, 7, false, JSTestEventTargetPrototypeTableValues, 0, JSTestEventTargetPrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestEventTargetPrototype::s_info = { "TestEventTargetPrototype", &Base::s_info, &JSTestEventTargetPrototypeTable, 0, CREATE_METHOD_TABLE(JSTestEventTargetPrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestEventTargetPrototype::self(VM& vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -134,7 +175,7 @@
</span><span class="cx"> {
</span><span class="cx"> JSTestEventTarget* thisObject = jsCast<JSTestEventTarget*>(object);
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(thisObject, info());
</span><del>- const HashEntry* entry = getStaticValueSlotEntryWithoutCaching<JSTestEventTarget>(exec, propertyName);
</del><ins>+ const HashTableValue* entry = getStaticValueSlotEntryWithoutCaching<JSTestEventTarget>(exec, propertyName);
</ins><span class="cx"> if (entry) {
</span><span class="cx"> slot.setCustom(thisObject, entry->attributes(), entry->propertyGetter());
</span><span class="cx"> return true;
</span><span class="lines">@@ -210,7 +251,8 @@
</span><span class="cx"> }
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.item(index)));
</del><ins>+
+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.item(index)));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -258,8 +300,8 @@
</span><span class="cx"> Event* evt(toEvent(exec->argument(0)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = jsBoolean(impl.dispatchEvent(evt, ec));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = jsBoolean(impl.dispatchEvent(evt, ec));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -31,23 +31,46 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestExceptionTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestExceptionTableIndex[2] = {
+ { -1, -1 },
+ { 0, -1 },
+};
+
+
+static const HashTableValue JSTestExceptionTableValues[1] =
</ins><span class="cx"> {
</span><span class="cx"> { "name", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestExceptionName), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestExceptionTable = { 2, 1, true, JSTestExceptionTableValues, 0 };
</del><ins>+static const HashTable JSTestExceptionTable = { 1, 1, true, JSTestExceptionTableValues, 0, JSTestExceptionTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestExceptionConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestExceptionConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestExceptionConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestExceptionConstructorTable = { 1, 0, false, JSTestExceptionConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestExceptionConstructorTable = { 0, 0, false, JSTestExceptionConstructorTableValues, 0, JSTestExceptionConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestExceptionConstructor::s_info = { "TestExceptionConstructor", &Base::s_info, &JSTestExceptionConstructorTable, 0, CREATE_METHOD_TABLE(JSTestExceptionConstructor) };
</span><span class="cx">
</span><span class="cx"> JSTestExceptionConstructor::JSTestExceptionConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span><span class="lines">@@ -68,15 +91,27 @@
</span><span class="cx"> return getStaticValueSlot<JSTestExceptionConstructor, JSDOMWrapper>(exec, JSTestExceptionConstructorTable, jsCast<JSTestExceptionConstructor*>(object), propertyName, slot);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestExceptionPrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestExceptionPrototypeTableIndex[2] = {
+ { -1, -1 },
+ { 0, -1 },
+};
+
+
+static const HashTableValue JSTestExceptionPrototypeTableValues[1] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestExceptionConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestExceptionPrototypeTable = { 2, 1, true, JSTestExceptionPrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestExceptionPrototypeTable = { 1, 1, true, JSTestExceptionPrototypeTableValues, 0, JSTestExceptionPrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestExceptionPrototype::s_info = { "TestExceptionPrototype", &Base::s_info, &JSTestExceptionPrototypeTable, 0, CREATE_METHOD_TABLE(JSTestExceptionPrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestExceptionPrototype::self(VM& vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -28,14 +28,25 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestGenerateIsReachableConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestGenerateIsReachableConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestGenerateIsReachableConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestGenerateIsReachableConstructorTable = { 1, 0, false, JSTestGenerateIsReachableConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestGenerateIsReachableConstructorTable = { 0, 0, false, JSTestGenerateIsReachableConstructorTableValues, 0, JSTestGenerateIsReachableConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestGenerateIsReachableConstructor::s_info = { "TestGenerateIsReachableConstructor", &Base::s_info, &JSTestGenerateIsReachableConstructorTable, 0, CREATE_METHOD_TABLE(JSTestGenerateIsReachableConstructor) };
</span><span class="cx">
</span><span class="cx"> JSTestGenerateIsReachableConstructor::JSTestGenerateIsReachableConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span><span class="lines">@@ -56,15 +67,27 @@
</span><span class="cx"> return getStaticValueSlot<JSTestGenerateIsReachableConstructor, JSDOMWrapper>(exec, JSTestGenerateIsReachableConstructorTable, jsCast<JSTestGenerateIsReachableConstructor*>(object), propertyName, slot);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestGenerateIsReachablePrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestGenerateIsReachablePrototypeTableIndex[2] = {
+ { -1, -1 },
+ { 0, -1 },
+};
+
+
+static const HashTableValue JSTestGenerateIsReachablePrototypeTableValues[1] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestGenerateIsReachableConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestGenerateIsReachablePrototypeTable = { 2, 1, true, JSTestGenerateIsReachablePrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestGenerateIsReachablePrototypeTable = { 1, 1, true, JSTestGenerateIsReachablePrototypeTableValues, 0, JSTestGenerateIsReachablePrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestGenerateIsReachablePrototype::s_info = { "TestGenerateIsReachablePrototype", &Base::s_info, &JSTestGenerateIsReachablePrototypeTable, 0, CREATE_METHOD_TABLE(JSTestGenerateIsReachablePrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestGenerateIsReachablePrototype::self(VM& vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -48,58 +48,117 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestInterfaceTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestInterfaceTableIndex[4] = {
+ { -1, -1 },
+ { 0, -1 },
+ { -1, -1 },
+ { 1, -1 },
+};
+
+
+static const HashTableValue JSTestInterfaceTableValues[2] =
</ins><span class="cx"> {
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "implementsStr3", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceImplementsStr3), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceImplementsStr3) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "supplementalStr3", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSupplementalStr3), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceSupplementalStr3) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestInterfaceTable = { 4, 3, true, JSTestInterfaceTableValues, 0 };
</del><ins>+static const HashTable JSTestInterfaceTable = { 2, 3, true, JSTestInterfaceTableValues, 0, JSTestInterfaceTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestInterfaceConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestInterfaceConstructorTableIndex[11] = {
+ { 8, -1 },
+ { 5, -1 },
+ { -1, -1 },
+ { 0, 9 },
+ { 6, 10 },
+ { 7, -1 },
+ { 2, -1 },
+ { 1, 8 },
+ { 3, -1 },
+ { 4, -1 },
+ { 9, -1 },
+};
+
+
+static const HashTableValue JSTestInterfaceConstructorTableValues[10] =
</ins><span class="cx"> {
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "IMPLEMENTSCONSTANT1", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceIMPLEMENTSCONSTANT1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "IMPLEMENTSCONSTANT2", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceIMPLEMENTSCONSTANT2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "SUPPLEMENTALCONSTANT1", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSUPPLEMENTALCONSTANT1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "SUPPLEMENTALCONSTANT2", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSUPPLEMENTALCONSTANT2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "implementsStaticReadOnlyAttr", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceConstructorImplementsStaticReadOnlyAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "implementsStaticAttr", DontDelete, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceConstructorImplementsStaticAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceConstructorImplementsStaticAttr) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "supplementalStaticReadOnlyAttr", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceConstructorSupplementalStaticReadOnlyAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "supplementalStaticAttr", DontDelete, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceConstructorSupplementalStaticAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceConstructorSupplementalStaticAttr) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "implementsMethod4", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestInterfaceConstructorFunctionImplementsMethod4), (intptr_t) (0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "supplementalMethod4", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestInterfaceConstructorFunctionSupplementalMethod4), (intptr_t) (0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestInterfaceConstructorTable = { 11, 7, true, JSTestInterfaceConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestInterfaceConstructorTable = { 10, 7, true, JSTestInterfaceConstructorTableValues, 0, JSTestInterfaceConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> COMPILE_ASSERT(1 == TestInterface::IMPLEMENTSCONSTANT1, TestInterfaceEnumIMPLEMENTSCONSTANT1IsWrongUseDoNotCheckConstants);
</span><span class="lines">@@ -165,63 +224,170 @@
</span><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(TEST_INTERFACE)
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestInterfacePrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestInterfacePrototypeTableIndex[65] = {
+ { -1, -1 },
+ { 3, 64 },
+ { 14, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 13, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 10, -1 },
+ { -1, -1 },
+ { 5, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 4, -1 },
+ { -1, -1 },
+ { 0, -1 },
+ { -1, -1 },
+ { 7, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 15, -1 },
+ { 1, -1 },
+ { 6, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 11, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 8, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 16, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 2, -1 },
+ { 9, -1 },
+ { -1, -1 },
+ { 12, -1 },
+};
+
+
+static const HashTableValue JSTestInterfacePrototypeTableValues[17] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "implementsStr1", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceImplementsStr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "implementsStr2", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceImplementsStr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceImplementsStr2) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "implementsNode", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceImplementsNode), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceImplementsNode) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "supplementalStr1", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSupplementalStr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "supplementalStr2", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSupplementalStr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceSupplementalStr2) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "supplementalNode", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSupplementalNode), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestInterfaceSupplementalNode) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "IMPLEMENTSCONSTANT1", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceIMPLEMENTSCONSTANT1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "IMPLEMENTSCONSTANT2", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceIMPLEMENTSCONSTANT2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "SUPPLEMENTALCONSTANT1", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSUPPLEMENTALCONSTANT1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "SUPPLEMENTALCONSTANT2", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestInterfaceSUPPLEMENTALCONSTANT2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "implementsMethod1", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestInterfacePrototypeFunctionImplementsMethod1), (intptr_t) (0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "implementsMethod2", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestInterfacePrototypeFunctionImplementsMethod2), (intptr_t) (2) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="cx"> { "implementsMethod3", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestInterfacePrototypeFunctionImplementsMethod3), (intptr_t) (0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "supplementalMethod1", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestInterfacePrototypeFunctionSupplementalMethod1), (intptr_t) (0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "supplementalMethod2", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestInterfacePrototypeFunctionSupplementalMethod2), (intptr_t) (2) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> { "supplementalMethod3", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestInterfacePrototypeFunctionSupplementalMethod3), (intptr_t) (0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestInterfacePrototypeTable = { 65, 63, true, JSTestInterfacePrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestInterfacePrototypeTable = { 17, 63, true, JSTestInterfacePrototypeTableValues, 0, JSTestInterfacePrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestInterfacePrototype::s_info = { "TestInterfacePrototype", &Base::s_info, &JSTestInterfacePrototypeTable, 0, CREATE_METHOD_TABLE(JSTestInterfacePrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestInterfacePrototype::self(VM& vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -685,8 +851,8 @@
</span><span class="cx"> TestObj* objArg(toTestObj(exec->argument(1)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.implementsMethod2(scriptContext, strArg, objArg, ec)));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.implementsMethod2(scriptContext, strArg, objArg, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -751,8 +917,8 @@
</span><span class="cx"> TestObj* objArg(toTestObj(exec->argument(1)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(TestSupplemental::supplementalMethod2(&impl, scriptContext, strArg, objArg, ec)));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(TestSupplemental::supplementalMethod2(&impl, scriptContext, strArg, objArg, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -32,14 +32,25 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestMediaQueryListListenerConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestMediaQueryListListenerConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestMediaQueryListListenerConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestMediaQueryListListenerConstructorTable = { 1, 0, false, JSTestMediaQueryListListenerConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestMediaQueryListListenerConstructorTable = { 0, 0, false, JSTestMediaQueryListListenerConstructorTableValues, 0, JSTestMediaQueryListListenerConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestMediaQueryListListenerConstructor::s_info = { "TestMediaQueryListListenerConstructor", &Base::s_info, &JSTestMediaQueryListListenerConstructorTable, 0, CREATE_METHOD_TABLE(JSTestMediaQueryListListenerConstructor) };
</span><span class="cx">
</span><span class="cx"> JSTestMediaQueryListListenerConstructor::JSTestMediaQueryListListenerConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span><span class="lines">@@ -60,16 +71,30 @@
</span><span class="cx"> return getStaticValueSlot<JSTestMediaQueryListListenerConstructor, JSDOMWrapper>(exec, JSTestMediaQueryListListenerConstructorTable, jsCast<JSTestMediaQueryListListenerConstructor*>(object), propertyName, slot);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestMediaQueryListListenerPrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestMediaQueryListListenerPrototypeTableIndex[4] = {
+ { 1, -1 },
+ { 0, -1 },
+ { -1, -1 },
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestMediaQueryListListenerPrototypeTableValues[2] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestMediaQueryListListenerConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> { "method", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestMediaQueryListListenerPrototypeFunctionMethod), (intptr_t) (1) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestMediaQueryListListenerPrototypeTable = { 4, 3, true, JSTestMediaQueryListListenerPrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestMediaQueryListListenerPrototypeTable = { 2, 3, true, JSTestMediaQueryListListenerPrototypeTableValues, 0, JSTestMediaQueryListListenerPrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestMediaQueryListListenerPrototype::s_info = { "TestMediaQueryListListenerPrototype", &Base::s_info, &JSTestMediaQueryListListenerPrototypeTable, 0, CREATE_METHOD_TABLE(JSTestMediaQueryListListenerPrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestMediaQueryListListenerPrototype::self(VM& vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -31,14 +31,25 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestNamedConstructorConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestNamedConstructorConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestNamedConstructorConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestNamedConstructorConstructorTable = { 1, 0, false, JSTestNamedConstructorConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestNamedConstructorConstructorTable = { 0, 0, false, JSTestNamedConstructorConstructorTableValues, 0, JSTestNamedConstructorConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestNamedConstructorConstructor::s_info = { "TestNamedConstructorConstructor", &Base::s_info, &JSTestNamedConstructorConstructorTable, 0, CREATE_METHOD_TABLE(JSTestNamedConstructorConstructor) };
</span><span class="cx">
</span><span class="cx"> JSTestNamedConstructorConstructor::JSTestNamedConstructorConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span><span class="lines">@@ -103,15 +114,27 @@
</span><span class="cx"> return ConstructTypeHost;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestNamedConstructorPrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestNamedConstructorPrototypeTableIndex[2] = {
+ { -1, -1 },
+ { 0, -1 },
+};
+
+
+static const HashTableValue JSTestNamedConstructorPrototypeTableValues[1] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNamedConstructorConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestNamedConstructorPrototypeTable = { 2, 1, true, JSTestNamedConstructorPrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestNamedConstructorPrototypeTable = { 1, 1, true, JSTestNamedConstructorPrototypeTableValues, 0, JSTestNamedConstructorPrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestNamedConstructorPrototype::s_info = { "TestNamedConstructorPrototype", &Base::s_info, &JSTestNamedConstructorPrototypeTable, 0, CREATE_METHOD_TABLE(JSTestNamedConstructorPrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestNamedConstructorPrototype::self(VM& vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -31,14 +31,25 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestNodeConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestNodeConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestNodeConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestNodeConstructorTable = { 1, 0, false, JSTestNodeConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestNodeConstructorTable = { 0, 0, false, JSTestNodeConstructorTableValues, 0, JSTestNodeConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL JSTestNodeConstructor::constructJSTestNode(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx"> JSTestNodeConstructor* castedThis = jsCast<JSTestNodeConstructor*>(exec->callee());
</span><span class="lines">@@ -72,15 +83,27 @@
</span><span class="cx"> return ConstructTypeHost;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestNodePrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestNodePrototypeTableIndex[2] = {
+ { -1, -1 },
+ { 0, -1 },
+};
+
+
+static const HashTableValue JSTestNodePrototypeTableValues[1] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestNodeConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestNodePrototypeTable = { 2, 1, true, JSTestNodePrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestNodePrototypeTable = { 1, 1, true, JSTestNodePrototypeTableValues, 0, JSTestNodePrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestNodePrototype::s_info = { "TestNodePrototype", &Base::s_info, &JSTestNodePrototypeTable, 0, CREATE_METHOD_TABLE(JSTestNodePrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestNodePrototype::self(VM& vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -74,32 +74,114 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestObjTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestObjTableIndex[17] = {
+ { 5, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 4, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 2, -1 },
+ { 0, 16 },
+ { -1, -1 },
+ { 1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 3, -1 },
+};
+
+
+static const HashTableValue JSTestObjTableValues[6] =
</ins><span class="cx"> {
</span><span class="cx"> { "TestSubObjEnabledBySetting", DontEnum, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjTestSubObjEnabledBySettingConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjTestSubObjEnabledBySettingConstructor) },
</span><span class="cx"> { "customAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCustomAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjCustomAttr) },
</span><span class="cx"> #if ENABLE(Condition1)
</span><span class="cx"> { "conditionalAttr4", DontEnum, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr4Constructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr4Constructor) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) && ENABLE(Condition2)
</span><span class="cx"> { "conditionalAttr5", DontEnum, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr5Constructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr5Constructor) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><span class="cx"> { "conditionalAttr6", DontEnum, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr6Constructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr6Constructor) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> { "contentDocument", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjContentDocument), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestObjTable = { 17, 15, true, JSTestObjTableValues, 0 };
</del><ins>+static const HashTable JSTestObjTable = { 6, 15, true, JSTestObjTableValues, 0, JSTestObjTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestObjConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestObjConstructorTableIndex[39] = {
+ { -1, -1 },
+ { 9, 34 },
+ { 21, -1 },
+ { 2, -1 },
+ { 1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 0, -1 },
+ { 12, -1 },
+ { 16, -1 },
+ { 5, 32 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 10, -1 },
+ { 7, 36 },
+ { 15, -1 },
+ { 3, -1 },
+ { -1, -1 },
+ { 11, 33 },
+ { -1, -1 },
+ { -1, -1 },
+ { 8, 37 },
+ { 18, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 4, -1 },
+ { 6, -1 },
+ { 13, -1 },
+ { 14, 35 },
+ { 17, -1 },
+ { 19, 38 },
+ { 20, -1 },
+ { 22, -1 },
+};
+
+
+static const HashTableValue JSTestObjConstructorTableValues[23] =
</ins><span class="cx"> {
</span><span class="cx"> #if ENABLE(Condition1)
</span><span class="cx"> { "CONDITIONAL_CONST", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONDITIONAL_CONST), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> { "CONST_VALUE_0", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_0), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> { "CONST_VALUE_1", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="lines">@@ -124,11 +206,15 @@
</span><span class="cx"> { "classMethod2", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjConstructorFunctionClassMethod2), (intptr_t) (1) },
</span><span class="cx"> #if ENABLE(Condition1)
</span><span class="cx"> { "overloadedMethod1", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjConstructorFunctionOverloadedMethod1), (intptr_t) (1) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestObjConstructorTable = { 39, 31, true, JSTestObjConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestObjConstructorTable = { 23, 31, true, JSTestObjConstructorTableValues, 0, JSTestObjConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(Condition1)
</span><span class="cx"> COMPILE_ASSERT(0 == TestObj::CONDITIONAL_CONST, TestObjEnumCONDITIONAL_CONSTIsWrongUseDoNotCheckConstants);
</span><span class="lines">@@ -185,9 +271,547 @@
</span><span class="cx"> return ConstructTypeHost;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestObjPrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestObjPrototypeTableIndex[530] = {
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 23, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 49, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 16, 513 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 47, -1 },
+ { 73, -1 },
+ { -1, -1 },
+ { 41, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 102, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 15, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 110, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 27, 522 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 126, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 101, -1 },
+ { 100, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 4, -1 },
+ { -1, -1 },
+ { 17, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 5, -1 },
+ { 134, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 53, -1 },
+ { 32, 517 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 93, -1 },
+ { 87, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 31, -1 },
+ { -1, -1 },
+ { 55, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 117, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 78, -1 },
+ { 70, -1 },
+ { -1, -1 },
+ { 25, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 22, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 96, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 114, -1 },
+ { -1, -1 },
+ { 6, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 86, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 33, -1 },
+ { 51, -1 },
+ { -1, -1 },
+ { 71, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 92, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 127, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 72, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 67, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 24, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 89, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 82, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 3, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 45, -1 },
+ { -1, -1 },
+ { 77, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 36, 526 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 8, 512 },
+ { -1, -1 },
+ { 130, -1 },
+ { -1, -1 },
+ { 58, 528 },
+ { 135, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 64, 524 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 131, -1 },
+ { -1, -1 },
+ { 103, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 39, 515 },
+ { -1, -1 },
+ { -1, -1 },
+ { 113, -1 },
+ { 90, -1 },
+ { 120, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 34, -1 },
+ { -1, -1 },
+ { 18, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 61, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 128, -1 },
+ { 123, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 26, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 76, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 84, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 43, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 12, -1 },
+ { -1, -1 },
+ { 59, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 0, -1 },
+ { -1, -1 },
+ { 99, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 30, -1 },
+ { 28, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 124, -1 },
+ { -1, -1 },
+ { 35, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 65, 518 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 88, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 46, 521 },
+ { 80, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 44, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 69, -1 },
+ { -1, -1 },
+ { 62, -1 },
+ { -1, -1 },
+ { 2, -1 },
+ { -1, -1 },
+ { 50, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 95, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 38, 523 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 57, -1 },
+ { 68, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 107, 527 },
+ { -1, -1 },
+ { 108, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 14, -1 },
+ { 20, 529 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 112, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 118, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 79, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 60, -1 },
+ { 52, -1 },
+ { -1, -1 },
+ { 74, -1 },
+ { 132, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 54, 516 },
+ { -1, -1 },
+ { 85, -1 },
+ { 9, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 105, -1 },
+ { 29, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 37, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 19, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 109, -1 },
+ { 13, 514 },
+ { 40, -1 },
+ { 111, -1 },
+ { -1, -1 },
+ { 7, 525 },
+ { -1, -1 },
+ { 125, -1 },
+ { 106, -1 },
+ { 75, 520 },
+ { -1, -1 },
+ { 122, -1 },
+ { 83, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 119, -1 },
+ { -1, -1 },
+ { 10, 519 },
+ { 11, -1 },
+ { 21, -1 },
+ { 42, -1 },
+ { 48, -1 },
+ { 56, -1 },
+ { 63, -1 },
+ { 66, -1 },
+ { 81, -1 },
+ { 91, -1 },
+ { 94, -1 },
+ { 97, -1 },
+ { 98, -1 },
+ { 104, -1 },
+ { 115, -1 },
+ { 116, -1 },
+ { 121, -1 },
+ { 129, -1 },
+ { 133, -1 },
+};
+
+
+static const HashTableValue JSTestObjPrototypeTableValues[136] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> { "readOnlyLongAttr", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjReadOnlyLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="lines">@@ -229,12 +853,18 @@
</span><span class="cx"> { "withScriptArgumentsAndCallStackAttribute", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjWithScriptArgumentsAndCallStackAttribute), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjWithScriptArgumentsAndCallStackAttribute) },
</span><span class="cx"> #if ENABLE(Condition1)
</span><span class="cx"> { "conditionalAttr1", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr1) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) && ENABLE(Condition2)
</span><span class="cx"> { "conditionalAttr2", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr2) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><span class="cx"> { "conditionalAttr3", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr3), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjConditionalAttr3) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> { "cachedAttribute1", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCachedAttribute1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> { "cachedAttribute2", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCachedAttribute2), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="lines">@@ -257,6 +887,8 @@
</span><span class="cx"> { "attributeWithReservedEnumType", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjAttributeWithReservedEnumType), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestObjAttributeWithReservedEnumType) },
</span><span class="cx"> #if ENABLE(Condition1)
</span><span class="cx"> { "CONDITIONAL_CONST", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONDITIONAL_CONST), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> { "CONST_VALUE_0", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_0), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> { "CONST_VALUE_1", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCONST_VALUE_1), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="lines">@@ -312,12 +944,18 @@
</span><span class="cx"> { "methodWithCallbackAndOptionalArg", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg), (intptr_t) (0) },
</span><span class="cx"> #if ENABLE(Condition1)
</span><span class="cx"> { "conditionalMethod1", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionConditionalMethod1), (intptr_t) (0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) && ENABLE(Condition2)
</span><span class="cx"> { "conditionalMethod2", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionConditionalMethod2), (intptr_t) (0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><span class="cx"> { "conditionalMethod3", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionConditionalMethod3), (intptr_t) (0) },
</span><ins>+#else
+ { 0, 0, NoIntrinsic, 0, 0 },
</ins><span class="cx"> #endif
</span><span class="cx"> { "overloadedMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionOverloadedMethod), (intptr_t) (2) },
</span><span class="cx"> { "classMethodWithClamp", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionClassMethodWithClamp), (intptr_t) (2) },
</span><span class="lines">@@ -339,10 +977,12 @@
</span><span class="cx"> { "variadicDoubleMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVariadicDoubleMethod), (intptr_t) (2) },
</span><span class="cx"> { "variadicNodeMethod", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionVariadicNodeMethod), (intptr_t) (2) },
</span><span class="cx"> { "any", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestObjPrototypeFunctionAny), (intptr_t) (2) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestObjPrototypeTable = { 530, 511, true, JSTestObjPrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestObjPrototypeTable = { 136, 511, true, JSTestObjPrototypeTableValues, 0, JSTestObjPrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestObjPrototype::s_info = { "TestObjectPrototype", &Base::s_info, &JSTestObjPrototypeTable, 0, CREATE_METHOD_TABLE(JSTestObjPrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestObjPrototype::self(VM& vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -939,7 +1579,7 @@
</span><span class="cx"> }
</span><span class="cx"> ExceptionCode ec = 0;
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = jsNumber(impl.attrWithGetterException(ec));
</del><ins>+ JSC::JSValue result = jsNumber(impl.attrWithGetterException(ec));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -978,7 +1618,7 @@
</span><span class="cx"> }
</span><span class="cx"> ExceptionCode ec = 0;
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = jsStringWithCache(exec, impl.stringAttrWithGetterException(ec));
</del><ins>+ JSC::JSValue result = jsStringWithCache(exec, impl.stringAttrWithGetterException(ec));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -1072,7 +1712,7 @@
</span><span class="cx"> }
</span><span class="cx"> ExceptionCode ec = 0;
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptStateAttributeRaises(exec, ec)));
</del><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptStateAttributeRaises(exec, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -1095,7 +1735,7 @@
</span><span class="cx"> if (!scriptContext)
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAttributeRaises(scriptContext, ec)));
</del><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAttributeRaises(scriptContext, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -1139,7 +1779,7 @@
</span><span class="cx"> if (!scriptContext)
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAndScriptStateAttributeRaises(exec, scriptContext, ec)));
</del><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAndScriptStateAttributeRaises(exec, scriptContext, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -1658,7 +2298,7 @@
</span><span class="cx"> ExceptionCode ec = 0;
</span><span class="cx"> bool isNull = false;
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = jsNumber(impl.nullableStringValue(isNull, ec));
</del><ins>+ JSC::JSValue result = jsNumber(impl.nullableStringValue(isNull, ec));
</ins><span class="cx"> if (isNull)
</span><span class="cx"> return JSValue::encode(jsNull());
</span><span class="cx"> setDOMException(exec, ec);
</span><span class="lines">@@ -2673,7 +3313,8 @@
</span><span class="cx"> return throwVMTypeError(exec);
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = jsNumber(impl.byteMethod());
</del><ins>+
+ JSC::JSValue result = jsNumber(impl.byteMethod());
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2696,7 +3337,8 @@
</span><span class="cx"> TestObj* objArg(toTestObj(exec->argument(2)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = jsNumber(impl.byteMethodWithArgs(byteArg, strArg, objArg));
</del><ins>+
+ JSC::JSValue result = jsNumber(impl.byteMethodWithArgs(byteArg, strArg, objArg));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2708,7 +3350,8 @@
</span><span class="cx"> return throwVMTypeError(exec);
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = jsNumber(impl.octetMethod());
</del><ins>+
+ JSC::JSValue result = jsNumber(impl.octetMethod());
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2731,7 +3374,8 @@
</span><span class="cx"> TestObj* objArg(toTestObj(exec->argument(2)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = jsNumber(impl.octetMethodWithArgs(octetArg, strArg, objArg));
</del><ins>+
+ JSC::JSValue result = jsNumber(impl.octetMethodWithArgs(octetArg, strArg, objArg));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2743,7 +3387,8 @@
</span><span class="cx"> return throwVMTypeError(exec);
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = jsNumber(impl.longMethod());
</del><ins>+
+ JSC::JSValue result = jsNumber(impl.longMethod());
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2766,7 +3411,8 @@
</span><span class="cx"> TestObj* objArg(toTestObj(exec->argument(2)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = jsNumber(impl.longMethodWithArgs(longArg, strArg, objArg));
</del><ins>+
+ JSC::JSValue result = jsNumber(impl.longMethodWithArgs(longArg, strArg, objArg));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2778,7 +3424,8 @@
</span><span class="cx"> return throwVMTypeError(exec);
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.objMethod()));
</del><ins>+
+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.objMethod()));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2801,7 +3448,8 @@
</span><span class="cx"> TestObj* objArg(toTestObj(exec->argument(2)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.objMethodWithArgs(longArg, strArg, objArg)));
</del><ins>+
+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.objMethodWithArgs(longArg, strArg, objArg)));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2835,7 +3483,8 @@
</span><span class="cx"> int longArg(toInt32(exec, exec->argument(0), NormalConversion));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = jsArray(exec, castedThis->globalObject(), impl.methodReturningSequence(longArg));
</del><ins>+
+ JSC::JSValue result = jsArray(exec, castedThis->globalObject(), impl.methodReturningSequence(longArg));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2875,8 +3524,8 @@
</span><span class="cx"> TestObj* objArg(toTestObj(exec->argument(1)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.methodThatRequiresAllArgsAndThrows(strArg, objArg, ec)));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.methodThatRequiresAllArgsAndThrows(strArg, objArg, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -3002,7 +3651,8 @@
</span><span class="cx"> return throwVMTypeError(exec);
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptStateObj(exec)));
</del><ins>+
+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptStateObj(exec)));
</ins><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> return JSValue::encode(result);
</span><span class="lines">@@ -3031,8 +3681,8 @@
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><span class="cx"> ExceptionCode ec = 0;
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptStateObjException(exec, ec)));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptStateObjException(exec, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -3081,8 +3731,8 @@
</span><span class="cx"> ScriptExecutionContext* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
</span><span class="cx"> if (!scriptContext)
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAndScriptStateObjException(exec, scriptContext, ec)));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAndScriptStateObjException(exec, scriptContext, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -3100,7 +3750,8 @@
</span><span class="cx"> ScriptExecutionContext* scriptContext = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject())->scriptExecutionContext();
</span><span class="cx"> if (!scriptContext)
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAndScriptStateWithSpaces(exec, scriptContext)));
</del><ins>+
+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.withScriptExecutionContextAndScriptStateWithSpaces(exec, scriptContext)));
</ins><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> return JSValue::encode(result);
</span><span class="lines">@@ -3342,7 +3993,8 @@
</span><span class="cx"> return throwVMTypeError(exec);
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = jsStringWithCache(exec, impl.conditionalMethod1());
</del><ins>+
+ JSC::JSValue result = jsStringWithCache(exec, impl.conditionalMethod1());
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -3621,14 +4273,16 @@
</span><span class="cx">
</span><span class="cx"> size_t argsCount = exec->argumentCount();
</span><span class="cx"> if (argsCount <= 0) {
</span><del>- JSValue result = jsNumber(TestObj::classMethodWithOptional());
</del><ins>+
+ JSC::JSValue result = jsNumber(TestObj::classMethodWithOptional());
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> int arg(toInt32(exec, exec->argument(0), NormalConversion));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = jsNumber(TestObj::classMethodWithOptional(arg));
</del><ins>+
+ JSC::JSValue result = jsNumber(TestObj::classMethodWithOptional(arg));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -3747,8 +4401,8 @@
</span><span class="cx"> Vector<String> values(toNativeArray<String>(exec, exec->argument(0)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = jsArray(exec, castedThis->globalObject(), impl.stringArrayFunction(values, ec));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = jsArray(exec, castedThis->globalObject(), impl.stringArrayFunction(values, ec));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -3767,8 +4421,8 @@
</span><span class="cx"> RefPtr<DOMStringList> values(toDOMStringList(exec, exec->argument(0)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.domStringListFunction(values, ec)));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.domStringListFunction(values, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -3784,8 +4438,8 @@
</span><span class="cx"> ExceptionCode ec = 0;
</span><span class="cx"> if (!shouldAllowAccessToNode(exec, impl.getSVGDocument(ec)))
</span><span class="cx"> return JSValue::encode(jsNull());
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.getSVGDocument(ec)));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.getSVGDocument(ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -3866,7 +4520,8 @@
</span><span class="cx"> return throwVMTypeError(exec);
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(SVGPropertyTearOff<SVGPoint>::create(impl.mutablePointFunction())));
</del><ins>+
+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(SVGPropertyTearOff<SVGPoint>::create(impl.mutablePointFunction())));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -3878,7 +4533,8 @@
</span><span class="cx"> return throwVMTypeError(exec);
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx"> TestObj& impl = castedThis->impl();
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(SVGPropertyTearOff<SVGPoint>::create(impl.immutablePointFunction())));
</del><ins>+
+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(SVGPropertyTearOff<SVGPoint>::create(impl.immutablePointFunction())));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -3914,8 +4570,8 @@
</span><span class="cx"> int b(toInt32(exec, exec->argument(2), NormalConversion));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.strictFunction(str, a, b, ec)));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.strictFunction(str, a, b, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -3939,8 +4595,8 @@
</span><span class="cx"> Vector<unsigned> a(toNativeArray<unsigned>(exec, exec->argument(1)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.strictFunctionWithSequence(objArg, a, ec)));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.strictFunctionWithSequence(objArg, a, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -3964,8 +4620,8 @@
</span><span class="cx"> Vector<int> array(toNativeArray<int>(exec, exec->argument(1)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.strictFunctionWithArray(objArg, array, ec)));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl.strictFunctionWithArray(objArg, array, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -32,14 +32,25 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestOverloadedConstructorsConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestOverloadedConstructorsConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestOverloadedConstructorsConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestOverloadedConstructorsConstructorTable = { 1, 0, false, JSTestOverloadedConstructorsConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestOverloadedConstructorsConstructorTable = { 0, 0, false, JSTestOverloadedConstructorsConstructorTableValues, 0, JSTestOverloadedConstructorsConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL JSTestOverloadedConstructorsConstructor::constructJSTestOverloadedConstructors1(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx"> JSTestOverloadedConstructorsConstructor* castedThis = jsCast<JSTestOverloadedConstructorsConstructor*>(exec->callee());
</span><span class="lines">@@ -131,15 +142,27 @@
</span><span class="cx"> return ConstructTypeHost;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestOverloadedConstructorsPrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestOverloadedConstructorsPrototypeTableIndex[2] = {
+ { -1, -1 },
+ { 0, -1 },
+};
+
+
+static const HashTableValue JSTestOverloadedConstructorsPrototypeTableValues[1] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestOverloadedConstructorsConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestOverloadedConstructorsPrototypeTable = { 2, 1, true, JSTestOverloadedConstructorsPrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestOverloadedConstructorsPrototypeTable = { 1, 1, true, JSTestOverloadedConstructorsPrototypeTableValues, 0, JSTestOverloadedConstructorsPrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestOverloadedConstructorsPrototype::s_info = { "TestOverloadedConstructorsPrototype", &Base::s_info, &JSTestOverloadedConstructorsPrototypeTable, 0, CREATE_METHOD_TABLE(JSTestOverloadedConstructorsPrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestOverloadedConstructorsPrototype::self(VM& vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -36,14 +36,25 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestSerializedScriptValueInterfaceConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestSerializedScriptValueInterfaceConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestSerializedScriptValueInterfaceConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestSerializedScriptValueInterfaceConstructorTable = { 1, 0, false, JSTestSerializedScriptValueInterfaceConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestSerializedScriptValueInterfaceConstructorTable = { 0, 0, false, JSTestSerializedScriptValueInterfaceConstructorTableValues, 0, JSTestSerializedScriptValueInterfaceConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestSerializedScriptValueInterfaceConstructor::s_info = { "TestSerializedScriptValueInterfaceConstructor", &Base::s_info, &JSTestSerializedScriptValueInterfaceConstructorTable, 0, CREATE_METHOD_TABLE(JSTestSerializedScriptValueInterfaceConstructor) };
</span><span class="cx">
</span><span class="cx"> JSTestSerializedScriptValueInterfaceConstructor::JSTestSerializedScriptValueInterfaceConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span><span class="lines">@@ -64,9 +75,34 @@
</span><span class="cx"> return getStaticValueSlot<JSTestSerializedScriptValueInterfaceConstructor, JSDOMWrapper>(exec, JSTestSerializedScriptValueInterfaceConstructorTable, jsCast<JSTestSerializedScriptValueInterfaceConstructor*>(object), propertyName, slot);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestSerializedScriptValueInterfacePrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestSerializedScriptValueInterfacePrototypeTableIndex[17] = {
+ { -1, -1 },
+ { -1, -1 },
+ { 3, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 2, 16 },
+ { -1, -1 },
+ { 4, -1 },
+ { -1, -1 },
+ { 0, -1 },
+ { -1, -1 },
+ { 1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 5, -1 },
+};
+
+
+static const HashTableValue JSTestSerializedScriptValueInterfacePrototypeTableValues[6] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> { "value", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializedScriptValueInterfaceValue) },
</span><span class="lines">@@ -74,10 +110,12 @@
</span><span class="cx"> { "cachedValue", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceCachedValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestSerializedScriptValueInterfaceCachedValue) },
</span><span class="cx"> { "ports", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfacePorts), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> { "cachedReadonlyValue", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceCachedReadonlyValue), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestSerializedScriptValueInterfacePrototypeTable = { 17, 15, true, JSTestSerializedScriptValueInterfacePrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestSerializedScriptValueInterfacePrototypeTable = { 6, 15, true, JSTestSerializedScriptValueInterfacePrototypeTableValues, 0, JSTestSerializedScriptValueInterfacePrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestSerializedScriptValueInterfacePrototype::s_info = { "TestSerializedScriptValueInterfacePrototype", &Base::s_info, &JSTestSerializedScriptValueInterfacePrototypeTable, 0, CREATE_METHOD_TABLE(JSTestSerializedScriptValueInterfacePrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestSerializedScriptValueInterfacePrototype::self(VM& vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -44,23 +44,46 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestTypedefsTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestTypedefsTableIndex[2] = {
+ { -1, -1 },
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSTestTypedefsTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestTypedefsTable = { 2, 1, false, JSTestTypedefsTableValues, 0 };
</del><ins>+static const HashTable JSTestTypedefsTable = { 0, 1, false, JSTestTypedefsTableValues, 0, JSTestTypedefsTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestTypedefsConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestTypedefsConstructorTableIndex[1] = {
+ { 0, -1 },
+};
+
+
+static const HashTableValue JSTestTypedefsConstructorTableValues[1] =
</ins><span class="cx"> {
</span><span class="cx"> { "TestSubObj", DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsConstructorTestSubObj), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestTypedefsConstructorTable = { 1, 0, true, JSTestTypedefsConstructorTableValues, 0 };
</del><ins>+static const HashTable JSTestTypedefsConstructorTable = { 1, 0, true, JSTestTypedefsConstructorTableValues, 0, JSTestTypedefsConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> EncodedJSValue JSC_HOST_CALL JSTestTypedefsConstructor::constructJSTestTypedefs(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx"> JSTestTypedefsConstructor* castedThis = jsCast<JSTestTypedefsConstructor*>(exec->callee());
</span><span class="lines">@@ -102,9 +125,83 @@
</span><span class="cx"> return ConstructTypeHost;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSTestTypedefsPrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSTestTypedefsPrototypeTableIndex[66] = {
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 9, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 16, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 2, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 0, 64 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 11, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 5, -1 },
+ { -1, -1 },
+ { 8, -1 },
+ { -1, -1 },
+ { 12, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 15, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 14, -1 },
+ { -1, -1 },
+ { 1, -1 },
+ { 3, -1 },
+ { 4, 65 },
+ { -1, -1 },
+ { -1, -1 },
+ { 10, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 13, -1 },
+ { -1, -1 },
+ { -1, -1 },
+ { 6, -1 },
+ { 7, -1 },
+};
+
+
+static const HashTableValue JSTestTypedefsPrototypeTableValues[17] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> { "unsignedLongLongAttr", DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestTypedefsUnsignedLongLongAttr), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSTestTypedefsUnsignedLongLongAttr) },
</span><span class="lines">@@ -123,10 +220,12 @@
</span><span class="cx"> { "stringArrayFunction2", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestTypedefsPrototypeFunctionStringArrayFunction2), (intptr_t) (1) },
</span><span class="cx"> { "callWithSequenceThatRequiresInclude", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestTypedefsPrototypeFunctionCallWithSequenceThatRequiresInclude), (intptr_t) (1) },
</span><span class="cx"> { "methodWithException", JSC::Function, NoIntrinsic, (intptr_t)static_cast<NativeFunction>(jsTestTypedefsPrototypeFunctionMethodWithException), (intptr_t) (0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSTestTypedefsPrototypeTable = { 66, 63, true, JSTestTypedefsPrototypeTableValues, 0 };
</del><ins>+static const HashTable JSTestTypedefsPrototypeTable = { 17, 63, true, JSTestTypedefsPrototypeTableValues, 0, JSTestTypedefsPrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSTestTypedefsPrototype::s_info = { "TestTypedefsPrototype", &Base::s_info, &JSTestTypedefsPrototypeTable, 0, CREATE_METHOD_TABLE(JSTestTypedefsPrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSTestTypedefsPrototype::self(VM& vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -245,7 +344,7 @@
</span><span class="cx"> }
</span><span class="cx"> ExceptionCode ec = 0;
</span><span class="cx"> TestTypedefs& impl = castedThis->impl();
</span><del>- JSValue result = jsNumber(impl.attrWithGetterException(ec));
</del><ins>+ JSC::JSValue result = jsNumber(impl.attrWithGetterException(ec));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -284,7 +383,7 @@
</span><span class="cx"> }
</span><span class="cx"> ExceptionCode ec = 0;
</span><span class="cx"> TestTypedefs& impl = castedThis->impl();
</span><del>- JSValue result = jsStringWithCache(exec, impl.stringAttrWithGetterException(ec));
</del><ins>+ JSC::JSValue result = jsStringWithCache(exec, impl.stringAttrWithGetterException(ec));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -506,7 +605,8 @@
</span><span class="cx"> Vector<RefPtr<SerializedScriptValue>> sequenceArg((toRefPtrNativeArray<SerializedScriptValue, JSSerializedScriptValue>(exec, exec->argument(0), &toSerializedScriptValue)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = jsNumber(impl.methodWithSequenceArg(sequenceArg));
</del><ins>+
+ JSC::JSValue result = jsNumber(impl.methodWithSequenceArg(sequenceArg));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -572,7 +672,8 @@
</span><span class="cx"> return throwVMTypeError(exec);
</span><span class="cx"> ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="cx"> TestTypedefs& impl = castedThis->impl();
</span><del>- JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(SVGPropertyTearOff<SVGPoint>::create(impl.immutablePointFunction())));
</del><ins>+
+ JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(SVGPropertyTearOff<SVGPoint>::create(impl.immutablePointFunction())));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -590,8 +691,8 @@
</span><span class="cx"> Vector<String> values(toNativeArray<String>(exec, exec->argument(0)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = jsArray(exec, castedThis->globalObject(), impl.stringArrayFunction(values, ec));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = jsArray(exec, castedThis->globalObject(), impl.stringArrayFunction(values, ec));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -610,8 +711,8 @@
</span><span class="cx"> Vector<String> values(toNativeArray<String>(exec, exec->argument(0)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = jsArray(exec, castedThis->globalObject(), impl.stringArrayFunction2(values, ec));
</del><span class="cx">
</span><ins>+ JSC::JSValue result = jsArray(exec, castedThis->globalObject(), impl.stringArrayFunction2(values, ec));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -629,7 +730,8 @@
</span><span class="cx"> Vector<RefPtr<TestEventTarget>> sequenceArg((toRefPtrNativeArray<TestEventTarget, JSTestEventTarget>(exec, exec->argument(0), &toTestEventTarget)));
</span><span class="cx"> if (UNLIKELY(exec->hadException()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSValue result = jsBoolean(impl.callWithSequenceThatRequiresInclude(sequenceArg));
</del><ins>+
+ JSC::JSValue result = jsBoolean(impl.callWithSequenceThatRequiresInclude(sequenceArg));
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSattributecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -31,14 +31,25 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSattributeConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSattributeConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSattributeConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSattributeConstructorTable = { 1, 0, false, JSattributeConstructorTableValues, 0 };
</del><ins>+static const HashTable JSattributeConstructorTable = { 0, 0, false, JSattributeConstructorTableValues, 0, JSattributeConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSattributeConstructor::s_info = { "attributeConstructor", &Base::s_info, &JSattributeConstructorTable, 0, CREATE_METHOD_TABLE(JSattributeConstructor) };
</span><span class="cx">
</span><span class="cx"> JSattributeConstructor::JSattributeConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span><span class="lines">@@ -59,16 +70,30 @@
</span><span class="cx"> return getStaticValueSlot<JSattributeConstructor, JSDOMWrapper>(exec, JSattributeConstructorTable, jsCast<JSattributeConstructor*>(object), propertyName, slot);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSattributePrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSattributePrototypeTableIndex[4] = {
+ { 1, -1 },
+ { 0, -1 },
+ { -1, -1 },
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSattributePrototypeTableValues[2] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsattributeConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><span class="cx"> { "readonly", DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsattributeReadonly), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSattributePrototypeTable = { 4, 3, true, JSattributePrototypeTableValues, 0 };
</del><ins>+static const HashTable JSattributePrototypeTable = { 2, 3, true, JSattributePrototypeTableValues, 0, JSattributePrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSattributePrototype::s_info = { "attributePrototype", &Base::s_info, &JSattributePrototypeTable, 0, CREATE_METHOD_TABLE(JSattributePrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSattributePrototype::self(VM& vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSreadonlycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp (165602 => 165603)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp        2014-03-14 05:54:11 UTC (rev 165602)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp        2014-03-14 06:45:39 UTC (rev 165603)
</span><span class="lines">@@ -28,14 +28,25 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for constructor */
</span><span class="cx">
</span><del>-static const HashTableValue JSreadonlyConstructorTableValues[] =
</del><ins>+static const struct CompactHashIndex JSreadonlyConstructorTableIndex[1] = {
+ { -1, -1 },
+};
+
+
+static const HashTableValue JSreadonlyConstructorTableValues[0] =
</ins><span class="cx"> {
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSreadonlyConstructorTable = { 1, 0, false, JSreadonlyConstructorTableValues, 0 };
</del><ins>+static const HashTable JSreadonlyConstructorTable = { 0, 0, false, JSreadonlyConstructorTableValues, 0, JSreadonlyConstructorTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSreadonlyConstructor::s_info = { "readonlyConstructor", &Base::s_info, &JSreadonlyConstructorTable, 0, CREATE_METHOD_TABLE(JSreadonlyConstructor) };
</span><span class="cx">
</span><span class="cx"> JSreadonlyConstructor::JSreadonlyConstructor(Structure* structure, JSDOMGlobalObject* globalObject)
</span><span class="lines">@@ -56,15 +67,27 @@
</span><span class="cx"> return getStaticValueSlot<JSreadonlyConstructor, JSDOMWrapper>(exec, JSreadonlyConstructorTable, jsCast<JSreadonlyConstructor*>(object), propertyName, slot);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if COMPILER(MSVC)
+#pragma warning(push)
+#pragma warning(disable: 2466) // Disable 'cannot allocate an array of constant size 0' warning
+#endif
</ins><span class="cx"> /* Hash table for prototype */
</span><span class="cx">
</span><del>-static const HashTableValue JSreadonlyPrototypeTableValues[] =
</del><ins>+static const struct CompactHashIndex JSreadonlyPrototypeTableIndex[2] = {
+ { -1, -1 },
+ { 0, -1 },
+};
+
+
+static const HashTableValue JSreadonlyPrototypeTableValues[1] =
</ins><span class="cx"> {
</span><span class="cx"> { "constructor", DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsreadonlyConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) },
</span><del>- { 0, 0, NoIntrinsic, 0, 0 }
</del><span class="cx"> };
</span><span class="cx">
</span><del>-static const HashTable JSreadonlyPrototypeTable = { 2, 1, true, JSreadonlyPrototypeTableValues, 0 };
</del><ins>+static const HashTable JSreadonlyPrototypeTable = { 1, 1, true, JSreadonlyPrototypeTableValues, 0, JSreadonlyPrototypeTableIndex };
+#if COMPILER(MSVC)
+#pragma warning(pop)
+#endif
</ins><span class="cx"> const ClassInfo JSreadonlyPrototype::s_info = { "readonlyPrototype", &Base::s_info, &JSreadonlyPrototypeTable, 0, CREATE_METHOD_TABLE(JSreadonlyPrototype) };
</span><span class="cx">
</span><span class="cx"> JSObject* JSreadonlyPrototype::self(VM& vm, JSGlobalObject* globalObject)
</span></span></pre>
</div>
</div>
</body>
</html>