<!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>[163035] 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/163035">163035</a></dd>
<dt>Author</dt> <dd>oliver@apple.com</dd>
<dt>Date</dt> <dd>2014-01-29 12:33:13 -0800 (Wed, 29 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Make DOM attributes appear to be faux accessor properties
https://bugs.webkit.org/show_bug.cgi?id=127797

Reviewed by Michael Saboff.

Source/JavaScriptCore:

Add flag so we can identify which properties should have the old
custom property semantics vs. the new faux accessors. Update the
inspector protocol accordingly.

These faux accessors produce descriptors with &quot;get&quot; and &quot;set&quot;
properties, but both values are undefined so can't be used
directly. A few custom properties actually require their
existing magical behaviour, so we now have a flag to
distinguish the expected output.

* inspector/InjectedScriptSource.js:
(.):
* runtime/JSObject.cpp:
(JSC::JSObject::getOwnPropertyDescriptor):
* runtime/PropertyDescriptor.cpp:
(JSC::PropertyDescriptor::setCustomDescriptor):
* runtime/PropertyDescriptor.h:
* runtime/PropertySlot.h:

Source/WebCore:

Refactor the bindings generator, and make sure we emit
the CustomAccessor flag on properties that should
appear to be accessors.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateGetOwnPropertySlotBody):
(GenerateAttributesHashTable):
(GenerateImplementation):

LayoutTests:

These properties now show up as accessors in these tests

* fast/dom/Window/replaceable-expected.txt:
* fast/dom/Window/replaceable.html:
* js/dom/getOwnPropertyDescriptor-expected.txt:
* js/resources/getOwnPropertyDescriptor.js:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfastdomWindowreplaceableexpectedtxt">trunk/LayoutTests/fast/dom/Window/replaceable-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomWindowreplaceablehtml">trunk/LayoutTests/fast/dom/Window/replaceable.html</a></li>
<li><a href="#trunkLayoutTestsjsdomgetOwnPropertyDescriptorexpectedtxt">trunk/LayoutTests/js/dom/getOwnPropertyDescriptor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsjsresourcesgetOwnPropertyDescriptorjs">trunk/LayoutTests/js/resources/getOwnPropertyDescriptor.js</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorInjectedScriptSourcejs">trunk/Source/JavaScriptCore/inspector/InjectedScriptSource.js</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSObjectcpp">trunk/Source/JavaScriptCore/runtime/JSObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertyDescriptorcpp">trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertyDescriptorh">trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertySloth">trunk/Source/JavaScriptCore/runtime/PropertySlot.h</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</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 (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/LayoutTests/ChangeLog        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2014-01-28  Oliver Hunt  &lt;oliver@apple.com&gt;
+
+        Make DOM attributes appear to be faux accessor properties
+        https://bugs.webkit.org/show_bug.cgi?id=127797
+
+        Reviewed by Michael Saboff.
+
+        These properties now show up as accessors in these tests
+
+        * fast/dom/Window/replaceable-expected.txt:
+        * fast/dom/Window/replaceable.html:
+        * js/dom/getOwnPropertyDescriptor-expected.txt:
+        * js/resources/getOwnPropertyDescriptor.js:
+
</ins><span class="cx"> 2014-01-29  Alexey Proskuryakov  &lt;ap@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add a WebCrypto test to verify that BigInteger allows for leading zeroes
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomWindowreplaceableexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/Window/replaceable-expected.txt (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Window/replaceable-expected.txt        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/LayoutTests/fast/dom/Window/replaceable-expected.txt        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -3,7 +3,7 @@
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-PASS Object.getOwnPropertyDescriptor(window, &quot;innerHeight&quot;).writable is true
</del><ins>+PASS Object.getOwnPropertyDescriptor(window, &quot;innerHeight&quot;).hasOwnProperty(&quot;get&quot;) is true
</ins><span class="cx"> PASS window.innerHeight is 42
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomWindowreplaceablehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/Window/replaceable.html (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Window/replaceable.html        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/LayoutTests/fast/dom/Window/replaceable.html        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -4,7 +4,7 @@
</span><span class="cx"> 
</span><span class="cx"> description('Tests that Replaceable attributes are writable');
</span><span class="cx"> 
</span><del>-shouldBeTrue('Object.getOwnPropertyDescriptor(window, &quot;innerHeight&quot;).writable');
</del><ins>+shouldBeTrue('Object.getOwnPropertyDescriptor(window, &quot;innerHeight&quot;).hasOwnProperty(&quot;get&quot;)');
</ins><span class="cx"> 
</span><span class="cx"> window.innerHeight = 42;
</span><span class="cx"> shouldBe('window.innerHeight', '42');
</span></span></pre></div>
<a id="trunkLayoutTestsjsdomgetOwnPropertyDescriptorexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/js/dom/getOwnPropertyDescriptor-expected.txt (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/dom/getOwnPropertyDescriptor-expected.txt        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/LayoutTests/js/dom/getOwnPropertyDescriptor-expected.txt        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -129,9 +129,10 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').configurable is true
</span><del>-PASS Object.getOwnPropertyDescriptor(global, 'length').value is global.length
-PASS Object.getOwnPropertyDescriptor(global, 'length').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'length').hasOwnProperty('set') is false
</del><ins>+PASS Object.getOwnPropertyDescriptor(global, 'length').get is undefined
+PASS Object.getOwnPropertyDescriptor(global, 'length').set is undefined
+PASS Object.getOwnPropertyDescriptor(global, 'length').hasOwnProperty('value') is false
+PASS Object.getOwnPropertyDescriptor(global, 'length').hasOwnProperty('writable') is false
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'length').enumerable is true
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'length').configurable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 0).value is global[0]
</span><span class="lines">@@ -139,9 +140,10 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 0).hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 0).enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 0).configurable is false
</span><del>-PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 'length').value is 1
-PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 'length').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 'length').hasOwnProperty('set') is false
</del><ins>+PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 'length').get is undefined
+PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 'length').set is undefined
+PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 'length').hasOwnProperty('value') is false
+PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 'length').hasOwnProperty('writable') is false
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 'length').enumerable is true
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 'length').configurable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(document.getElementsByTagName('div'), 0).value is document.getElementsByTagName('div')[0]
</span><span class="lines">@@ -154,9 +156,10 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(document.getElementsByClassName('pass'), 0).hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(document.getElementsByClassName('pass'), 0).enumerable is true
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(document.getElementsByClassName('pass'), 0).configurable is false
</span><del>-PASS Object.getOwnPropertyDescriptor(document.getElementsByClassName('pass'), 'length').value is document.getElementsByClassName('pass').length
-PASS Object.getOwnPropertyDescriptor(document.getElementsByClassName('pass'), 'length').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(document.getElementsByClassName('pass'), 'length').hasOwnProperty('set') is false
</del><ins>+PASS Object.getOwnPropertyDescriptor(document.getElementsByClassName('pass'), 'length').get is undefined
+PASS Object.getOwnPropertyDescriptor(document.getElementsByClassName('pass'), 'length').set is undefined
+PASS Object.getOwnPropertyDescriptor(document.getElementsByClassName('pass'), 'length').hasOwnProperty('value') is false
+PASS Object.getOwnPropertyDescriptor(document.getElementsByClassName('pass'), 'length').hasOwnProperty('writable') is false
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(document.getElementsByClassName('pass'), 'length').enumerable is true
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(document.getElementsByClassName('pass'), 'length').configurable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(canvasPixelArray, 'length').value is canvasPixelArray.length
</span><span class="lines">@@ -169,9 +172,10 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(canvasPixelArray, 0).hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(canvasPixelArray, 0).enumerable is true
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(canvasPixelArray, 0).configurable is false
</span><del>-PASS Object.getOwnPropertyDescriptor(select, 'length').value is select.length
-PASS Object.getOwnPropertyDescriptor(select, 'length').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(select, 'length').hasOwnProperty('set') is false
</del><ins>+PASS Object.getOwnPropertyDescriptor(select, 'length').get is undefined
+PASS Object.getOwnPropertyDescriptor(select, 'length').set is undefined
+PASS Object.getOwnPropertyDescriptor(select, 'length').hasOwnProperty('value') is false
+PASS Object.getOwnPropertyDescriptor(select, 'length').hasOwnProperty('writable') is false
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(select, 'length').enumerable is true
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(select, 'length').configurable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(select, 0).value is select[0]
</span></span></pre></div>
<a id="trunkLayoutTestsjsresourcesgetOwnPropertyDescriptorjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/js/resources/getOwnPropertyDescriptor.js (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/resources/getOwnPropertyDescriptor.js        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/LayoutTests/js/resources/getOwnPropertyDescriptor.js        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -44,19 +44,19 @@
</span><span class="cx"> descriptorShouldBe(&quot;global&quot;, &quot;'Infinity'&quot;, {writable: false, enumerable: false, configurable: false, value:&quot;Infinity&quot;});
</span><span class="cx"> descriptorShouldBe(&quot;global&quot;, &quot;'window'&quot;, {writable: false, enumerable: true, configurable: false, value:&quot;global&quot;});
</span><span class="cx"> descriptorShouldBe(&quot;global&quot;, &quot;'XMLHttpRequest'&quot;, {writable: true, enumerable: false, configurable: true, value:&quot;XMLHttpRequest&quot;});
</span><del>-descriptorShouldBe(&quot;global&quot;, &quot;'length'&quot;, {writable: true, enumerable: true, configurable: false, value:&quot;global.length&quot;});
</del><ins>+descriptorShouldBe(&quot;global&quot;, &quot;'length'&quot;, {get: undefined, set: undefined, enumerable: true, configurable: false});
</ins><span class="cx"> descriptorShouldBe(&quot;global&quot;, &quot;0&quot;, {writable: true, enumerable: false, configurable: false, value:&quot;global[0]&quot;});
</span><del>-descriptorShouldBe(&quot;document.getElementsByTagName('div')&quot;, &quot;'length'&quot;, {writable: false, enumerable: true, configurable: false, value:&quot;1&quot;});
</del><ins>+descriptorShouldBe(&quot;document.getElementsByTagName('div')&quot;, &quot;'length'&quot;, {get: undefined, set: undefined, enumerable: true, configurable: false});
</ins><span class="cx"> descriptorShouldBe(&quot;document.getElementsByTagName('div')&quot;, &quot;0&quot;, {writable: false, enumerable: true, configurable: false, value:&quot;document.getElementsByTagName('div')[0]&quot;});
</span><span class="cx"> descriptorShouldBe(&quot;document.getElementsByClassName('pass')&quot;, &quot;0&quot;, {writable: false, enumerable: true, configurable: false, value:&quot;document.getElementsByClassName('pass')[0]&quot;});
</span><del>-descriptorShouldBe(&quot;document.getElementsByClassName('pass')&quot;, &quot;'length'&quot;, {writable: false, enumerable: true, configurable: false, value:&quot;document.getElementsByClassName('pass').length&quot;});
</del><ins>+descriptorShouldBe(&quot;document.getElementsByClassName('pass')&quot;, &quot;'length'&quot;, {get: undefined, set: undefined, enumerable: true, configurable: false});
</ins><span class="cx"> var canvas = document.createElement(&quot;canvas&quot;);
</span><span class="cx"> var canvasPixelArray = canvas.getContext(&quot;2d&quot;).createImageData(10,10).data;
</span><span class="cx"> descriptorShouldBe(&quot;canvasPixelArray&quot;, &quot;'length'&quot;, {writable: false, enumerable: true, configurable: false, value:&quot;canvasPixelArray.length&quot;});
</span><span class="cx"> descriptorShouldBe(&quot;canvasPixelArray&quot;, &quot;0&quot;, {writable: true, enumerable: true, configurable: false, value:&quot;canvasPixelArray[0]&quot;});
</span><span class="cx"> var select = document.createElement(&quot;select&quot;);
</span><span class="cx"> select.innerHTML = &quot;&lt;option&gt;foo&lt;/option&gt;&quot;;
</span><del>-descriptorShouldBe(&quot;select&quot;, &quot;'length'&quot;, {writable: false, enumerable: true, configurable: false, value:&quot;select.length&quot;});
</del><ins>+descriptorShouldBe(&quot;select&quot;, &quot;'length'&quot;, {get: undefined, set: undefined, enumerable: true, configurable: false});
</ins><span class="cx"> descriptorShouldBe(&quot;select&quot;, &quot;0&quot;, {writable: true, enumerable: true, configurable: false, value:&quot;select[0]&quot;});
</span><span class="cx"> 
</span><span class="cx"> var objectWithGetter = {};
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -1,3 +1,29 @@
</span><ins>+2014-01-28  Oliver Hunt  &lt;oliver@apple.com&gt;
+
+        Make DOM attributes appear to be faux accessor properties
+        https://bugs.webkit.org/show_bug.cgi?id=127797
+
+        Reviewed by Michael Saboff.
+
+        Add flag so we can identify which properties should have the old
+        custom property semantics vs. the new faux accessors. Update the
+        inspector protocol accordingly.
+
+        These faux accessors produce descriptors with &quot;get&quot; and &quot;set&quot;
+        properties, but both values are undefined so can't be used
+        directly. A few custom properties actually require their
+        existing magical behaviour, so we now have a flag to 
+        distinguish the expected output.
+
+        * inspector/InjectedScriptSource.js:
+        (.):
+        * runtime/JSObject.cpp:
+        (JSC::JSObject::getOwnPropertyDescriptor):
+        * runtime/PropertyDescriptor.cpp:
+        (JSC::PropertyDescriptor::setCustomDescriptor):
+        * runtime/PropertyDescriptor.h:
+        * runtime/PropertySlot.h:
+
</ins><span class="cx"> 2014-01-29  Beth Dakin  &lt;bdakin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Build fix.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorInjectedScriptSourcejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/InjectedScriptSource.js (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/InjectedScriptSource.js        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/JavaScriptCore/inspector/InjectedScriptSource.js        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -350,6 +350,18 @@
</span><span class="cx">                         }
</span><span class="cx">                         continue;
</span><span class="cx">                     }
</span><ins>+                    if (descriptor.hasOwnProperty(&quot;get&quot;) &amp;&amp; descriptor.hasOwnProperty(&quot;set&quot;) &amp;&amp; !descriptor.get &amp;&amp; !descriptor.set) {
+                        // Not all bindings provide proper descriptors. Fall back to the writable, configurable property.
+                        try {
+                            descriptor = { name: name, value: object[name], writable: false, configurable: false, enumerable: false};
+                            if (o === object)
+                                descriptor.isOwn = true;
+                            descriptors.push(descriptor);
+                        } catch (e) {
+                            // Silent catch.
+                        }
+                        continue;
+                    }
</ins><span class="cx">                 } catch (e) {
</span><span class="cx">                     var descriptor = {};
</span><span class="cx">                     descriptor.value = e;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -2421,6 +2421,8 @@
</span><span class="cx">         return false;
</span><span class="cx">     if (slot.isAccessor())
</span><span class="cx">         descriptor.setAccessorDescriptor(slot.getterSetter(), slot.attributes());
</span><ins>+    else if (slot.attributes() &amp; CustomAccessor)
+        descriptor.setCustomDescriptor(slot.attributes());
</ins><span class="cx">     else
</span><span class="cx">         descriptor.setDescriptor(slot.getValue(exec, propertyName), slot.attributes());
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertyDescriptorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -115,6 +115,16 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void PropertyDescriptor::setCustomDescriptor(unsigned attributes)
+{
+    m_attributes = attributes | Accessor | CustomAccessor;
+    m_attributes &amp;= ~ReadOnly;
+    m_seenAttributes = EnumerablePresent | ConfigurablePresent;
+    setGetter(jsUndefined());
+    setSetter(jsUndefined());
+    m_value = JSValue();
+}
+
</ins><span class="cx"> void PropertyDescriptor::setAccessorDescriptor(GetterSetter* accessor, unsigned attributes)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(attributes &amp; Accessor);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertyDescriptorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.h (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.h        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.h        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -63,6 +63,7 @@
</span><span class="cx">         JSObject* setterObject() const;
</span><span class="cx">         JS_EXPORT_PRIVATE void setUndefined();
</span><span class="cx">         JS_EXPORT_PRIVATE void setDescriptor(JSValue value, unsigned attributes);
</span><ins>+        JS_EXPORT_PRIVATE void setCustomDescriptor(unsigned attributes);
</ins><span class="cx">         JS_EXPORT_PRIVATE void setAccessorDescriptor(GetterSetter* accessor, unsigned attributes);
</span><span class="cx">         JS_EXPORT_PRIVATE void setWritable(bool);
</span><span class="cx">         JS_EXPORT_PRIVATE void setEnumerable(bool);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertySloth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertySlot.h (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertySlot.h        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/JavaScriptCore/runtime/PropertySlot.h        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -41,6 +41,7 @@
</span><span class="cx">     DontDelete   = 1 &lt;&lt; 3,  // property can't be deleted
</span><span class="cx">     Function     = 1 &lt;&lt; 4,  // property is a function - only used by static hashtables
</span><span class="cx">     Accessor     = 1 &lt;&lt; 5,  // property is a getter/setter
</span><ins>+    CustomAccessor = 1 &lt;&lt; 6,
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class PropertySlot {
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/ChangeLog        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2014-01-28  Oliver Hunt  &lt;oliver@apple.com&gt;
+
+        Make DOM attributes appear to be faux accessor properties
+        https://bugs.webkit.org/show_bug.cgi?id=127797
+
+        Reviewed by Michael Saboff.
+
+        Refactor the bindings generator, and make sure we emit
+        the CustomAccessor flag on properties that should 
+        appear to be accessors.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateGetOwnPropertySlotBody):
+        (GenerateAttributesHashTable):
+        (GenerateImplementation):
+
</ins><span class="cx"> 2014-01-29  Alex Christensen  &lt;achristensen@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Prepare for accelerated compositing on WinCairo.
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -398,7 +398,7 @@
</span><span class="cx"> 
</span><span class="cx">     if ($interfaceName eq &quot;NamedNodeMap&quot; or $interfaceName =~ /^HTML\w*Collection$/) {
</span><span class="cx">         push(@getOwnPropertySlotImpl, &quot;    ${namespaceMaybe}JSValue proto = thisObject-&gt;prototype();\n&quot;);
</span><del>-        push(@getOwnPropertySlotImpl, &quot;    if (proto.isObject() &amp;&amp; jsCast&lt;${namespaceMaybe}JSObject*&gt;(asObject(proto))-&gt;hasProperty(exec, propertyName))\n&quot;);
</del><ins>+        push(@getOwnPropertySlotImpl, &quot;    if (proto.isObject() &amp;&amp; jsCast&lt;${namespaceMaybe}JSObject*&gt;(proto)-&gt;hasProperty(exec, propertyName))\n&quot;);
</ins><span class="cx">         push(@getOwnPropertySlotImpl, &quot;        return false;\n\n&quot;);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1174,9 +1174,9 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-sub GenerateAttributesHashTable($$)
</del><ins>+sub GenerateAttributesHashTable
</ins><span class="cx"> {
</span><del>-    my ($object, $interface) = @_;
</del><ins>+    my ($object, $interface, $hashKeys, $hashSpecials, $hashValue1, $hashValue2, $conditionals, $entries) = @_;
</ins><span class="cx"> 
</span><span class="cx">     # FIXME: These should be functions on $interface.
</span><span class="cx">     my $interfaceName = $interface-&gt;name;
</span><span class="lines">@@ -1188,21 +1188,10 @@
</span><span class="cx"> 
</span><span class="cx">     return 0  if !$numAttributes;
</span><span class="cx"> 
</span><del>-    my $hashSize = $numAttributes;
-    my $hashName = $className . &quot;Table&quot;;
-
-    my @hashKeys = ();
-    my @hashSpecials = ();
-    my @hashValue1 = ();
-    my @hashValue2 = ();
-    my %conditionals = ();
-
-    my @entries = ();
-
</del><span class="cx">     foreach my $attribute (@{$interface-&gt;attributes}) {
</span><span class="cx">         next if ($attribute-&gt;isStatic);
</span><span class="cx">         my $name = $attribute-&gt;signature-&gt;name;
</span><del>-        push(@hashKeys, $name);
</del><ins>+        push(@$hashKeys, $name);
</ins><span class="cx"> 
</span><span class="cx">         my @specials = ();
</span><span class="cx">         # As per Web IDL specification, constructor properties on the ECMAScript global object should be
</span><span class="lines">@@ -1211,43 +1200,39 @@
</span><span class="cx">         push(@specials, &quot;DontDelete&quot;) unless ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Deletable&quot;} || $is_global_constructor);
</span><span class="cx">         push(@specials, &quot;DontEnum&quot;) if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;NotEnumerable&quot;} || $is_global_constructor);
</span><span class="cx">         push(@specials, &quot;ReadOnly&quot;) if IsReadonly($attribute);
</span><ins>+        push(@specials, &quot;CustomAccessor&quot;) unless $is_global_constructor;
</ins><span class="cx">         my $special = (@specials &gt; 0) ? join(&quot; | &quot;, @specials) : &quot;0&quot;;
</span><del>-        push(@hashSpecials, $special);
</del><ins>+        push(@$hashSpecials, $special);
</ins><span class="cx"> 
</span><span class="cx">         my $getter = GetAttributeGetterName($interfaceName, $className, $attribute);
</span><del>-        push(@hashValue1, $getter);
</del><ins>+        push(@$hashValue1, $getter);
</ins><span class="cx"> 
</span><span class="cx">         if (IsReadonly($attribute)) {
</span><del>-            push(@hashValue2, &quot;0&quot;);
</del><ins>+            push(@$hashValue2, &quot;0&quot;);
</ins><span class="cx">         } else {
</span><span class="cx">             my $setter = GetAttributeSetterName($interfaceName, $className, $attribute);
</span><del>-            push(@hashValue2, $setter);
</del><ins>+            push(@$hashValue2, $setter);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         my $conditional = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;};
</span><span class="cx">         if ($conditional) {
</span><del>-            $conditionals{$name} = $conditional;
</del><ins>+            %$conditionals-&gt;{$name} =  $conditional;
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!$interface-&gt;extendedAttributes-&gt;{&quot;NoInterfaceObject&quot;}) {
</span><del>-        push(@hashKeys, &quot;constructor&quot;);
</del><ins>+        push(@$hashKeys, &quot;constructor&quot;);
</ins><span class="cx">         my $getter = &quot;js&quot; . $interfaceName . &quot;Constructor&quot;;
</span><del>-        push(@hashValue1, $getter);
</del><ins>+        push(@$hashValue1, $getter);
</ins><span class="cx">         if ($interface-&gt;extendedAttributes-&gt;{&quot;ReplaceableConstructor&quot;}) {
</span><span class="cx">             my $setter = &quot;setJS&quot; . $interfaceName . &quot;Constructor&quot;;
</span><del>-            push(@hashValue2, $setter);
-            push(@hashSpecials, &quot;DontEnum | DontDelete&quot;);
</del><ins>+            push(@$hashValue2, $setter);
+            push(@$hashSpecials, &quot;DontEnum | DontDelete&quot;);
</ins><span class="cx">         } else {            
</span><del>-            push(@hashValue2, &quot;0&quot;);
-            push(@hashSpecials, &quot;DontEnum | ReadOnly&quot;);
</del><ins>+            push(@$hashValue2, &quot;0&quot;);
+            push(@$hashSpecials, &quot;DontEnum | ReadOnly&quot;);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><del>-
-    $object-&gt;GenerateHashTable($hashName, $hashSize,
-                               \@hashKeys, \@hashSpecials,
-                               \@hashValue1, \@hashValue2,
-                               \%conditionals);
</del><span class="cx">     return $numAttributes;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1585,10 +1570,24 @@
</span><span class="cx">     push(@implContent, &quot;\nusing namespace JSC;\n\n&quot;);
</span><span class="cx">     push(@implContent, &quot;namespace WebCore {\n\n&quot;);
</span><span class="cx"> 
</span><del>-    my $numAttributes = GenerateAttributesHashTable($object, $interface);
</del><ins>+    my @hashKeys = ();
+    my @hashValue1 = ();
+    my @hashValue2 = ();
+    my @hashSpecials = ();
+    my %conditionals = ();
+    my $hashName = $className . &quot;Table&quot;;
</ins><span class="cx"> 
</span><ins>+    my $numAttributes = GenerateAttributesHashTable($object, $interface,
+        \@hashKeys, \@hashSpecials,
+        \@hashValue1, \@hashValue2,
+        \%conditionals);
+
</ins><span class="cx">     my $numConstants = @{$interface-&gt;constants};
</span><span class="cx">     my $numFunctions = @{$interface-&gt;functions};
</span><ins>+    $object-&gt;GenerateHashTable($hashName, $numAttributes,
+        \@hashKeys, \@hashSpecials,
+        \@hashValue1, \@hashValue2,
+        \%conditionals) if $numAttributes &gt; 0;
</ins><span class="cx"> 
</span><span class="cx">     # - Add all constants
</span><span class="cx">     if (!$interface-&gt;extendedAttributes-&gt;{&quot;NoInterfaceObject&quot;}) {
</span><span class="lines">@@ -1689,13 +1688,13 @@
</span><span class="cx"> 
</span><span class="cx">     # - Add functions and constants to a hashtable definition
</span><span class="cx">     my $hashSize = $numFunctions + $numConstants;
</span><del>-    my $hashName = $className . &quot;PrototypeTable&quot;;
</del><ins>+    $hashName = $className . &quot;PrototypeTable&quot;;
</ins><span class="cx"> 
</span><del>-    my @hashKeys = ();
-    my @hashValue1 = ();
-    my @hashValue2 = ();
-    my @hashSpecials = ();
-    my %conditionals = ();
</del><ins>+    @hashKeys = ();
+    @hashValue1 = ();
+    @hashValue2 = ();
+    @hashSpecials = ();
+    %conditionals = ();
</ins><span class="cx"> 
</span><span class="cx">     # FIXME: we should not need a function for every constant.
</span><span class="cx">     foreach my $constant (@{$interface-&gt;constants}) {
</span><span class="lines">@@ -1970,8 +1969,14 @@
</span><span class="cx"> 
</span><span class="cx">             if (!$attribute-&gt;isStatic || $attribute-&gt;signature-&gt;type =~ /Constructor$/) {
</span><span class="cx">                 if ($interfaceName eq &quot;DOMWindow&quot;) {
</span><del>-                    push(@implContent, &quot;    ${className}* castedThis = jsCast&lt;$className*&gt;(JSValue::decode(slotBase));\n&quot;);
-                    push(@implContent, &quot;    UNUSED_PARAM(thisValue);\n&quot;);
</del><ins>+                    push(@implContent, &quot;    ${className}* castedThis = jsDynamicCast&lt;$className*&gt;(JSValue::decode(thisValue));\n&quot;);
+                    push(@implContent, &quot;    if (!castedThis) {\n&quot;);
+                    push(@implContent, &quot;        if (JSDOMWindowShell* shell = jsDynamicCast&lt;JSDOMWindowShell*&gt;(JSValue::decode(thisValue)))\n&quot;);
+                    push(@implContent, &quot;            castedThis = shell-&gt;window();\n&quot;);
+                    push(@implContent, &quot;    }\n&quot;);
+                    push(@implContent, &quot;    UNUSED_PARAM(slotBase);\n&quot;);
+                    push(@implContent, &quot;    if (!castedThis)\n&quot;);
+                    push(@implContent, &quot;        return throwVMTypeError(exec);\n&quot;);
</ins><span class="cx">                 } else {
</span><span class="cx">                     push(@implContent, &quot;    ${className}* castedThis = jsDynamicCast&lt;$className*&gt;(JSValue::decode(thisValue));\n&quot;);
</span><span class="cx">                     push(@implContent, &quot;    UNUSED_PARAM(slotBase);\n&quot;);
</span><span class="lines">@@ -2142,7 +2147,7 @@
</span><span class="cx">         if (!$interface-&gt;extendedAttributes-&gt;{&quot;NoInterfaceObject&quot;}) {
</span><span class="cx">             my $constructorFunctionName = &quot;js&quot; . $interfaceName . &quot;Constructor&quot;;
</span><span class="cx"> 
</span><del>-            push(@implContent, &quot;EncodedJSValue ${constructorFunctionName}(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)\n&quot;);
</del><ins>+            push(@implContent, &quot;EncodedJSValue ${constructorFunctionName}(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)\n&quot;);
</ins><span class="cx">             push(@implContent, &quot;{\n&quot;);
</span><span class="cx">             if ($interfaceName eq &quot;DOMWindow&quot;) {
</span><span class="cx">                 push(@implContent, &quot;    ${className}* domObject = jsDynamicCast&lt;$className*&gt;(JSValue::decode(thisValue));\n&quot;);
</span><span class="lines">@@ -2152,8 +2157,6 @@
</span><span class="cx">                 push(@implContent, &quot;    }\n&quot;);
</span><span class="cx">             } else {
</span><span class="cx">                 push(@implContent, &quot;    ${className}* domObject = jsDynamicCast&lt;$className*&gt;(JSValue::decode(thisValue));\n&quot;);
</span><del>-                push(@implContent, &quot;    if (!domObject)\n&quot;);
-                push(@implContent, &quot;        return throwVMTypeError(exec);\n&quot;);
</del><span class="cx">             }
</span><span class="cx">             push(@implContent, &quot;    if (!domObject)\n&quot;);
</span><span class="cx">             push(@implContent, &quot;        return throwVMTypeError(exec);\n&quot;);
</span><span class="lines">@@ -2167,268 +2170,265 @@
</span><span class="cx">             push(@implContent, &quot;}\n\n&quot;);
</span><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        if ($interface-&gt;extendedAttributes-&gt;{&quot;ReplaceableConstructor&quot;}) {
+            my $constructorFunctionName = &quot;setJS&quot; . $interfaceName . &quot;Constructor&quot;;
</ins><span class="cx"> 
</span><del>-        # Check if we have any writable attributes
-        my $hasReadWriteProperties = 0;
-        foreach my $attribute (@{$interface-&gt;attributes}) {
-            $hasReadWriteProperties = 1 if !IsReadonly($attribute) &amp;&amp; !$attribute-&gt;isStatic;
</del><ins>+            push(@implContent, &quot;void ${constructorFunctionName}(ExecState* exec, JSObject*, EncodedJSValue thisValue, EncodedJSValue encodedValue)\n&quot;);
+            push(@implContent, &quot;{\n&quot;);
+            push(@implContent, &quot;    JSValue value = JSValue::decode(encodedValue);&quot;);
+            push(@implContent, &quot;    ${className}* castedThis = jsDynamicCast&lt;${className}*&gt;(JSValue::decode(thisValue));\n&quot;);
+            if ($interfaceName eq &quot;DOMWindow&quot;) {
+                push(@implContent, &quot;    if (!castedThis) {\n&quot;);
+                push(@implContent, &quot;        if (JSDOMWindowShell* shell = jsDynamicCast&lt;JSDOMWindowShell*&gt;(JSValue::decode(thisValue)))\n&quot;);
+                push(@implContent, &quot;            castedThis = shell-&gt;window();\n&quot;);
+                push(@implContent, &quot;    }\n&quot;);
+            }
+            push(@implContent, &quot;    if (!castedThis) {\n&quot;);
+            push(@implContent, &quot;        throwVMTypeError(exec);\n&quot;);
+            push(@implContent, &quot;        return;\n&quot;);
+            push(@implContent, &quot;    }\n&quot;);
+            if ($interface-&gt;extendedAttributes-&gt;{&quot;CheckSecurity&quot;}) {
+                if ($interfaceName eq &quot;DOMWindow&quot;) {
+                    push(@implContent, &quot;    if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis-&gt;impl()))\n&quot;);
+                } else {
+                    push(@implContent, &quot;    if (!shouldAllowAccessToFrame(exec, castedThis-&gt;impl().frame()))\n&quot;);
+                }
+                push(@implContent, &quot;        return;\n&quot;);
+            }
+
+            push(@implContent, &quot;    // Shadowing a built-in constructor\n&quot;);
+
+            if ($interfaceName eq &quot;DOMWindow&quot;) {
+                push(@implContent, &quot;    castedThis-&gt;putDirect(exec-&gt;vm(), exec-&gt;propertyNames().constructor, value);\n&quot;);
+            } else {
+                die &quot;No way to handle interface with ReplaceableConstructor extended attribute: $interfaceName&quot;;
+            }
+            push(@implContent, &quot;}\n\n&quot;);
</ins><span class="cx">         }
</span><ins>+    }
+    my $hasCustomSetter = $interface-&gt;extendedAttributes-&gt;{&quot;CustomNamedSetter&quot;}
+                          || $interface-&gt;extendedAttributes-&gt;{&quot;CustomIndexedSetter&quot;};
</ins><span class="cx"> 
</span><del>-        my $overridesPutImplementation = InstanceOverridesPutImplementation($interface);
-        my $hasSetter = $hasReadWriteProperties;
</del><ins>+    if ($hasCustomSetter) {
+        if (!$interface-&gt;extendedAttributes-&gt;{&quot;CustomPutFunction&quot;}) {
+            push(@implContent, &quot;void ${className}::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)\n&quot;);
+            push(@implContent, &quot;{\n&quot;);
+            push(@implContent, &quot;    ${className}* thisObject = jsCast&lt;${className}*&gt;(cell);\n&quot;);
+            push(@implContent, &quot;    ASSERT_GC_OBJECT_INHERITS(thisObject, info());\n&quot;);
+            if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomIndexedSetter&quot;}) {
+                push(@implContent, &quot;    unsigned index = propertyName.asIndex();\n&quot;);
+                push(@implContent, &quot;    if (index != PropertyName::NotAnIndex) {\n&quot;);
+                push(@implContent, &quot;        thisObject-&gt;indexSetter(exec, index, value);\n&quot;);
+                push(@implContent, &quot;        return;\n&quot;);
+                push(@implContent, &quot;    }\n&quot;);
+            }
+            if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomNamedSetter&quot;}) {
+                push(@implContent, &quot;    if (thisObject-&gt;putDelegate(exec, propertyName, value, slot))\n&quot;);
+                push(@implContent, &quot;        return;\n&quot;);
+            }
</ins><span class="cx"> 
</span><del>-        if ($hasSetter || $overridesPutImplementation) {
-            if ($overridesPutImplementation) {
-                push(@implContent, &quot;void ${className}::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)\n&quot;);
</del><ins>+            push(@implContent, &quot;    Base::put(thisObject, exec, propertyName, value, slot);\n&quot;);
+            push(@implContent, &quot;}\n\n&quot;);
+
+            if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomIndexedSetter&quot;} || $interface-&gt;extendedAttributes-&gt;{&quot;CustomNamedSetter&quot;}) {
+                push(@implContent, &quot;void ${className}::putByIndex(JSCell* cell, ExecState* exec, unsigned index, JSValue value, bool shouldThrow)\n&quot;);
</ins><span class="cx">                 push(@implContent, &quot;{\n&quot;);
</span><span class="cx">                 push(@implContent, &quot;    ${className}* thisObject = jsCast&lt;${className}*&gt;(cell);\n&quot;);
</span><span class="cx">                 push(@implContent, &quot;    ASSERT_GC_OBJECT_INHERITS(thisObject, info());\n&quot;);
</span><span class="cx">                 if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomIndexedSetter&quot;}) {
</span><del>-                    push(@implContent, &quot;    unsigned index = propertyName.asIndex();\n&quot;);
-                    push(@implContent, &quot;    if (index != PropertyName::NotAnIndex) {\n&quot;);
</del><ins>+                    push(@implContent, &quot;    if (index &lt;= MAX_ARRAY_INDEX) {\n&quot;);
+                    push(@implContent, &quot;        UNUSED_PARAM(shouldThrow);\n&quot;);
</ins><span class="cx">                     push(@implContent, &quot;        thisObject-&gt;indexSetter(exec, index, value);\n&quot;);
</span><span class="cx">                     push(@implContent, &quot;        return;\n&quot;);
</span><span class="cx">                     push(@implContent, &quot;    }\n&quot;);
</span><span class="cx">                 }
</span><ins>+
</ins><span class="cx">                 if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomNamedSetter&quot;}) {
</span><ins>+                    push(@implContent, &quot;    PropertyName propertyName = Identifier::from(exec, index);\n&quot;);
+                    push(@implContent, &quot;    PutPropertySlot slot(thisObject, shouldThrow);\n&quot;);
</ins><span class="cx">                     push(@implContent, &quot;    if (thisObject-&gt;putDelegate(exec, propertyName, value, slot))\n&quot;);
</span><span class="cx">                     push(@implContent, &quot;        return;\n&quot;);
</span><span class="cx">                 }
</span><span class="cx"> 
</span><del>-                push(@implContent, &quot;    Base::put(thisObject, exec, propertyName, value, slot);\n&quot;);
-
</del><ins>+                push(@implContent, &quot;    Base::putByIndex(cell, exec, index, value, shouldThrow);\n&quot;);
</ins><span class="cx">                 push(@implContent, &quot;}\n\n&quot;);
</span><ins>+            }
+        }
+    }
</ins><span class="cx"> 
</span><del>-                if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomIndexedSetter&quot;} || $interface-&gt;extendedAttributes-&gt;{&quot;CustomNamedSetter&quot;}) {
-                    push(@implContent, &quot;void ${className}::putByIndex(JSCell* cell, ExecState* exec, unsigned index, JSValue value, bool shouldThrow)\n&quot;);
-                    push(@implContent, &quot;{\n&quot;);
-                    push(@implContent, &quot;    ${className}* thisObject = jsCast&lt;${className}*&gt;(cell);\n&quot;);
-                    push(@implContent, &quot;    ASSERT_GC_OBJECT_INHERITS(thisObject, info());\n&quot;);
-                    if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomIndexedSetter&quot;}) {
-                        push(@implContent, &quot;    if (index &lt;= MAX_ARRAY_INDEX) {\n&quot;);
-                        push(@implContent, &quot;        UNUSED_PARAM(shouldThrow);\n&quot;);
-                        push(@implContent, &quot;        thisObject-&gt;indexSetter(exec, index, value);\n&quot;);
-                        push(@implContent, &quot;        return;\n&quot;);
</del><ins>+    # Check if we have any writable attributes
+    my $hasReadWriteProperties = 0;
+    foreach my $attribute (@{$interface-&gt;attributes}) {
+        $hasReadWriteProperties = 1 if !IsReadonly($attribute) &amp;&amp; !$attribute-&gt;isStatic;
+
+        if ($attribute-&gt;signature-&gt;type eq &quot;EventListener&quot;) {
+            $implIncludes{&quot;JSEventListener.h&quot;} = 1;
+        }
+    }
+
+    if ($hasReadWriteProperties) {
+        foreach my $attribute (@{$interface-&gt;attributes}) {
+            if (!IsReadonly($attribute)) {
+                my $name = $attribute-&gt;signature-&gt;name;
+                my $type = $attribute-&gt;signature-&gt;type;
+                my $putFunctionName = GetAttributeSetterName($interfaceName, $className, $attribute);
+                my $implSetterFunctionName = $codeGenerator-&gt;WK_ucfirst($name);
+                my $setterRaisesException = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;SetterRaisesException&quot;};
+
+                my $attributeConditionalString = $codeGenerator-&gt;GenerateConditionalString($attribute-&gt;signature);
+                push(@implContent, &quot;#if ${attributeConditionalString}\n&quot;) if $attributeConditionalString;
+
+                push(@implContent, &quot;void ${putFunctionName}(ExecState* exec, JSObject* /* baseObject */, EncodedJSValue&quot;);
+                push(@implContent, &quot; thisValue&quot;) if !$attribute-&gt;isStatic;
+                push(@implContent, &quot;, EncodedJSValue encodedValue)\n&quot;);
+                push(@implContent, &quot;{\n&quot;);
+                push(@implContent, &quot;    JSValue value = JSValue::decode(encodedValue);\n&quot;);
+                push(@implContent, &quot;    UNUSED_PARAM(exec);\n&quot;);
+                if (!$attribute-&gt;isStatic) {
+                    push(@implContent, &quot;    ${className}* castedThis = jsDynamicCast&lt;${className}*&gt;(JSValue::decode(thisValue));\n&quot;);
+                    if ($interfaceName eq &quot;DOMWindow&quot;) {
+                        push(@implContent, &quot;    if (!castedThis) {\n&quot;);
+                        push(@implContent, &quot;        if (JSDOMWindowShell* shell = jsDynamicCast&lt;JSDOMWindowShell*&gt;(JSValue::decode(thisValue)))\n&quot;);
+                        push(@implContent, &quot;            castedThis = shell-&gt;window();\n&quot;);
</ins><span class="cx">                         push(@implContent, &quot;    }\n&quot;);
</span><span class="cx">                     }
</span><ins>+                    push(@implContent, &quot;    if (!castedThis) {\n&quot;);
+                    push(@implContent, &quot;        throwVMTypeError(exec);\n&quot;);
+                    push(@implContent, &quot;        return;\n&quot;);
+                    push(@implContent, &quot;    }\n&quot;);
+                }
+                if ($interface-&gt;extendedAttributes-&gt;{&quot;CheckSecurity&quot;} &amp;&amp; !$attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;DoNotCheckSecurity&quot;}) {
+                    if ($interfaceName eq &quot;DOMWindow&quot;) {
+                        push(@implContent, &quot;    if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis-&gt;impl()))\n&quot;);
+                    } else {
+                        push(@implContent, &quot;    if (!shouldAllowAccessToFrame(exec, castedThis-&gt;impl().frame()))\n&quot;);
+                    }
+                    push(@implContent, &quot;        return;\n&quot;);
+                }
</ins><span class="cx"> 
</span><del>-                    if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomNamedSetter&quot;}) {
-                        push(@implContent, &quot;    PropertyName propertyName = Identifier::from(exec, index);\n&quot;);
-                        push(@implContent, &quot;    PutPropertySlot slot(thisObject, shouldThrow);\n&quot;);
-                        push(@implContent, &quot;    if (thisObject-&gt;putDelegate(exec, propertyName, value, slot))\n&quot;);
-                        push(@implContent, &quot;        return;\n&quot;);
</del><ins>+                if (HasCustomSetter($attribute-&gt;signature-&gt;extendedAttributes)) {
+                    push(@implContent, &quot;    castedThis-&gt;set$implSetterFunctionName(exec, value);\n&quot;);
+                } elsif ($type eq &quot;EventListener&quot;) {
+                    $implIncludes{&quot;JSEventListener.h&quot;} = 1;
+                    push(@implContent, &quot;    UNUSED_PARAM(exec);\n&quot;);
+                    my $windowEventListener = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;JSWindowEventListener&quot;};
+                    if ($windowEventListener) {
+                        push(@implContent, &quot;    JSDOMGlobalObject* globalObject = castedThis-&gt;globalObject();\n&quot;);
</ins><span class="cx">                     }
</span><ins>+                    push(@implContent, &quot;    $interfaceName&amp; impl = castedThis-&gt;impl();\n&quot;);
+                    if ((($interfaceName eq &quot;DOMWindow&quot;) or ($interfaceName eq &quot;WorkerGlobalScope&quot;)) and $name eq &quot;onerror&quot;) {
+                        $implIncludes{&quot;JSErrorHandler.h&quot;} = 1;
+                        push(@implContent, &quot;    impl.set$implSetterFunctionName(createJSErrorHandler(exec, value, castedThis));\n&quot;);
+                    } else {
+                        push(@implContent, GenerateAttributeEventListenerCall($className, $implSetterFunctionName, $windowEventListener));
+                    }
+                } elsif ($attribute-&gt;signature-&gt;type =~ /Constructor$/) {
+                    my $constructorType = $attribute-&gt;signature-&gt;type;
+                    $constructorType =~ s/Constructor$//;
+                    # $constructorType ~= /Constructor$/ indicates that it is NamedConstructor.
+                    # We do not generate the header file for NamedConstructor of class XXXX,
+                    # since we generate the NamedConstructor declaration into the header file of class XXXX.
+                    if ($constructorType ne &quot;any&quot; and $constructorType !~ /Named$/) {
+                        AddToImplIncludes(&quot;JS&quot; . $constructorType . &quot;.h&quot;, $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;});
+                    }
+                    push(@implContent, &quot;    // Shadowing a built-in constructor\n&quot;);
+                    push(@implContent, &quot;    castedThis-&gt;putDirect(exec-&gt;vm(), Identifier(exec, \&quot;$name\&quot;), value);\n&quot;);
</ins><span class="cx"> 
</span><del>-                    push(@implContent, &quot;    Base::putByIndex(cell, exec, index, value, shouldThrow);\n&quot;);
-                    push(@implContent, &quot;}\n\n&quot;);
-                }
-            }
</del><ins>+                } elsif ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Replaceable&quot;}) {
+                    push(@implContent, &quot;    // Shadowing a built-in object\n&quot;);
+                    push(@implContent, &quot;    castedThis-&gt;putDirect(exec-&gt;vm(), Identifier(exec, \&quot;$name\&quot;), value);\n&quot;);
+                } else {
+                    if (!$attribute-&gt;isStatic) {
+                        push(@implContent, &quot;    $implType&amp; impl = castedThis-&gt;impl();\n&quot;);
+                    }
+                    push(@implContent, &quot;    ExceptionCode ec = 0;\n&quot;) if $setterRaisesException;
</ins><span class="cx"> 
</span><del>-            if ($hasReadWriteProperties) {
-                foreach my $attribute (@{$interface-&gt;attributes}) {
-                    if (!IsReadonly($attribute)) {
-                        my $name = $attribute-&gt;signature-&gt;name;
-                        my $type = $attribute-&gt;signature-&gt;type;
-                        my $putFunctionName = GetAttributeSetterName($interfaceName, $className, $attribute);
-                        my $implSetterFunctionName = $codeGenerator-&gt;WK_ucfirst($name);
-                        my $setterRaisesException = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;SetterRaisesException&quot;};
</del><ins>+                    # If the &quot;StrictTypeChecking&quot; extended attribute is present, and the attribute's type is an
+                    # interface type, then if the incoming value does not implement that interface, a TypeError
+                    # is thrown rather than silently passing NULL to the C++ code.
+                    # Per the Web IDL and ECMAScript specifications, incoming values can always be converted to
+                    # both strings and numbers, so do not throw TypeError if the attribute is of these types.
+                    if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;StrictTypeChecking&quot;}) {
+                        $implIncludes{&quot;&lt;runtime/Error.h&gt;&quot;} = 1;
</ins><span class="cx"> 
</span><del>-                        my $attributeConditionalString = $codeGenerator-&gt;GenerateConditionalString($attribute-&gt;signature);
-                        push(@implContent, &quot;#if ${attributeConditionalString}\n&quot;) if $attributeConditionalString;
-
-                        push(@implContent, &quot;void ${putFunctionName}(ExecState* exec, JSObject* /* baseObject */, EncodedJSValue&quot;);
-                        push(@implContent, &quot; thisValue&quot;) if !$attribute-&gt;isStatic;
-                        push(@implContent, &quot;, EncodedJSValue encodedValue)\n&quot;);
-                        push(@implContent, &quot;{\n&quot;);
-                        push(@implContent, &quot;    JSValue value = JSValue::decode(encodedValue);\n&quot;);
-                        push(@implContent, &quot;    UNUSED_PARAM(exec);\n&quot;);
-                        if (!$attribute-&gt;isStatic) {
-                            push(@implContent, &quot;    ${className}* castedThis = jsDynamicCast&lt;${className}*&gt;(JSValue::decode(thisValue));\n&quot;);
-                            if ($interfaceName eq &quot;DOMWindow&quot;) {
-                                push(@implContent, &quot;    if (!castedThis) {\n&quot;);
-                                push(@implContent, &quot;        if (JSDOMWindowShell* shell = jsDynamicCast&lt;JSDOMWindowShell*&gt;(JSValue::decode(thisValue)))\n&quot;);
-                                push(@implContent, &quot;            castedThis = shell-&gt;window();\n&quot;);
-                                push(@implContent, &quot;    }\n&quot;);
-                            }
-                            push(@implContent, &quot;    if (!castedThis) {\n&quot;);
</del><ins>+                        my $argType = $attribute-&gt;signature-&gt;type;
+                        if ($codeGenerator-&gt;IsWrapperType($argType)) {
+                            push(@implContent, &quot;    if (!value.isUndefinedOrNull() &amp;&amp; !value.inherits(JS${argType}::info())) {\n&quot;);
</ins><span class="cx">                             push(@implContent, &quot;        throwVMTypeError(exec);\n&quot;);
</span><span class="cx">                             push(@implContent, &quot;        return;\n&quot;);
</span><del>-                            push(@implContent, &quot;    }\n&quot;);
</del><ins>+                            push(@implContent, &quot;    };\n&quot;);
</ins><span class="cx">                         }
</span><del>-                        if ($interface-&gt;extendedAttributes-&gt;{&quot;CheckSecurity&quot;} &amp;&amp; !$attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;DoNotCheckSecurity&quot;}) {
-                            if ($interfaceName eq &quot;DOMWindow&quot;) {
-                                push(@implContent, &quot;    if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis-&gt;impl()))\n&quot;);
-                            } else {
-                                push(@implContent, &quot;    if (!shouldAllowAccessToFrame(exec, castedThis-&gt;impl().frame()))\n&quot;);
-                            }
-                            push(@implContent, &quot;        return;\n&quot;);
-                        }
</del><ins>+                    }
</ins><span class="cx"> 
</span><del>-                        if (HasCustomSetter($attribute-&gt;signature-&gt;extendedAttributes)) {
-                            push(@implContent, &quot;    castedThis-&gt;set$implSetterFunctionName(exec, value);\n&quot;);
-                        } elsif ($type eq &quot;EventListener&quot;) {
-                            $implIncludes{&quot;JSEventListener.h&quot;} = 1;
-                            push(@implContent, &quot;    UNUSED_PARAM(exec);\n&quot;);
-                            my $windowEventListener = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;JSWindowEventListener&quot;};
-                            if ($windowEventListener) {
-                                push(@implContent, &quot;    JSDOMGlobalObject* globalObject = castedThis-&gt;globalObject();\n&quot;);
-                            }
-                            push(@implContent, &quot;    $interfaceName&amp; impl = castedThis-&gt;impl();\n&quot;);
-                            if ((($interfaceName eq &quot;DOMWindow&quot;) or ($interfaceName eq &quot;WorkerGlobalScope&quot;)) and $name eq &quot;onerror&quot;) {
-                                $implIncludes{&quot;JSErrorHandler.h&quot;} = 1;
-                                push(@implContent, &quot;    impl.set$implSetterFunctionName(createJSErrorHandler(exec, value, castedThis));\n&quot;);
-                            } else {
-                                push(@implContent, GenerateAttributeEventListenerCall($className, $implSetterFunctionName, $windowEventListener));
-                            }
-                        } elsif ($attribute-&gt;signature-&gt;type =~ /Constructor$/) {
-                            my $constructorType = $attribute-&gt;signature-&gt;type;
-                            $constructorType =~ s/Constructor$//;
-                            # $constructorType ~= /Constructor$/ indicates that it is NamedConstructor.
-                            # We do not generate the header file for NamedConstructor of class XXXX,
-                            # since we generate the NamedConstructor declaration into the header file of class XXXX.
-                            if ($constructorType ne &quot;any&quot; and $constructorType !~ /Named$/) {
-                                AddToImplIncludes(&quot;JS&quot; . $constructorType . &quot;.h&quot;, $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;});
-                            }
-                            push(@implContent, &quot;    // Shadowing a built-in constructor\n&quot;);
-                            if ($interfaceName eq &quot;DOMWindow&quot; &amp;&amp; $className eq &quot;JSblah&quot;) {
-                                # FIXME: This branch never executes and should be removed.
-                                push(@implContent, &quot;    castedThis-&gt;putDirect(exec-&gt;vm(), exec-&gt;propertyNames().constructor, value);\n&quot;);
-                            } else {
-                                push(@implContent, &quot;    castedThis-&gt;putDirect(exec-&gt;vm(), Identifier(exec, \&quot;$name\&quot;), value);\n&quot;);
-                            }
-                        } elsif ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Replaceable&quot;}) {
-                            push(@implContent, &quot;    // Shadowing a built-in object\n&quot;);
-                            push(@implContent, &quot;    castedThis-&gt;putDirect(exec-&gt;vm(), Identifier(exec, \&quot;$name\&quot;), value);\n&quot;);
-                        } else {
-                            if (!$attribute-&gt;isStatic) {
-                                push(@implContent, &quot;    $implType&amp; impl = castedThis-&gt;impl();\n&quot;);
-                            }
-                            push(@implContent, &quot;    ExceptionCode ec = 0;\n&quot;) if $setterRaisesException;
</del><ins>+                    push(@implContent, &quot;    &quot; . GetNativeTypeFromSignature($attribute-&gt;signature) . &quot; nativeValue(&quot; . JSValueToNative($attribute-&gt;signature, &quot;value&quot;) . &quot;);\n&quot;);
+                    push(@implContent, &quot;    if (exec-&gt;hadException())\n&quot;);
+                    push(@implContent, &quot;        return;\n&quot;);
</ins><span class="cx"> 
</span><del>-                            # If the &quot;StrictTypeChecking&quot; extended attribute is present, and the attribute's type is an
-                            # interface type, then if the incoming value does not implement that interface, a TypeError
-                            # is thrown rather than silently passing NULL to the C++ code.
-                            # Per the Web IDL and ECMAScript specifications, incoming values can always be converted to
-                            # both strings and numbers, so do not throw TypeError if the attribute is of these types.
-                            if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;StrictTypeChecking&quot;}) {
-                                $implIncludes{&quot;&lt;runtime/Error.h&gt;&quot;} = 1;
</del><ins>+                    if ($codeGenerator-&gt;IsEnumType($type)) {
+                        my @enumValues = $codeGenerator-&gt;ValidEnumValues($type);
+                        my @enumChecks = ();
+                        foreach my $enumValue (@enumValues) {
+                            push(@enumChecks, &quot;nativeValue != \&quot;$enumValue\&quot;&quot;);
+                        }
+                        push (@implContent, &quot;    if (&quot; . join(&quot; &amp;&amp; &quot;, @enumChecks) . &quot;)\n&quot;);
+                        push (@implContent, &quot;        return;\n&quot;);
+                    }
</ins><span class="cx"> 
</span><del>-                                my $argType = $attribute-&gt;signature-&gt;type;
-                                if ($codeGenerator-&gt;IsWrapperType($argType)) {
-                                    push(@implContent, &quot;    if (!value.isUndefinedOrNull() &amp;&amp; !value.inherits(JS${argType}::info())) {\n&quot;);
-                                    push(@implContent, &quot;        throwVMTypeError(exec);\n&quot;);
-                                    push(@implContent, &quot;        return;\n&quot;);
-                                    push(@implContent, &quot;    };\n&quot;);
-                                }
-                            }
-
-                            push(@implContent, &quot;    &quot; . GetNativeTypeFromSignature($attribute-&gt;signature) . &quot; nativeValue(&quot; . JSValueToNative($attribute-&gt;signature, &quot;value&quot;) . &quot;);\n&quot;);
-                            push(@implContent, &quot;    if (exec-&gt;hadException())\n&quot;);
</del><ins>+                    if ($svgPropertyOrListPropertyType) {
+                        if ($svgPropertyType) {
+                            push(@implContent, &quot;    if (impl.isReadOnly()) {\n&quot;);
+                            push(@implContent, &quot;        setDOMException(exec, NO_MODIFICATION_ALLOWED_ERR);\n&quot;);
</ins><span class="cx">                             push(@implContent, &quot;        return;\n&quot;);
</span><del>-
-                            if ($codeGenerator-&gt;IsEnumType($type)) {
-                                my @enumValues = $codeGenerator-&gt;ValidEnumValues($type);
-                                my @enumChecks = ();
-                                foreach my $enumValue (@enumValues) {
-                                    push(@enumChecks, &quot;nativeValue != \&quot;$enumValue\&quot;&quot;);
-                                }
-                                push (@implContent, &quot;    if (&quot; . join(&quot; &amp;&amp; &quot;, @enumChecks) . &quot;)\n&quot;);
-                                push (@implContent, &quot;        return;\n&quot;);
-                            }
-
-                            if ($svgPropertyOrListPropertyType) {
-                                if ($svgPropertyType) {
-                                    push(@implContent, &quot;    if (impl.isReadOnly()) {\n&quot;);
-                                    push(@implContent, &quot;        setDOMException(exec, NO_MODIFICATION_ALLOWED_ERR);\n&quot;);
-                                    push(@implContent, &quot;        return;\n&quot;);
-                                    push(@implContent, &quot;    }\n&quot;);
-                                    $implIncludes{&quot;ExceptionCode.h&quot;} = 1;
-                                }
-                                push(@implContent, &quot;    $svgPropertyOrListPropertyType&amp; podImpl = impl.propertyReference();\n&quot;);
-                                if ($svgPropertyOrListPropertyType eq &quot;float&quot;) { # Special case for JSSVGNumber
-                                    push(@implContent, &quot;    podImpl = nativeValue;\n&quot;);
-                                } else {
-                                    push(@implContent, &quot;    podImpl.set$implSetterFunctionName(nativeValue&quot;);
-                                    push(@implContent, &quot;, ec&quot;) if $setterRaisesException;
-                                    push(@implContent, &quot;);\n&quot;);
-                                    push(@implContent, &quot;    setDOMException(exec, ec);\n&quot;) if $setterRaisesException;
-                                }
-                                if ($svgPropertyType) {
-                                    if ($setterRaisesException) {
-                                        push(@implContent, &quot;    if (!ec)\n&quot;);
-                                        push(@implContent, &quot;        impl.commitChange();\n&quot;);
-                                    } else {
-                                        push(@implContent, &quot;    impl.commitChange();\n&quot;);
-                                    }
-                                }
</del><ins>+                            push(@implContent, &quot;    }\n&quot;);
+                            $implIncludes{&quot;ExceptionCode.h&quot;} = 1;
+                        }
+                        push(@implContent, &quot;    $svgPropertyOrListPropertyType&amp; podImpl = impl.propertyReference();\n&quot;);
+                        if ($svgPropertyOrListPropertyType eq &quot;float&quot;) { # Special case for JSSVGNumber
+                            push(@implContent, &quot;    podImpl = nativeValue;\n&quot;);
+                        } else {
+                            push(@implContent, &quot;    podImpl.set$implSetterFunctionName(nativeValue&quot;);
+                            push(@implContent, &quot;, ec&quot;) if $setterRaisesException;
+                            push(@implContent, &quot;);\n&quot;);
+                            push(@implContent, &quot;    setDOMException(exec, ec);\n&quot;) if $setterRaisesException;
+                        }
+                        if ($svgPropertyType) {
+                            if ($setterRaisesException) {
+                                push(@implContent, &quot;    if (!ec)\n&quot;);
+                                push(@implContent, &quot;        impl.commitChange();\n&quot;);
</ins><span class="cx">                             } else {
</span><del>-                                my ($functionName, @arguments) = $codeGenerator-&gt;SetterExpression(\%implIncludes, $interfaceName, $attribute);
-                                if ($codeGenerator-&gt;IsTypedArrayType($attribute-&gt;signature-&gt;type) and not $attribute-&gt;signature-&gt;type eq &quot;ArrayBuffer&quot;) {
-                                    push(@arguments, &quot;nativeValue.get()&quot;);
-                                } else {
-                                    push(@arguments, &quot;nativeValue&quot;);
-                                }
-                                if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;}) {
-                                    my $implementedBy = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;};
-                                    $implIncludes{&quot;${implementedBy}.h&quot;} = 1;
-                                    unshift(@arguments, &quot;&amp;impl&quot;) if !$attribute-&gt;isStatic;
-                                    $functionName = &quot;${implementedBy}::${functionName}&quot;;
-                                } elsif ($attribute-&gt;isStatic) {
-                                    $functionName = &quot;${interfaceName}::${functionName}&quot;;
-                                } else {
-                                    $functionName = &quot;impl.${functionName}&quot;;
-                                }
-
-                                unshift(@arguments, GenerateCallWith($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CallWith&quot;}, \@implContent, &quot;&quot;));
-
-                                push(@arguments, &quot;ec&quot;) if $setterRaisesException;
-                                push(@implContent, &quot;    ${functionName}(&quot; . join(&quot;, &quot;, @arguments) . &quot;);\n&quot;);
-                                push(@implContent, &quot;    setDOMException(exec, ec);\n&quot;) if $setterRaisesException;
</del><ins>+                                push(@implContent, &quot;    impl.commitChange();\n&quot;);
</ins><span class="cx">                             }
</span><span class="cx">                         }
</span><ins>+                    } else {
+                        my ($functionName, @arguments) = $codeGenerator-&gt;SetterExpression(\%implIncludes, $interfaceName, $attribute);
+                        if ($codeGenerator-&gt;IsTypedArrayType($attribute-&gt;signature-&gt;type) and not $attribute-&gt;signature-&gt;type eq &quot;ArrayBuffer&quot;) {
+                            push(@arguments, &quot;nativeValue.get()&quot;);
+                        } else {
+                            push(@arguments, &quot;nativeValue&quot;);
+                        }
+                        if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;}) {
+                            my $implementedBy = $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;ImplementedBy&quot;};
+                            $implIncludes{&quot;${implementedBy}.h&quot;} = 1;
+                            unshift(@arguments, &quot;&amp;impl&quot;) if !$attribute-&gt;isStatic;
+                            $functionName = &quot;${implementedBy}::${functionName}&quot;;
+                        } elsif ($attribute-&gt;isStatic) {
+                            $functionName = &quot;${interfaceName}::${functionName}&quot;;
+                        } else {
+                            $functionName = &quot;impl.${functionName}&quot;;
+                        }
</ins><span class="cx"> 
</span><del>-                        push(@implContent, &quot;}\n\n&quot;);
-                        push(@implContent, &quot;#endif\n&quot;) if $attributeConditionalString;
-                        push(@implContent, &quot;\n&quot;);
</del><ins>+                        unshift(@arguments, GenerateCallWith($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CallWith&quot;}, \@implContent, &quot;&quot;));
+
+                        push(@arguments, &quot;ec&quot;) if $setterRaisesException;
+                        push(@implContent, &quot;    ${functionName}(&quot; . join(&quot;, &quot;, @arguments) . &quot;);\n&quot;);
+                        push(@implContent, &quot;    setDOMException(exec, ec);\n&quot;) if $setterRaisesException;
</ins><span class="cx">                     }
</span><span class="cx">                 }
</span><del>-            }
-        }
</del><span class="cx"> 
</span><del>-        if ($interface-&gt;extendedAttributes-&gt;{&quot;ReplaceableConstructor&quot;}) {
-            my $constructorFunctionName = &quot;setJS&quot; . $interfaceName . &quot;Constructor&quot;;
-
-            push(@implContent, &quot;void ${constructorFunctionName}(ExecState* exec, JSObject*, EncodedJSValue thisValue, EncodedJSValue encodedValue)\n&quot;);
-            push(@implContent, &quot;{\n&quot;);
-            push(@implContent, &quot;    JSValue value = JSValue::decode(encodedValue);&quot;);
-            push(@implContent, &quot;    ${className}* castedThis = jsDynamicCast&lt;${className}*&gt;(JSValue::decode(thisValue));\n&quot;);
-            if ($interfaceName eq &quot;DOMWindow&quot;) {
-                push(@implContent, &quot;    if (!castedThis) {\n&quot;);
-                push(@implContent, &quot;        if (JSDOMWindowShell* shell = jsDynamicCast&lt;JSDOMWindowShell*&gt;(JSValue::decode(thisValue)))\n&quot;);
-                push(@implContent, &quot;            castedThis = shell-&gt;window();\n&quot;);
-                push(@implContent, &quot;    }\n&quot;);
</del><ins>+                push(@implContent, &quot;}\n\n&quot;);
+                push(@implContent, &quot;#endif\n&quot;) if $attributeConditionalString;
+                push(@implContent, &quot;\n&quot;);
</ins><span class="cx">             }
</span><del>-            push(@implContent, &quot;    if (!castedThis) {\n&quot;);
-            push(@implContent, &quot;        throwVMTypeError(exec);\n&quot;);
-            push(@implContent, &quot;        return;\n&quot;);
-            push(@implContent, &quot;    }\n&quot;);
-            if ($interface-&gt;extendedAttributes-&gt;{&quot;CheckSecurity&quot;}) {
-                if ($interfaceName eq &quot;DOMWindow&quot;) {
-                    push(@implContent, &quot;    if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis-&gt;impl()))\n&quot;);
-                } else {
-                    push(@implContent, &quot;    if (!shouldAllowAccessToFrame(exec, castedThis-&gt;impl().frame()))\n&quot;);
-                }
-                push(@implContent, &quot;        return;\n&quot;);
-            }
-
-            push(@implContent, &quot;    // Shadowing a built-in constructor\n&quot;);
-
-            if ($interfaceName eq &quot;DOMWindow&quot;) {
-                push(@implContent, &quot;    castedThis-&gt;putDirect(exec-&gt;vm(), exec-&gt;propertyNames().constructor, value);\n&quot;);
-            } else {
-                die &quot;No way to handle interface with ReplaceableConstructor extended attribute: $interfaceName&quot;;
-            }
-            push(@implContent, &quot;}\n\n&quot;);
</del><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestActiveDOMObjectTableValues[] =
</span><span class="cx"> {
</span><del>-    { &quot;excitingAttr&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestActiveDOMObjectExcitingAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;excitingAttr&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestActiveDOMObjectExcitingAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</ins><span class="cx">     { &quot;constructor&quot;, DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestActiveDOMObjectConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 }
</span><span class="cx"> };
</span><span class="lines">@@ -145,13 +145,11 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestActiveDOMObjectConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestActiveDOMObjectConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestActiveDOMObject* domObject = jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, domObject-&gt;impl()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     return JSValue::encode(JSTestActiveDOMObject::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -144,13 +144,11 @@
</span><span class="cx">     return Base::getOwnPropertySlotByIndex(thisObject, exec, index, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestCustomNamedGetterConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestCustomNamedGetterConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestCustomNamedGetter* domObject = jsDynamicCast&lt;JSTestCustomNamedGetter*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestCustomNamedGetter::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -36,8 +36,8 @@
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestEventConstructorTableValues[] =
</span><span class="cx"> {
</span><del>-    { &quot;attr1&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestEventConstructorAttr1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;attr2&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestEventConstructorAttr2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;attr1&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestEventConstructorAttr1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;attr2&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestEventConstructorAttr2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</ins><span class="cx">     { &quot;constructor&quot;, DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestEventConstructorConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 }
</span><span class="cx"> };
</span><span class="lines">@@ -193,13 +193,11 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestEventConstructorConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestEventConstructorConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestEventConstructor* domObject = jsDynamicCast&lt;JSTestEventConstructor*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestEventConstructor::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -169,13 +169,11 @@
</span><span class="cx">     return Base::getOwnPropertySlotByIndex(thisObject, exec, index, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestEventTargetConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestEventTargetConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestEventTarget* domObject = jsDynamicCast&lt;JSTestEventTarget*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestEventTarget::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</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 (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestExceptionTableValues[] =
</span><span class="cx"> {
</span><del>-    { &quot;name&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestExceptionName), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;name&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestExceptionName), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</ins><span class="cx">     { &quot;constructor&quot;, DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestExceptionConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 }
</span><span class="cx"> };
</span><span class="lines">@@ -133,13 +133,11 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestExceptionConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestExceptionConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestException* domObject = jsDynamicCast&lt;JSTestException*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestException::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -117,13 +117,11 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestGenerateIsReachable, Base&gt;(exec, JSTestGenerateIsReachableTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestGenerateIsReachableConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestGenerateIsReachableConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestGenerateIsReachable* domObject = jsDynamicCast&lt;JSTestGenerateIsReachable*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestGenerateIsReachable::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -52,28 +52,28 @@
</span><span class="cx"> static const HashTableValue JSTestInterfaceTableValues[] =
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-    { &quot;implementsStr1&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceImplementsStr1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;implementsStr1&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceImplementsStr1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-    { &quot;implementsStr2&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceImplementsStr2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceImplementsStr2) },
</del><ins>+    { &quot;implementsStr2&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceImplementsStr2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceImplementsStr2) },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-    { &quot;implementsStr3&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceImplementsStr3), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceImplementsStr3) },
</del><ins>+    { &quot;implementsStr3&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceImplementsStr3), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceImplementsStr3) },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-    { &quot;implementsNode&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceImplementsNode), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceImplementsNode) },
</del><ins>+    { &quot;implementsNode&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceImplementsNode), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceImplementsNode) },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-    { &quot;supplementalStr1&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSupplementalStr1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;supplementalStr1&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSupplementalStr1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-    { &quot;supplementalStr2&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSupplementalStr2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceSupplementalStr2) },
</del><ins>+    { &quot;supplementalStr2&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSupplementalStr2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceSupplementalStr2) },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-    { &quot;supplementalStr3&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSupplementalStr3), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceSupplementalStr3) },
</del><ins>+    { &quot;supplementalStr3&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSupplementalStr3), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceSupplementalStr3) },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-    { &quot;supplementalNode&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSupplementalNode), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceSupplementalNode) },
</del><ins>+    { &quot;supplementalNode&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceSupplementalNode), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestInterfaceSupplementalNode) },
</ins><span class="cx"> #endif
</span><span class="cx">     { &quot;constructor&quot;, DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestInterfaceConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 }
</span><span class="lines">@@ -433,13 +433,11 @@
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestInterfaceConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestInterface* domObject = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestInterface::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</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 (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -128,13 +128,11 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestMediaQueryListListener, Base&gt;(exec, JSTestMediaQueryListListenerTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestMediaQueryListListenerConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestMediaQueryListListenerConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestMediaQueryListListener* domObject = jsDynamicCast&lt;JSTestMediaQueryListListener*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestMediaQueryListListener::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -164,13 +164,11 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestNamedConstructor, Base&gt;(exec, JSTestNamedConstructorTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestNamedConstructorConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestNamedConstructorConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestNamedConstructor* domObject = jsDynamicCast&lt;JSTestNamedConstructor*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestNamedConstructor::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -121,13 +121,11 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestNode, Base&gt;(exec, JSTestNodeTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestNodeConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestNodeConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestNode* domObject = jsDynamicCast&lt;JSTestNode*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestNode::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -77,53 +77,53 @@
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestObjTableValues[] =
</span><span class="cx"> {
</span><del>-    { &quot;readOnlyLongAttr&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReadOnlyLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;readOnlyStringAttr&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReadOnlyStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;readOnlyTestObjAttr&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReadOnlyTestObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;readOnlyLongAttr&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReadOnlyLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;readOnlyStringAttr&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReadOnlyStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;readOnlyTestObjAttr&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReadOnlyTestObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</ins><span class="cx">     { &quot;TestSubObjEnabledBySetting&quot;, DontEnum, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjTestSubObjEnabledBySettingConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjTestSubObjEnabledBySettingConstructor) },
</span><del>-    { &quot;enumAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjEnumAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjEnumAttr) },
-    { &quot;byteAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjByteAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjByteAttr) },
-    { &quot;octetAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjOctetAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjOctetAttr) },
-    { &quot;shortAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjShortAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjShortAttr) },
-    { &quot;unsignedShortAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjUnsignedShortAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjUnsignedShortAttr) },
-    { &quot;longAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjLongAttr) },
-    { &quot;longLongAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjLongLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjLongLongAttr) },
-    { &quot;unsignedLongLongAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjUnsignedLongLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjUnsignedLongLongAttr) },
-    { &quot;stringAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttr) },
-    { &quot;testObjAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjTestObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjTestObjAttr) },
-    { &quot;XMLObjAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjXMLObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjXMLObjAttr) },
-    { &quot;create&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCreate), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjCreate) },
-    { &quot;reflectedStringAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedStringAttr) },
-    { &quot;reflectedIntegralAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedIntegralAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedIntegralAttr) },
-    { &quot;reflectedUnsignedIntegralAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedUnsignedIntegralAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedUnsignedIntegralAttr) },
-    { &quot;reflectedBooleanAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedBooleanAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedBooleanAttr) },
-    { &quot;reflectedURLAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedURLAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedURLAttr) },
-    { &quot;reflectedStringAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedStringAttr) },
-    { &quot;reflectedCustomIntegralAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedCustomIntegralAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedCustomIntegralAttr) },
-    { &quot;reflectedCustomBooleanAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedCustomBooleanAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedCustomBooleanAttr) },
-    { &quot;reflectedCustomURLAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedCustomURLAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedCustomURLAttr) },
-    { &quot;typedArrayAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjTypedArrayAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjTypedArrayAttr) },
-    { &quot;attrWithGetterException&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAttrWithGetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjAttrWithGetterException) },
-    { &quot;attrWithSetterException&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAttrWithSetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjAttrWithSetterException) },
-    { &quot;stringAttrWithGetterException&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttrWithGetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttrWithGetterException) },
-    { &quot;stringAttrWithSetterException&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttrWithSetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttrWithSetterException) },
-    { &quot;customAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCustomAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjCustomAttr) },
-    { &quot;withScriptStateAttribute&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptStateAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptStateAttribute) },
-    { &quot;withScriptExecutionContextAttribute&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptExecutionContextAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptExecutionContextAttribute) },
-    { &quot;withScriptStateAttributeRaises&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptStateAttributeRaises), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptStateAttributeRaises) },
-    { &quot;withScriptExecutionContextAttributeRaises&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptExecutionContextAttributeRaises), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptExecutionContextAttributeRaises) },
-    { &quot;withScriptExecutionContextAndScriptStateAttribute&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptExecutionContextAndScriptStateAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptExecutionContextAndScriptStateAttribute) },
-    { &quot;withScriptExecutionContextAndScriptStateAttributeRaises&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises) },
-    { &quot;withScriptExecutionContextAndScriptStateWithSpacesAttribute&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute) },
-    { &quot;withScriptArgumentsAndCallStackAttribute&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptArgumentsAndCallStackAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptArgumentsAndCallStackAttribute) },
</del><ins>+    { &quot;enumAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjEnumAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjEnumAttr) },
+    { &quot;byteAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjByteAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjByteAttr) },
+    { &quot;octetAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjOctetAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjOctetAttr) },
+    { &quot;shortAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjShortAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjShortAttr) },
+    { &quot;unsignedShortAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjUnsignedShortAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjUnsignedShortAttr) },
+    { &quot;longAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjLongAttr) },
+    { &quot;longLongAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjLongLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjLongLongAttr) },
+    { &quot;unsignedLongLongAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjUnsignedLongLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjUnsignedLongLongAttr) },
+    { &quot;stringAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttr) },
+    { &quot;testObjAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjTestObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjTestObjAttr) },
+    { &quot;XMLObjAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjXMLObjAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjXMLObjAttr) },
+    { &quot;create&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCreate), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjCreate) },
+    { &quot;reflectedStringAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedStringAttr) },
+    { &quot;reflectedIntegralAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedIntegralAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedIntegralAttr) },
+    { &quot;reflectedUnsignedIntegralAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedUnsignedIntegralAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedUnsignedIntegralAttr) },
+    { &quot;reflectedBooleanAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedBooleanAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedBooleanAttr) },
+    { &quot;reflectedURLAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedURLAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedURLAttr) },
+    { &quot;reflectedStringAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedStringAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedStringAttr) },
+    { &quot;reflectedCustomIntegralAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedCustomIntegralAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedCustomIntegralAttr) },
+    { &quot;reflectedCustomBooleanAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedCustomBooleanAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedCustomBooleanAttr) },
+    { &quot;reflectedCustomURLAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReflectedCustomURLAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReflectedCustomURLAttr) },
+    { &quot;typedArrayAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjTypedArrayAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjTypedArrayAttr) },
+    { &quot;attrWithGetterException&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAttrWithGetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjAttrWithGetterException) },
+    { &quot;attrWithSetterException&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAttrWithSetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjAttrWithSetterException) },
+    { &quot;stringAttrWithGetterException&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttrWithGetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttrWithGetterException) },
+    { &quot;stringAttrWithSetterException&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStringAttrWithSetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStringAttrWithSetterException) },
+    { &quot;customAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCustomAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjCustomAttr) },
+    { &quot;withScriptStateAttribute&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptStateAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptStateAttribute) },
+    { &quot;withScriptExecutionContextAttribute&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptExecutionContextAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptExecutionContextAttribute) },
+    { &quot;withScriptStateAttributeRaises&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptStateAttributeRaises), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptStateAttributeRaises) },
+    { &quot;withScriptExecutionContextAttributeRaises&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptExecutionContextAttributeRaises), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptExecutionContextAttributeRaises) },
+    { &quot;withScriptExecutionContextAndScriptStateAttribute&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptExecutionContextAndScriptStateAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptExecutionContextAndScriptStateAttribute) },
+    { &quot;withScriptExecutionContextAndScriptStateAttributeRaises&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises) },
+    { &quot;withScriptExecutionContextAndScriptStateWithSpacesAttribute&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute) },
+    { &quot;withScriptArgumentsAndCallStackAttribute&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjWithScriptArgumentsAndCallStackAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjWithScriptArgumentsAndCallStackAttribute) },
</ins><span class="cx"> #if ENABLE(Condition1)
</span><del>-    { &quot;conditionalAttr1&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConditionalAttr1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjConditionalAttr1) },
</del><ins>+    { &quot;conditionalAttr1&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConditionalAttr1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjConditionalAttr1) },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) &amp;&amp; ENABLE(Condition2)
</span><del>-    { &quot;conditionalAttr2&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConditionalAttr2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjConditionalAttr2) },
</del><ins>+    { &quot;conditionalAttr2&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConditionalAttr2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjConditionalAttr2) },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><del>-    { &quot;conditionalAttr3&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConditionalAttr3), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjConditionalAttr3) },
</del><ins>+    { &quot;conditionalAttr3&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConditionalAttr3), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjConditionalAttr3) },
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1)
</span><span class="cx">     { &quot;conditionalAttr4&quot;, DontEnum, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConditionalAttr4Constructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjConditionalAttr4Constructor) },
</span><span class="lines">@@ -134,26 +134,26 @@
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><span class="cx">     { &quot;conditionalAttr6&quot;, DontEnum, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConditionalAttr6Constructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjConditionalAttr6Constructor) },
</span><span class="cx"> #endif
</span><del>-    { &quot;cachedAttribute1&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCachedAttribute1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;cachedAttribute2&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCachedAttribute2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;anyAttribute&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAnyAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjAnyAttribute) },
-    { &quot;contentDocument&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjContentDocument), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;mutablePoint&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjMutablePoint), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjMutablePoint) },
-    { &quot;immutablePoint&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjImmutablePoint), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjImmutablePoint) },
-    { &quot;strawberry&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStrawberry), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStrawberry) },
-    { &quot;strictFloat&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStrictFloat), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStrictFloat) },
-    { &quot;description&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjDescription), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;id&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjId), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjId) },
-    { &quot;hash&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjHash), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;replaceableAttribute&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReplaceableAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReplaceableAttribute) },
-    { &quot;nullableDoubleAttribute&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableDoubleAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;nullableLongAttribute&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableLongAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;nullableBooleanAttribute&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableBooleanAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;nullableStringAttribute&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableStringAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;nullableLongSettableAttribute&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableLongSettableAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjNullableLongSettableAttribute) },
-    { &quot;nullableStringValue&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableStringValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjNullableStringValue) },
-    { &quot;attribute&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;attributeWithReservedEnumType&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAttributeWithReservedEnumType), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjAttributeWithReservedEnumType) },
</del><ins>+    { &quot;cachedAttribute1&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCachedAttribute1), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;cachedAttribute2&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjCachedAttribute2), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;anyAttribute&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAnyAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjAnyAttribute) },
+    { &quot;contentDocument&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjContentDocument), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;mutablePoint&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjMutablePoint), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjMutablePoint) },
+    { &quot;immutablePoint&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjImmutablePoint), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjImmutablePoint) },
+    { &quot;strawberry&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStrawberry), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStrawberry) },
+    { &quot;strictFloat&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjStrictFloat), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjStrictFloat) },
+    { &quot;description&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjDescription), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;id&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjId), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjId) },
+    { &quot;hash&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjHash), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;replaceableAttribute&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjReplaceableAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjReplaceableAttribute) },
+    { &quot;nullableDoubleAttribute&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableDoubleAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;nullableLongAttribute&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableLongAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;nullableBooleanAttribute&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableBooleanAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;nullableStringAttribute&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableStringAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;nullableLongSettableAttribute&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableLongSettableAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjNullableLongSettableAttribute) },
+    { &quot;nullableStringValue&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjNullableStringValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjNullableStringValue) },
+    { &quot;attribute&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAttribute), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;attributeWithReservedEnumType&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjAttributeWithReservedEnumType), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestObjAttributeWithReservedEnumType) },
</ins><span class="cx">     { &quot;constructor&quot;, DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestObjConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 }
</span><span class="cx"> };
</span><span class="lines">@@ -1307,13 +1307,11 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestObj* domObject = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestObj::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</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 (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -192,13 +192,11 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestOverloadedConstructors, Base&gt;(exec, JSTestOverloadedConstructorsTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestOverloadedConstructorsConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestOverloadedConstructorsConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestOverloadedConstructors* domObject = jsDynamicCast&lt;JSTestOverloadedConstructors*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestOverloadedConstructors::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -39,11 +39,11 @@
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestSerializedScriptValueInterfaceTableValues[] =
</span><span class="cx"> {
</span><del>-    { &quot;value&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestSerializedScriptValueInterfaceValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestSerializedScriptValueInterfaceValue) },
-    { &quot;readonlyValue&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestSerializedScriptValueInterfaceReadonlyValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;cachedValue&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestSerializedScriptValueInterfaceCachedValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestSerializedScriptValueInterfaceCachedValue) },
-    { &quot;ports&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestSerializedScriptValueInterfacePorts), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
-    { &quot;cachedReadonlyValue&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestSerializedScriptValueInterfaceCachedReadonlyValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;value&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestSerializedScriptValueInterfaceValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestSerializedScriptValueInterfaceValue) },
+    { &quot;readonlyValue&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestSerializedScriptValueInterfaceReadonlyValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;cachedValue&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestSerializedScriptValueInterfaceCachedValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestSerializedScriptValueInterfaceCachedValue) },
+    { &quot;ports&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestSerializedScriptValueInterfacePorts), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
+    { &quot;cachedReadonlyValue&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestSerializedScriptValueInterfaceCachedReadonlyValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</ins><span class="cx">     { &quot;constructor&quot;, DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestSerializedScriptValueInterfaceConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 }
</span><span class="cx"> };
</span><span class="lines">@@ -200,13 +200,11 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestSerializedScriptValueInterfaceConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfaceConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestSerializedScriptValueInterface* domObject = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestSerializedScriptValueInterface::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -47,12 +47,12 @@
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSTestTypedefsTableValues[] =
</span><span class="cx"> {
</span><del>-    { &quot;unsignedLongLongAttr&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsUnsignedLongLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestTypedefsUnsignedLongLongAttr) },
-    { &quot;immutableSerializedScriptValue&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsImmutableSerializedScriptValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestTypedefsImmutableSerializedScriptValue) },
-    { &quot;attrWithGetterException&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsAttrWithGetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestTypedefsAttrWithGetterException) },
-    { &quot;attrWithSetterException&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsAttrWithSetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestTypedefsAttrWithSetterException) },
-    { &quot;stringAttrWithGetterException&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsStringAttrWithGetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestTypedefsStringAttrWithGetterException) },
-    { &quot;stringAttrWithSetterException&quot;, DontDelete, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsStringAttrWithSetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestTypedefsStringAttrWithSetterException) },
</del><ins>+    { &quot;unsignedLongLongAttr&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsUnsignedLongLongAttr), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestTypedefsUnsignedLongLongAttr) },
+    { &quot;immutableSerializedScriptValue&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsImmutableSerializedScriptValue), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestTypedefsImmutableSerializedScriptValue) },
+    { &quot;attrWithGetterException&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsAttrWithGetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestTypedefsAttrWithGetterException) },
+    { &quot;attrWithSetterException&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsAttrWithSetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestTypedefsAttrWithSetterException) },
+    { &quot;stringAttrWithGetterException&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsStringAttrWithGetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestTypedefsStringAttrWithGetterException) },
+    { &quot;stringAttrWithSetterException&quot;, DontDelete | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsStringAttrWithSetterException), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(setJSTestTypedefsStringAttrWithSetterException) },
</ins><span class="cx">     { &quot;constructor&quot;, DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsTestTypedefsConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 }
</span><span class="cx"> };
</span><span class="lines">@@ -266,13 +266,11 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestTypedefsConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSTestTypedefs* domObject = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSTestTypedefs::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</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 (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx"> static const HashTableValue JSattributeTableValues[] =
</span><span class="cx"> {
</span><del>-    { &quot;readonly&quot;, DontDelete | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsattributeReadonly), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</del><ins>+    { &quot;readonly&quot;, DontDelete | ReadOnly | CustomAccessor, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsattributeReadonly), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</ins><span class="cx">     { &quot;constructor&quot;, DontEnum | ReadOnly, NoIntrinsic, (intptr_t)static_cast&lt;PropertySlot::GetValueFunc&gt;(jsattributeConstructor), (intptr_t) static_cast&lt;PutPropertySlot::PutValueFunc&gt;(0) },
</span><span class="cx">     { 0, 0, NoIntrinsic, 0, 0 }
</span><span class="cx"> };
</span><span class="lines">@@ -133,13 +133,11 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsattributeConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsattributeConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSattribute* domObject = jsDynamicCast&lt;JSattribute*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSattribute::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSreadonlycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp (163034 => 163035)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp        2014-01-29 20:23:00 UTC (rev 163034)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp        2014-01-29 20:33:13 UTC (rev 163035)
</span><span class="lines">@@ -117,13 +117,11 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSreadonly, Base&gt;(exec, JSreadonlyTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsreadonlyConstructor(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsreadonlyConstructor(ExecState* exec, EncodedJSValue, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSreadonly* domObject = jsDynamicCast&lt;JSreadonly*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    if (!domObject)
-        return throwVMTypeError(exec);
</del><span class="cx">     return JSValue::encode(JSreadonly::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>