<!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>[196331] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/196331">196331</a></dd>
<dt>Author</dt> <dd>barraclough@apple.com</dd>
<dt>Date</dt> <dd>2016-02-09 13:19:59 -0800 (Tue, 09 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>GetValueFunc/PutValueFunc should not take both slotBase and thisValue
https://bugs.webkit.org/show_bug.cgi?id=154009

Reviewed by Geoff Garen.

In JavaScript there are two types of properties - regular value properties, and accessor properties.
One difference between these is how they are reflected by getOwnPropertyDescriptor, and another is
what object they operate on in the case of a prototype access. If you access a value property of a
prototype object it return a value pertinent to the prototype, but in the case of a prototype object
returning an accessor, then the accessor function is applied to the base object of the access.

JSC supports special 'custom' properties implemented as a c++ callback, and these custom properties
can be used to implement either value- or accessor-like behavior. getOwnPropertyDescriptor behavior
is selected via the CustomAccessor attribute. Value- or accessor-like object selection is current
supported by passing both the slotBase and the thisValue to the callback,and hoping it uses the
right one. This is probably inefficient, bug-prone, and leads to crazy like JSBoundSlotBaseFunction.

Instead, just pass one thisValue to the callback functions, consistent with CustomAccessor.

Source/JavaScriptCore:

* API/JSCallbackObject.h:
* API/JSCallbackObjectFunctions.h:
(JSC::JSCallbackObject&lt;Parent&gt;::getStaticValue):
(JSC::JSCallbackObject&lt;Parent&gt;::staticFunctionGetter):
(JSC::JSCallbackObject&lt;Parent&gt;::callbackGetter):
    - Merged slotBase &amp; thisValue to custom property callbacks.
* bytecode/PolymorphicAccess.cpp:
(JSC::AccessCase::generate):
    - Modified the call being JIT generated - GetValueFunc/PutValueFunc now only take 3,
      rather than 4 arguments. Selects which one to keep/drop based on access type.
(WTF::printInternal):
* bytecode/PolymorphicAccess.h:
(JSC::AccessCase::isGet):
(JSC::AccessCase::isPut):
(JSC::AccessCase::isIn):
(JSC::AccessCase::doesCalls):
(JSC::AccessCase::isGetter):
* bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeForStubInfo):
* jit/Repatch.cpp:
(JSC::tryCacheGetByID):
(JSC::tryCachePutByID):
    - Split the CustomGetter/Setter access types into Value/Accessor variants.
* jsc.cpp:
(WTF::CustomGetter::getOwnPropertySlot):
(WTF::CustomGetter::customGetter):
(WTF::RuntimeArray::RuntimeArray):
(WTF::RuntimeArray::lengthGetter):
    - Merged slotBase &amp; thisValue to custom property callbacks.
* runtime/CustomGetterSetter.cpp:
(JSC::callCustomSetter):
    - Pass 3 arguments when calling PutValueFunc.
* runtime/CustomGetterSetter.h:
* runtime/JSBoundSlotBaseFunction.cpp:
(JSC::boundSlotBaseFunctionCall):
(JSC::JSBoundSlotBaseFunction::JSBoundSlotBaseFunction):
* runtime/JSCJSValue.cpp:
(JSC::JSValue::putToPrimitive):
    - callCustomSetter currently takes a flag to distinguish value/accessor calls.
* runtime/JSFunction.cpp:
(JSC::retrieveArguments):
(JSC::JSFunction::argumentsGetter):
(JSC::retrieveCallerFunction):
(JSC::JSFunction::callerGetter):
(JSC::JSFunction::lengthGetter):
(JSC::JSFunction::nameGetter):
* runtime/JSFunction.h:
* runtime/JSModuleNamespaceObject.cpp:
(JSC::JSModuleNamespaceObject::visitChildren):
(JSC::callbackGetter):
    - Merged slotBase &amp; thisValue to custom property callbacks.
* runtime/JSObject.cpp:
(JSC::JSObject::putInlineSlow):
    - callCustomSetter currently takes a flag to distinguish value/accessor calls.
* runtime/Lookup.h:
(JSC::putEntry):
    - split PutPropertySlot setCustom into Value/Accessor variants.
* runtime/PropertySlot.cpp:
(JSC::PropertySlot::functionGetter):
(JSC::PropertySlot::customGetter):
* runtime/PropertySlot.h:
(JSC::PropertySlot::PropertySlot):
(JSC::PropertySlot::getValue):
    - added customGetter helper to call GetValueFunc.
* runtime/PutPropertySlot.h:
(JSC::PutPropertySlot::PutPropertySlot):
(JSC::PutPropertySlot::setNewProperty):
(JSC::PutPropertySlot::setCustomValue):
(JSC::PutPropertySlot::setCustomAccessor):
(JSC::PutPropertySlot::setThisValue):
(JSC::PutPropertySlot::customSetter):
(JSC::PutPropertySlot::context):
(JSC::PutPropertySlot::isStrictMode):
(JSC::PutPropertySlot::isCacheablePut):
(JSC::PutPropertySlot::isCacheableSetter):
(JSC::PutPropertySlot::isCacheableCustom):
(JSC::PutPropertySlot::isCustomAccessor):
(JSC::PutPropertySlot::isInitialization):
(JSC::PutPropertySlot::cachedOffset):
(JSC::PutPropertySlot::setCustomProperty): Deleted.
    - split PutPropertySlot setCustom into Value/Accessor variants.
* runtime/RegExpConstructor.cpp:
(JSC::RegExpConstructor::getOwnPropertySlot):
(JSC::regExpConstructorDollar1):
(JSC::regExpConstructorDollar2):
(JSC::regExpConstructorDollar3):
(JSC::regExpConstructorDollar4):
(JSC::regExpConstructorDollar5):
(JSC::regExpConstructorDollar6):
(JSC::regExpConstructorDollar7):
(JSC::regExpConstructorDollar8):
(JSC::regExpConstructorDollar9):
(JSC::regExpConstructorInput):
(JSC::regExpConstructorMultiline):
(JSC::regExpConstructorLastMatch):
(JSC::regExpConstructorLastParen):
(JSC::regExpConstructorLeftContext):
(JSC::regExpConstructorRightContext):
(JSC::setRegExpConstructorInput):
(JSC::setRegExpConstructorMultiline):
* runtime/RegExpObject.cpp:
(JSC::RegExpObject::defineOwnProperty):
(JSC::regExpObjectSetLastIndexStrict):
(JSC::regExpObjectSetLastIndexNonStrict):
(JSC::RegExpObject::put):
    - Merged slotBase &amp; thisValue to custom property callbacks.

Source/WebCore:

* bindings/js/JSDOMBinding.cpp:
(WebCore::printErrorMessageForFrame):
(WebCore::objectToStringFunctionGetter):
* bindings/js/JSDOMBinding.h:
(WebCore::propertyNameToString):
(WebCore::getStaticValueSlotEntryWithoutCaching&lt;JSDOMObject&gt;):
(WebCore::nonCachingStaticFunctionGetter):
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::visitAdditionalChildren):
(WebCore::childFrameGetter):
(WebCore::namedItemGetter):
(WebCore::jsDOMWindowWebKit):
(WebCore::jsDOMWindowIndexedDB):
    - add missing null check, in case indexDB acessor is applied to non-window object.
* bindings/js/JSPluginElementFunctions.cpp:
(WebCore::pluginScriptObject):
(WebCore::pluginElementPropertyGetter):
* bindings/js/JSPluginElementFunctions.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateImplementation):
* bridge/runtime_array.cpp:
(JSC::RuntimeArray::destroy):
(JSC::RuntimeArray::lengthGetter):
* bridge/runtime_array.h:
* bridge/runtime_method.cpp:
(JSC::RuntimeMethod::finishCreation):
(JSC::RuntimeMethod::lengthGetter):
* bridge/runtime_method.h:
* bridge/runtime_object.cpp:
(JSC::Bindings::RuntimeObject::invalidate):
(JSC::Bindings::RuntimeObject::fallbackObjectGetter):
(JSC::Bindings::RuntimeObject::fieldGetter):
(JSC::Bindings::RuntimeObject::methodGetter):
* bridge/runtime_object.h:
    - Merged slotBase &amp; thisValue to custom property callbacks.

Source/WebKit2:

* WebProcess/Plugins/Netscape/JSNPObject.cpp:
(WebKit::JSNPObject::getOwnPropertyNames):
(WebKit::JSNPObject::propertyGetter):
(WebKit::JSNPObject::methodGetter):
* WebProcess/Plugins/Netscape/JSNPObject.h:
    - Merged slotBase &amp; thisValue to custom property callbacks.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreAPIJSCallbackObjecth">trunk/Source/JavaScriptCore/API/JSCallbackObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSCallbackObjectFunctionsh">trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodePolymorphicAccesscpp">trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodePolymorphicAccessh">trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodePutByIdStatuscpp">trunk/Source/JavaScriptCore/bytecode/PutByIdStatus.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitCCallHelpersh">trunk/Source/JavaScriptCore/jit/CCallHelpers.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitRepatchcpp">trunk/Source/JavaScriptCore/jit/Repatch.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejsccpp">trunk/Source/JavaScriptCore/jsc.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCustomGetterSettercpp">trunk/Source/JavaScriptCore/runtime/CustomGetterSetter.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCustomGetterSetterh">trunk/Source/JavaScriptCore/runtime/CustomGetterSetter.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSBoundSlotBaseFunctioncpp">trunk/Source/JavaScriptCore/runtime/JSBoundSlotBaseFunction.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCJSValuecpp">trunk/Source/JavaScriptCore/runtime/JSCJSValue.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSFunctioncpp">trunk/Source/JavaScriptCore/runtime/JSFunction.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSFunctionh">trunk/Source/JavaScriptCore/runtime/JSFunction.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSModuleNamespaceObjectcpp">trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSObjectcpp">trunk/Source/JavaScriptCore/runtime/JSObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeLookuph">trunk/Source/JavaScriptCore/runtime/Lookup.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertySlotcpp">trunk/Source/JavaScriptCore/runtime/PropertySlot.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertySloth">trunk/Source/JavaScriptCore/runtime/PropertySlot.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePutPropertySloth">trunk/Source/JavaScriptCore/runtime/PutPropertySlot.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeRegExpConstructorcpp">trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeRegExpObjectcpp">trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingcpp">trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingh">trunk/Source/WebCore/bindings/js/JSDOMBinding.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSPluginElementFunctionscpp">trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSPluginElementFunctionsh">trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.h</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="#trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.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="#trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.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="#trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministiccpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.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="#trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.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>
<li><a href="#trunkSourceWebCorebridgeruntime_arraycpp">trunk/Source/WebCore/bridge/runtime_array.cpp</a></li>
<li><a href="#trunkSourceWebCorebridgeruntime_arrayh">trunk/Source/WebCore/bridge/runtime_array.h</a></li>
<li><a href="#trunkSourceWebCorebridgeruntime_methodcpp">trunk/Source/WebCore/bridge/runtime_method.cpp</a></li>
<li><a href="#trunkSourceWebCorebridgeruntime_methodh">trunk/Source/WebCore/bridge/runtime_method.h</a></li>
<li><a href="#trunkSourceWebCorebridgeruntime_objectcpp">trunk/Source/WebCore/bridge/runtime_object.cpp</a></li>
<li><a href="#trunkSourceWebCorebridgeruntime_objecth">trunk/Source/WebCore/bridge/runtime_object.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsNetscapeJSNPObjectcpp">trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsNetscapeJSNPObjecth">trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreAPIJSCallbackObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSCallbackObject.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSCallbackObject.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/API/JSCallbackObject.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -211,8 +211,8 @@
</span><span class="cx">     static EncodedJSValue JSC_HOST_CALL construct(ExecState*);
</span><span class="cx">    
</span><span class="cx">     JSValue getStaticValue(ExecState*, PropertyName);
</span><del>-    static EncodedJSValue staticFunctionGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-    static EncodedJSValue callbackGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
</del><ins>+    static EncodedJSValue staticFunctionGetter(ExecState*, EncodedJSValue, PropertyName);
+    static EncodedJSValue callbackGetter(ExecState*, EncodedJSValue, PropertyName);
</ins><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;JSCallbackObjectData&gt; m_callbackObjectData;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSCallbackObjectFunctionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -600,9 +600,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;class Parent&gt;
</span><del>-EncodedJSValue JSCallbackObject&lt;Parent&gt;::staticFunctionGetter(ExecState* exec, JSObject* slotParent, EncodedJSValue, PropertyName propertyName)
</del><ins>+EncodedJSValue JSCallbackObject&lt;Parent&gt;::staticFunctionGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSCallbackObject* thisObj = asCallbackObject(slotParent);
</del><ins>+    JSCallbackObject* thisObj = asCallbackObject(thisValue);
</ins><span class="cx">     
</span><span class="cx">     // Check for cached or override property.
</span><span class="cx">     PropertySlot slot2(thisObj);
</span><span class="lines">@@ -628,9 +628,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;class Parent&gt;
</span><del>-EncodedJSValue JSCallbackObject&lt;Parent&gt;::callbackGetter(ExecState* exec, JSObject* slotParent, EncodedJSValue, PropertyName propertyName)
</del><ins>+EncodedJSValue JSCallbackObject&lt;Parent&gt;::callbackGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSCallbackObject* thisObj = asCallbackObject(slotParent);
</del><ins>+    JSCallbackObject* thisObj = asCallbackObject(thisValue);
</ins><span class="cx">     
</span><span class="cx">     JSObjectRef thisRef = toRef(thisObj);
</span><span class="cx">     RefPtr&lt;OpaqueJSString&gt; propertyNameRef;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/ChangeLog        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -1,3 +1,131 @@
</span><ins>+2016-02-07  Gavin Barraclough  &lt;barraclough@apple.com&gt;
+
+        GetValueFunc/PutValueFunc should not take both slotBase and thisValue
+        https://bugs.webkit.org/show_bug.cgi?id=154009
+
+        Reviewed by Geoff Garen.
+
+        In JavaScript there are two types of properties - regular value properties, and accessor properties.
+        One difference between these is how they are reflected by getOwnPropertyDescriptor, and another is
+        what object they operate on in the case of a prototype access. If you access a value property of a
+        prototype object it return a value pertinent to the prototype, but in the case of a prototype object
+        returning an accessor, then the accessor function is applied to the base object of the access.
+
+        JSC supports special 'custom' properties implemented as a c++ callback, and these custom properties
+        can be used to implement either value- or accessor-like behavior. getOwnPropertyDescriptor behavior
+        is selected via the CustomAccessor attribute. Value- or accessor-like object selection is current
+        supported by passing both the slotBase and the thisValue to the callback,and hoping it uses the
+        right one. This is probably inefficient, bug-prone, and leads to crazy like JSBoundSlotBaseFunction.
+
+        Instead, just pass one thisValue to the callback functions, consistent with CustomAccessor.
+
+        * API/JSCallbackObject.h:
+        * API/JSCallbackObjectFunctions.h:
+        (JSC::JSCallbackObject&lt;Parent&gt;::getStaticValue):
+        (JSC::JSCallbackObject&lt;Parent&gt;::staticFunctionGetter):
+        (JSC::JSCallbackObject&lt;Parent&gt;::callbackGetter):
+            - Merged slotBase &amp; thisValue to custom property callbacks.
+        * bytecode/PolymorphicAccess.cpp:
+        (JSC::AccessCase::generate):
+            - Modified the call being JIT generated - GetValueFunc/PutValueFunc now only take 3,
+              rather than 4 arguments. Selects which one to keep/drop based on access type.
+        (WTF::printInternal):
+        * bytecode/PolymorphicAccess.h:
+        (JSC::AccessCase::isGet):
+        (JSC::AccessCase::isPut):
+        (JSC::AccessCase::isIn):
+        (JSC::AccessCase::doesCalls):
+        (JSC::AccessCase::isGetter):
+        * bytecode/PutByIdStatus.cpp:
+        (JSC::PutByIdStatus::computeForStubInfo):
+        * jit/Repatch.cpp:
+        (JSC::tryCacheGetByID):
+        (JSC::tryCachePutByID):
+            - Split the CustomGetter/Setter access types into Value/Accessor variants.
+        * jsc.cpp:
+        (WTF::CustomGetter::getOwnPropertySlot):
+        (WTF::CustomGetter::customGetter):
+        (WTF::RuntimeArray::RuntimeArray):
+        (WTF::RuntimeArray::lengthGetter):
+            - Merged slotBase &amp; thisValue to custom property callbacks.
+        * runtime/CustomGetterSetter.cpp:
+        (JSC::callCustomSetter):
+            - Pass 3 arguments when calling PutValueFunc.
+        * runtime/CustomGetterSetter.h:
+        * runtime/JSBoundSlotBaseFunction.cpp:
+        (JSC::boundSlotBaseFunctionCall):
+        (JSC::JSBoundSlotBaseFunction::JSBoundSlotBaseFunction):
+        * runtime/JSCJSValue.cpp:
+        (JSC::JSValue::putToPrimitive):
+            - callCustomSetter currently takes a flag to distinguish value/accessor calls.
+        * runtime/JSFunction.cpp:
+        (JSC::retrieveArguments):
+        (JSC::JSFunction::argumentsGetter):
+        (JSC::retrieveCallerFunction):
+        (JSC::JSFunction::callerGetter):
+        (JSC::JSFunction::lengthGetter):
+        (JSC::JSFunction::nameGetter):
+        * runtime/JSFunction.h:
+        * runtime/JSModuleNamespaceObject.cpp:
+        (JSC::JSModuleNamespaceObject::visitChildren):
+        (JSC::callbackGetter):
+            - Merged slotBase &amp; thisValue to custom property callbacks.
+        * runtime/JSObject.cpp:
+        (JSC::JSObject::putInlineSlow):
+            - callCustomSetter currently takes a flag to distinguish value/accessor calls.
+        * runtime/Lookup.h:
+        (JSC::putEntry):
+            - split PutPropertySlot setCustom into Value/Accessor variants.
+        * runtime/PropertySlot.cpp:
+        (JSC::PropertySlot::functionGetter):
+        (JSC::PropertySlot::customGetter):
+        * runtime/PropertySlot.h:
+        (JSC::PropertySlot::PropertySlot):
+        (JSC::PropertySlot::getValue):
+            - added customGetter helper to call GetValueFunc.
+        * runtime/PutPropertySlot.h:
+        (JSC::PutPropertySlot::PutPropertySlot):
+        (JSC::PutPropertySlot::setNewProperty):
+        (JSC::PutPropertySlot::setCustomValue):
+        (JSC::PutPropertySlot::setCustomAccessor):
+        (JSC::PutPropertySlot::setThisValue):
+        (JSC::PutPropertySlot::customSetter):
+        (JSC::PutPropertySlot::context):
+        (JSC::PutPropertySlot::isStrictMode):
+        (JSC::PutPropertySlot::isCacheablePut):
+        (JSC::PutPropertySlot::isCacheableSetter):
+        (JSC::PutPropertySlot::isCacheableCustom):
+        (JSC::PutPropertySlot::isCustomAccessor):
+        (JSC::PutPropertySlot::isInitialization):
+        (JSC::PutPropertySlot::cachedOffset):
+        (JSC::PutPropertySlot::setCustomProperty): Deleted.
+            - split PutPropertySlot setCustom into Value/Accessor variants.
+        * runtime/RegExpConstructor.cpp:
+        (JSC::RegExpConstructor::getOwnPropertySlot):
+        (JSC::regExpConstructorDollar1):
+        (JSC::regExpConstructorDollar2):
+        (JSC::regExpConstructorDollar3):
+        (JSC::regExpConstructorDollar4):
+        (JSC::regExpConstructorDollar5):
+        (JSC::regExpConstructorDollar6):
+        (JSC::regExpConstructorDollar7):
+        (JSC::regExpConstructorDollar8):
+        (JSC::regExpConstructorDollar9):
+        (JSC::regExpConstructorInput):
+        (JSC::regExpConstructorMultiline):
+        (JSC::regExpConstructorLastMatch):
+        (JSC::regExpConstructorLastParen):
+        (JSC::regExpConstructorLeftContext):
+        (JSC::regExpConstructorRightContext):
+        (JSC::setRegExpConstructorInput):
+        (JSC::setRegExpConstructorMultiline):
+        * runtime/RegExpObject.cpp:
+        (JSC::RegExpObject::defineOwnProperty):
+        (JSC::regExpObjectSetLastIndexStrict):
+        (JSC::regExpObjectSetLastIndexNonStrict):
+        (JSC::RegExpObject::put):
+            - Merged slotBase &amp; thisValue to custom property callbacks.
+
</ins><span class="cx"> 2016-02-09  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Spread expressions are not fair game for direct binding
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodePolymorphicAccesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -523,8 +523,10 @@
</span><span class="cx">     case Load:
</span><span class="cx">     case Getter:
</span><span class="cx">     case Setter:
</span><del>-    case CustomGetter:
-    case CustomSetter: {
</del><ins>+    case CustomValueGetter:
+    case CustomAccessorGetter:
+    case CustomValueSetter:
+    case CustomAccessorSetter: {
</ins><span class="cx">         if (isValidOffset(m_offset)) {
</span><span class="cx">             Structure* currStructure;
</span><span class="cx">             if (m_conditionSet.isEmpty())
</span><span class="lines">@@ -553,7 +555,7 @@
</span><span class="cx">             baseForAccessGPR = baseForGetGPR;
</span><span class="cx"> 
</span><span class="cx">         GPRReg loadedValueGPR = InvalidGPRReg;
</span><del>-        if (m_type != CustomGetter &amp;&amp; m_type != CustomSetter) {
</del><ins>+        if (m_type != CustomValueGetter &amp;&amp; m_type != CustomAccessorGetter &amp;&amp; m_type != CustomValueSetter &amp;&amp; m_type != CustomAccessorSetter) {
</ins><span class="cx">             if (m_type == Load)
</span><span class="cx">                 loadedValueGPR = valueRegs.payloadGPR();
</span><span class="cx">             else
</span><span class="lines">@@ -750,24 +752,26 @@
</span><span class="cx">             if (needsToMakeRoomOnStackForCCall)
</span><span class="cx">                 jit.makeSpaceOnStackForCCall();
</span><span class="cx"> 
</span><del>-            // getter: EncodedJSValue (*GetValueFunc)(ExecState*, JSObject* slotBase, EncodedJSValue thisValue, PropertyName);
-            // setter: void (*PutValueFunc)(ExecState*, JSObject* base, EncodedJSValue thisObject, EncodedJSValue value);
</del><ins>+            // getter: EncodedJSValue (*GetValueFunc)(ExecState*, EncodedJSValue thisValue, PropertyName);
+            // setter: void (*PutValueFunc)(ExecState*, EncodedJSValue thisObject, EncodedJSValue value);
+            // Custom values are passed the slotBase (the property holder), custom accessors are passed the thisVaule (reciever).
+            GPRReg baseForCustomValue = m_type == CustomValueGetter || m_type == CustomValueSetter ? baseForAccessGPR : baseForGetGPR;
</ins><span class="cx"> #if USE(JSVALUE64)
</span><del>-            if (m_type == CustomGetter) {
</del><ins>+            if (m_type == CustomValueGetter || m_type == CustomAccessorGetter) {
</ins><span class="cx">                 jit.setupArgumentsWithExecState(
</span><del>-                    baseForAccessGPR, baseForGetGPR,
</del><ins>+                    baseForCustomValue,
</ins><span class="cx">                     CCallHelpers::TrustedImmPtr(ident.impl()));
</span><span class="cx">             } else
</span><del>-                jit.setupArgumentsWithExecState(baseForAccessGPR, baseForGetGPR, valueRegs.gpr());
</del><ins>+                jit.setupArgumentsWithExecState(baseForCustomValue, valueRegs.gpr());
</ins><span class="cx"> #else
</span><del>-            if (m_type == CustomGetter) {
</del><ins>+            if (m_type == CustomValueGetter || m_type == CustomAccessorGetter) {
</ins><span class="cx">                 jit.setupArgumentsWithExecState(
</span><del>-                    baseForAccessGPR, baseForGetGPR,
</del><ins>+                    baseForCustomValue,
</ins><span class="cx">                     CCallHelpers::TrustedImm32(JSValue::CellTag),
</span><span class="cx">                     CCallHelpers::TrustedImmPtr(ident.impl()));
</span><span class="cx">             } else {
</span><span class="cx">                 jit.setupArgumentsWithExecState(
</span><del>-                    baseForAccessGPR, baseForGetGPR,
</del><ins>+                    baseForCustomValue,
</ins><span class="cx">                     CCallHelpers::TrustedImm32(JSValue::CellTag),
</span><span class="cx">                     valueRegs.payloadGPR(), valueRegs.tagGPR());
</span><span class="cx">             }
</span><span class="lines">@@ -775,7 +779,7 @@
</span><span class="cx">             jit.storePtr(GPRInfo::callFrameRegister, &amp;vm.topCallFrame);
</span><span class="cx"> 
</span><span class="cx">             operationCall = jit.call();
</span><del>-            if (m_type == CustomGetter)
</del><ins>+            if (m_type == CustomValueGetter || m_type == CustomAccessorGetter)
</ins><span class="cx">                 jit.setupResults(valueRegs);
</span><span class="cx">             if (needsToMakeRoomOnStackForCCall)
</span><span class="cx">                 jit.reclaimSpaceOnStackForCCall();
</span><span class="lines">@@ -1418,12 +1422,18 @@
</span><span class="cx">     case AccessCase::Setter:
</span><span class="cx">         out.print(&quot;Setter&quot;);
</span><span class="cx">         return;
</span><del>-    case AccessCase::CustomGetter:
-        out.print(&quot;CustomGetter&quot;);
</del><ins>+    case AccessCase::CustomValueGetter:
+        out.print(&quot;CustomValueGetter&quot;);
</ins><span class="cx">         return;
</span><del>-    case AccessCase::CustomSetter:
-        out.print(&quot;CustomSetter&quot;);
</del><ins>+    case AccessCase::CustomAccessorGetter:
+        out.print(&quot;CustomAccessorGetter&quot;);
</ins><span class="cx">         return;
</span><ins>+    case AccessCase::CustomValueSetter:
+        out.print(&quot;CustomValueSetter&quot;);
+        return;
+    case AccessCase::CustomAccessorSetter:
+        out.print(&quot;CustomAccessorSetter&quot;);
+        return;
</ins><span class="cx">     case AccessCase::IntrinsicGetter:
</span><span class="cx">         out.print(&quot;IntrinsicGetter&quot;);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodePolymorphicAccessh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -58,8 +58,10 @@
</span><span class="cx">         Miss,
</span><span class="cx">         Getter,
</span><span class="cx">         Setter,
</span><del>-        CustomGetter,
-        CustomSetter,
</del><ins>+        CustomValueGetter,
+        CustomAccessorGetter,
+        CustomValueSetter,
+        CustomAccessorSetter,
</ins><span class="cx">         IntrinsicGetter,
</span><span class="cx">         InHit,
</span><span class="cx">         InMiss,
</span><span class="lines">@@ -73,14 +75,16 @@
</span><span class="cx">         case Transition:
</span><span class="cx">         case Replace:
</span><span class="cx">         case Setter:
</span><del>-        case CustomSetter:
</del><ins>+        case CustomValueSetter:
+        case CustomAccessorSetter:
</ins><span class="cx">         case InHit:
</span><span class="cx">         case InMiss:
</span><span class="cx">             return false;
</span><span class="cx">         case Load:
</span><span class="cx">         case Miss:
</span><span class="cx">         case Getter:
</span><del>-        case CustomGetter:
</del><ins>+        case CustomValueGetter:
+        case CustomAccessorGetter:
</ins><span class="cx">         case IntrinsicGetter:
</span><span class="cx">         case ArrayLength:
</span><span class="cx">         case StringLength:
</span><span class="lines">@@ -94,7 +98,8 @@
</span><span class="cx">         case Load:
</span><span class="cx">         case Miss:
</span><span class="cx">         case Getter:
</span><del>-        case CustomGetter:
</del><ins>+        case CustomValueGetter:
+        case CustomAccessorGetter:
</ins><span class="cx">         case IntrinsicGetter:
</span><span class="cx">         case InHit:
</span><span class="cx">         case InMiss:
</span><span class="lines">@@ -104,7 +109,8 @@
</span><span class="cx">         case Transition:
</span><span class="cx">         case Replace:
</span><span class="cx">         case Setter:
</span><del>-        case CustomSetter:
</del><ins>+        case CustomValueSetter:
+        case CustomAccessorSetter:
</ins><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -115,12 +121,14 @@
</span><span class="cx">         case Load:
</span><span class="cx">         case Miss:
</span><span class="cx">         case Getter:
</span><del>-        case CustomGetter:
</del><ins>+        case CustomValueGetter:
+        case CustomAccessorGetter:
</ins><span class="cx">         case IntrinsicGetter:
</span><span class="cx">         case Transition:
</span><span class="cx">         case Replace:
</span><span class="cx">         case Setter:
</span><del>-        case CustomSetter:
</del><ins>+        case CustomValueSetter:
+        case CustomAccessorSetter:
</ins><span class="cx">         case ArrayLength:
</span><span class="cx">         case StringLength:
</span><span class="cx">             return false;
</span><span class="lines">@@ -208,8 +216,10 @@
</span><span class="cx">         switch (type()) {
</span><span class="cx">         case Getter:
</span><span class="cx">         case Setter:
</span><del>-        case CustomGetter:
-        case CustomSetter:
</del><ins>+        case CustomValueGetter:
+        case CustomAccessorGetter:
+        case CustomValueSetter:
+        case CustomAccessorSetter:
</ins><span class="cx">             return true;
</span><span class="cx">         default:
</span><span class="cx">             return false;
</span><span class="lines">@@ -220,7 +230,8 @@
</span><span class="cx">     {
</span><span class="cx">         switch (type()) {
</span><span class="cx">         case Getter:
</span><del>-        case CustomGetter:
</del><ins>+        case CustomValueGetter:
+        case CustomAccessorGetter:
</ins><span class="cx">             return true;
</span><span class="cx">         default:
</span><span class="cx">             return false;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodePutByIdStatuscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/PutByIdStatus.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/PutByIdStatus.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/bytecode/PutByIdStatus.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -238,7 +238,8 @@
</span><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="cx">                 
</span><del>-            case AccessCase::CustomSetter:
</del><ins>+            case AccessCase::CustomValueSetter:
+            case AccessCase::CustomAccessorSetter:
</ins><span class="cx">                 return PutByIdStatus(MakesCalls);
</span><span class="cx"> 
</span><span class="cx">             default:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitCCallHelpersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/CCallHelpers.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/CCallHelpers.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/jit/CCallHelpers.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -678,6 +678,16 @@
</span><span class="cx">         addCallArgument(arg4);
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, TrustedImm32 arg2, GPRReg arg3, GPRReg arg4)
+    {
+        resetCallArguments();
+        addCallArgument(GPRInfo::callFrameRegister);
+        addCallArgument(arg1);
+        addCallArgument(arg2);
+        addCallArgument(arg3);
+        addCallArgument(arg4);
+    }
+    
</ins><span class="cx">     ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, GPRReg arg3, GPRReg arg4, GPRReg arg5)
</span><span class="cx">     {
</span><span class="cx">         resetCallArguments();
</span><span class="lines">@@ -1678,6 +1688,12 @@
</span><span class="cx">         setupArgumentsWithExecState(arg1, arg2, arg3);
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, TrustedImm32 arg2, GPRReg arg3, GPRReg arg4)
+    {
+        poke(arg4, POKE_ARGUMENT_OFFSET);
+        setupArgumentsWithExecState(arg1, arg2, arg3);
+    }
+
</ins><span class="cx">     ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, TrustedImm32 arg3, GPRReg arg4, GPRReg arg5)
</span><span class="cx">     {
</span><span class="cx">         poke(arg5, POKE_ARGUMENT_OFFSET + 1);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitRepatchcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/Repatch.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/Repatch.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/jit/Repatch.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -303,8 +303,10 @@
</span><span class="cx">                 type = AccessCase::Miss;
</span><span class="cx">             else if (slot.isCacheableGetter())
</span><span class="cx">                 type = AccessCase::Getter;
</span><ins>+            else if (slot.attributes() &amp; CustomAccessor)
+                type = AccessCase::CustomAccessorGetter;
</ins><span class="cx">             else
</span><del>-                type = AccessCase::CustomGetter;
</del><ins>+                type = AccessCase::CustomValueGetter;
</ins><span class="cx"> 
</span><span class="cx">             newCase = AccessCase::get(
</span><span class="cx">                 vm, codeBlock, type, offset, structure, conditionSet, loadTargetFromProxy,
</span><span class="lines">@@ -434,7 +436,7 @@
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             newCase = AccessCase::setter(
</span><del>-                vm, codeBlock, AccessCase::CustomSetter, structure, invalidOffset, conditionSet,
</del><ins>+                vm, codeBlock, slot.isCustomAccessor() ? AccessCase::CustomAccessorSetter : AccessCase::CustomValueSetter, structure, invalidOffset, conditionSet,
</ins><span class="cx">                 slot.customSetter(), slot.base());
</span><span class="cx">         } else {
</span><span class="cx">             ObjectPropertyConditionSet conditionSet;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejsccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jsc.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jsc.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/jsc.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -349,7 +349,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    static EncodedJSValue customGetter(ExecState* exec, JSObject*, EncodedJSValue thisValue, PropertyName)
</del><ins>+    static EncodedJSValue customGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx">     {
</span><span class="cx">         CustomGetter* thisObject = jsDynamicCast&lt;CustomGetter*&gt;(JSValue::decode(thisValue));
</span><span class="cx">         if (!thisObject)
</span><span class="lines">@@ -454,7 +454,7 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    static EncodedJSValue lengthGetter(ExecState* exec, JSObject*, EncodedJSValue thisValue, PropertyName)
</del><ins>+    static EncodedJSValue lengthGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx">     {
</span><span class="cx">         RuntimeArray* thisObject = jsDynamicCast&lt;RuntimeArray*&gt;(JSValue::decode(thisValue));
</span><span class="cx">         if (!thisObject)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCustomGetterSettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CustomGetterSetter.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CustomGetterSetter.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/CustomGetterSetter.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #include &quot;CustomGetterSetter.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSCJSValueInlines.h&quot;
</span><ins>+#include &quot;JSObject.h&quot;
</ins><span class="cx"> #include &quot;SlotVisitorInlines.h&quot;
</span><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -36,12 +37,14 @@
</span><span class="cx"> 
</span><span class="cx"> const ClassInfo CustomGetterSetter::s_info = { &quot;CustomGetterSetter&quot;, 0, 0, CREATE_METHOD_TABLE(CustomGetterSetter) };
</span><span class="cx"> 
</span><del>-void callCustomSetter(ExecState* exec, JSValue customGetterSetter, JSObject* base, JSValue thisValue, JSValue value)
</del><ins>+void callCustomSetter(ExecState* exec, JSValue customGetterSetter, bool isAccessor, JSObject* base, JSValue thisValue, JSValue value)
</ins><span class="cx"> {
</span><span class="cx">     CustomGetterSetter::CustomSetter setter = jsCast&lt;CustomGetterSetter*&gt;(customGetterSetter)-&gt;setter();
</span><span class="cx">     if (!setter)
</span><span class="cx">         return;
</span><del>-    setter(exec, base, JSValue::encode(thisValue), JSValue::encode(value));
</del><ins>+    if (!isAccessor)
+        thisValue = base;
+    setter(exec, JSValue::encode(thisValue), JSValue::encode(value));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCustomGetterSetterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CustomGetterSetter.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CustomGetterSetter.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/CustomGetterSetter.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx">     CustomSetter m_setter;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-JS_EXPORT_PRIVATE void callCustomSetter(ExecState*, JSValue customGetterSetter, JSObject* base, JSValue thisValue, JSValue value);
</del><ins>+JS_EXPORT_PRIVATE void callCustomSetter(ExecState*, JSValue customGetterSetter, bool isAccessor, JSObject* slotBase, JSValue thisValue, JSValue);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSBoundSlotBaseFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSBoundSlotBaseFunction.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSBoundSlotBaseFunction.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/JSBoundSlotBaseFunction.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx">     CustomGetterSetter* customGetterSetter = boundSlotBaseFunction-&gt;customGetterSetter();
</span><span class="cx"> 
</span><span class="cx">     if (boundSlotBaseFunction-&gt;isSetter()) {
</span><del>-        callCustomSetter(exec, customGetterSetter, baseObject, exec-&gt;thisValue(), exec-&gt;argument(0));
</del><ins>+        callCustomSetter(exec, customGetterSetter, true, baseObject, exec-&gt;thisValue(), exec-&gt;argument(0));
</ins><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx"> 
</span><span class="cx">     const String&amp; name = boundSlotBaseFunction-&gt;name(exec);
</span><del>-    return getter(exec, baseObject, JSValue::encode(exec-&gt;thisValue()), PropertyName(Identifier::fromString(exec, name)));
</del><ins>+    return getter(exec, JSValue::encode(exec-&gt;thisValue()), PropertyName(Identifier::fromString(exec, name)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSBoundSlotBaseFunction::JSBoundSlotBaseFunction(VM&amp; vm, JSGlobalObject* globalObject, Structure* structure, const Type type)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCJSValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSCJSValue.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCJSValue.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/JSCJSValue.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -169,7 +169,7 @@
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             if (gs.isCustomGetterSetter()) {
</span><del>-                callCustomSetter(exec, gs, obj, slot.thisValue(), value);
</del><ins>+                callCustomSetter(exec, gs, attributes &amp; CustomAccessor, obj, slot.thisValue(), value);
</ins><span class="cx">                 return;
</span><span class="cx">             }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSFunction.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSFunction.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/JSFunction.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -269,9 +269,9 @@
</span><span class="cx">     return functor.result();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JSFunction::argumentsGetter(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue JSFunction::argumentsGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(slotBase);
</del><ins>+    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     ASSERT(!thisObj-&gt;isHostFunction());
</span><span class="cx"> 
</span><span class="cx">     return JSValue::encode(retrieveArguments(exec, thisObj));
</span><span class="lines">@@ -324,9 +324,9 @@
</span><span class="cx">     return functor.result();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JSFunction::callerGetter(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue JSFunction::callerGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(slotBase);
</del><ins>+    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     ASSERT(!thisObj-&gt;isHostFunction());
</span><span class="cx">     JSValue caller = retrieveCallerFunction(exec, thisObj);
</span><span class="cx"> 
</span><span class="lines">@@ -343,16 +343,16 @@
</span><span class="cx">     return JSValue::encode(throwTypeError(exec, ASCIILiteral(&quot;Function.caller used to retrieve strict caller&quot;)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JSFunction::lengthGetter(ExecState*, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue JSFunction::lengthGetter(ExecState*, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(slotBase);
</del><ins>+    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     ASSERT(!thisObj-&gt;isHostFunction());
</span><span class="cx">     return JSValue::encode(jsNumber(thisObj-&gt;jsExecutable()-&gt;parameterCount()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JSFunction::nameGetter(ExecState*, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue JSFunction::nameGetter(ExecState*, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(slotBase);
</del><ins>+    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     ASSERT(!thisObj-&gt;isHostFunction());
</span><span class="cx">     return JSValue::encode(thisObj-&gt;jsExecutable()-&gt;nameValue());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSFunctionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSFunction.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSFunction.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/JSFunction.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -189,10 +189,10 @@
</span><span class="cx">     
</span><span class="cx">     friend class LLIntOffsetsExtractor;
</span><span class="cx"> 
</span><del>-    static EncodedJSValue argumentsGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-    static EncodedJSValue callerGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-    static EncodedJSValue lengthGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-    static EncodedJSValue nameGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
</del><ins>+    static EncodedJSValue argumentsGetter(ExecState*, EncodedJSValue, PropertyName);
+    static EncodedJSValue callerGetter(ExecState*, EncodedJSValue, PropertyName);
+    static EncodedJSValue lengthGetter(ExecState*, EncodedJSValue, PropertyName);
+    static EncodedJSValue nameGetter(ExecState*, EncodedJSValue, PropertyName);
</ins><span class="cx"> 
</span><span class="cx">     WriteBarrier&lt;ExecutableBase&gt; m_executable;
</span><span class="cx">     WriteBarrier&lt;FunctionRareData&gt; m_rareData;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSModuleNamespaceObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -95,7 +95,7 @@
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_moduleRecord);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue callbackGetter(ExecState* exec, JSObject*, EncodedJSValue thisValue, PropertyName propertyName)
</del><ins>+static EncodedJSValue callbackGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSModuleNamespaceObject* thisObject = jsCast&lt;JSModuleNamespaceObject*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     JSModuleRecord* moduleRecord = thisObject-&gt;moduleRecord();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -400,8 +400,11 @@
</span><span class="cx">                 return;
</span><span class="cx">             }
</span><span class="cx">             if (gs.isCustomGetterSetter()) {
</span><del>-                callCustomSetter(exec, gs, obj, slot.thisValue(), value);
-                slot.setCustomProperty(obj, jsCast&lt;CustomGetterSetter*&gt;(gs.asCell())-&gt;setter());
</del><ins>+                callCustomSetter(exec, gs, attributes &amp; CustomAccessor, obj, slot.thisValue(), value);
+                if (attributes &amp; CustomAccessor)
+                    slot.setCustomAccessor(obj, jsCast&lt;CustomGetterSetter*&gt;(gs.asCell())-&gt;setter());
+                else
+                    slot.setCustomValue(obj, jsCast&lt;CustomGetterSetter*&gt;(gs.asCell())-&gt;setter());
</ins><span class="cx">                 return;
</span><span class="cx">             }
</span><span class="cx">             ASSERT(!(attributes &amp; Accessor));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeLookuph"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Lookup.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Lookup.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/Lookup.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -276,8 +276,12 @@
</span><span class="cx">         if (slot.isStrictMode())
</span><span class="cx">             throwTypeError(exec, StrictModeReadonlyPropertyWriteError);
</span><span class="cx">     } else if (!(entry-&gt;attributes() &amp; ReadOnly)) {
</span><del>-        entry-&gt;propertyPutter()(exec, base, JSValue::encode(slot.thisValue()), JSValue::encode(value));
-        slot.setCustomProperty(base, entry-&gt;propertyPutter());
</del><ins>+        JSValue thisValue = entry-&gt;attributes() &amp; CustomAccessor ? slot.thisValue() : JSValue(base);
+        entry-&gt;propertyPutter()(exec, JSValue::encode(thisValue), JSValue::encode(value));
+        if (entry-&gt;attributes() &amp; CustomAccessor)
+            slot.setCustomAccessor(base, entry-&gt;propertyPutter());
+        else
+            slot.setCustomValue(base, entry-&gt;propertyPutter());
</ins><span class="cx">     } else if (slot.isStrictMode())
</span><span class="cx">         throwTypeError(exec, StrictModeReadonlyPropertyWriteError);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertySlotcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertySlot.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertySlot.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/PropertySlot.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -23,6 +23,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><span class="cx"> #include &quot;JSCJSValueInlines.h&quot;
</span><ins>+#include &quot;JSObject.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><span class="lines">@@ -32,4 +33,10 @@
</span><span class="cx">     return callGetter(exec, m_thisValue, m_data.getter.getterSetter);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+JSValue PropertySlot::customGetter(ExecState* exec, PropertyName propertyName) const
+{
+    JSValue thisValue = m_attributes &amp; CustomAccessor ? m_thisValue : JSValue(slotBase());
+    return JSValue::decode(m_data.custom.getValue(exec, JSValue::encode(thisValue), propertyName));
+}
+
</ins><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertySloth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertySlot.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertySlot.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/PropertySlot.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    typedef EncodedJSValue (*GetValueFunc)(ExecState*, JSObject* slotBase, EncodedJSValue thisValue, PropertyName);
</del><ins>+    typedef EncodedJSValue (*GetValueFunc)(ExecState*, EncodedJSValue thisValue, PropertyName);
</ins><span class="cx"> 
</span><span class="cx">     JSValue getValue(ExecState*, PropertyName) const;
</span><span class="cx">     JSValue getValue(ExecState*, unsigned propertyName) const;
</span><span class="lines">@@ -249,6 +249,7 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     JS_EXPORT_PRIVATE JSValue functionGetter(ExecState*) const;
</span><ins>+    JS_EXPORT_PRIVATE JSValue customGetter(ExecState*, PropertyName) const;
</ins><span class="cx"> 
</span><span class="cx">     unsigned m_attributes;
</span><span class="cx">     union {
</span><span class="lines">@@ -275,7 +276,7 @@
</span><span class="cx">         return JSValue::decode(m_data.value);
</span><span class="cx">     if (m_propertyType == TypeGetter)
</span><span class="cx">         return functionGetter(exec);
</span><del>-    return JSValue::decode(m_data.custom.getValue(exec, slotBase(), JSValue::encode(m_thisValue), propertyName));
</del><ins>+    return customGetter(exec, propertyName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ALWAYS_INLINE JSValue PropertySlot::getValue(ExecState* exec, unsigned propertyName) const
</span><span class="lines">@@ -284,7 +285,7 @@
</span><span class="cx">         return JSValue::decode(m_data.value);
</span><span class="cx">     if (m_propertyType == TypeGetter)
</span><span class="cx">         return functionGetter(exec);
</span><del>-    return JSValue::decode(m_data.custom.getValue(exec, slotBase(), JSValue::encode(m_thisValue), Identifier::from(exec, propertyName)));
</del><ins>+    return customGetter(exec, Identifier::from(exec, propertyName));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePutPropertySloth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PutPropertySlot.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PutPropertySlot.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/PutPropertySlot.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -38,9 +38,9 @@
</span><span class="cx">     
</span><span class="cx"> class PutPropertySlot {
</span><span class="cx"> public:
</span><del>-    enum Type { Uncachable, ExistingProperty, NewProperty, SetterProperty, CustomProperty };
</del><ins>+    enum Type { Uncachable, ExistingProperty, NewProperty, SetterProperty, CustomValue, CustomAccessor };
</ins><span class="cx">     enum Context { UnknownContext, PutById, PutByIdEval };
</span><del>-    typedef void (*PutValueFunc)(ExecState*, JSObject* base, EncodedJSValue thisObject, EncodedJSValue value);
</del><ins>+    typedef void (*PutValueFunc)(ExecState*, EncodedJSValue thisObject, EncodedJSValue value);
</ins><span class="cx"> 
</span><span class="cx">     PutPropertySlot(JSValue thisValue, bool isStrictMode = false, Context context = UnknownContext, bool isInitialization = false)
</span><span class="cx">         : m_type(Uncachable)
</span><span class="lines">@@ -68,13 +68,20 @@
</span><span class="cx">         m_offset = offset;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void setCustomProperty(JSObject* base, PutValueFunc function)
</del><ins>+    void setCustomValue(JSObject* base, PutValueFunc function)
</ins><span class="cx">     {
</span><del>-        m_type = CustomProperty;
</del><ins>+        m_type = CustomValue;
</ins><span class="cx">         m_base = base;
</span><span class="cx">         m_putFunction = function;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    void setCustomAccessor(JSObject* base, PutValueFunc function)
+    {
+        m_type = CustomAccessor;
+        m_base = base;
+        m_putFunction = function;
+    }
+
</ins><span class="cx">     void setCacheableSetter(JSObject* base, PropertyOffset offset)
</span><span class="cx">     {
</span><span class="cx">         m_type = SetterProperty;
</span><span class="lines">@@ -87,7 +94,11 @@
</span><span class="cx">         m_thisValue = thisValue;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    PutValueFunc customSetter() const { return m_putFunction; }
</del><ins>+    PutValueFunc customSetter() const
+    {
+        ASSERT(isCacheableCustom());
+        return m_putFunction;
+    }
</ins><span class="cx"> 
</span><span class="cx">     Context context() const { return static_cast&lt;Context&gt;(m_context); }
</span><span class="cx"> 
</span><span class="lines">@@ -98,7 +109,8 @@
</span><span class="cx">     bool isStrictMode() const { return m_isStrictMode; }
</span><span class="cx">     bool isCacheablePut() const { return m_type == NewProperty || m_type == ExistingProperty; }
</span><span class="cx">     bool isCacheableSetter() const { return m_type == SetterProperty; }
</span><del>-    bool isCacheableCustom() const { return m_type == CustomProperty; }
</del><ins>+    bool isCacheableCustom() const { return m_type == CustomValue || m_type == CustomAccessor; }
+    bool isCustomAccessor() const { return m_type == CustomAccessor; }
</ins><span class="cx">     bool isInitialization() const { return m_isInitialization; }
</span><span class="cx"> 
</span><span class="cx">     PropertyOffset cachedOffset() const
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -31,24 +31,24 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-static EncodedJSValue regExpConstructorInput(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorMultiline(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorLastMatch(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorLastParen(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorLeftContext(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorRightContext(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorDollar1(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorDollar2(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorDollar3(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorDollar4(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorDollar5(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorDollar6(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorDollar7(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorDollar8(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-static EncodedJSValue regExpConstructorDollar9(ExecState*, JSObject*, EncodedJSValue, PropertyName);
</del><ins>+static EncodedJSValue regExpConstructorInput(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorMultiline(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorLastMatch(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorLastParen(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorLeftContext(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorRightContext(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar1(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar2(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar3(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar4(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar5(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar6(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar7(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar8(ExecState*, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar9(ExecState*, EncodedJSValue, PropertyName);
</ins><span class="cx"> 
</span><del>-static void setRegExpConstructorInput(ExecState*, JSObject*, EncodedJSValue, EncodedJSValue);
-static void setRegExpConstructorMultiline(ExecState*, JSObject*, EncodedJSValue, EncodedJSValue);
</del><ins>+static void setRegExpConstructorInput(ExecState*, EncodedJSValue, EncodedJSValue);
+static void setRegExpConstructorMultiline(ExecState*, EncodedJSValue, EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span><span class="lines">@@ -159,90 +159,90 @@
</span><span class="cx">     return getStaticValueSlot&lt;RegExpConstructor, InternalFunction&gt;(exec, regExpConstructorTable, jsCast&lt;RegExpConstructor*&gt;(object), propertyName, slot);
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-EncodedJSValue regExpConstructorDollar1(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar1(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 1));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getBackref(exec, 1));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorDollar2(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar2(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 2));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getBackref(exec, 2));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorDollar3(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar3(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 3));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getBackref(exec, 3));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorDollar4(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar4(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 4));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getBackref(exec, 4));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorDollar5(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar5(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 5));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getBackref(exec, 5));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorDollar6(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar6(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 6));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getBackref(exec, 6));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorDollar7(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar7(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 7));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getBackref(exec, 7));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorDollar8(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar8(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 8));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getBackref(exec, 8));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorDollar9(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar9(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 9));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getBackref(exec, 9));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorInput(ExecState*, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorInput(ExecState*, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;input());
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;input());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorMultiline(ExecState*, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorMultiline(ExecState*, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(jsBoolean(asRegExpConstructor(slotBase)-&gt;multiline()));
</del><ins>+    return JSValue::encode(jsBoolean(asRegExpConstructor(JSValue::decode(thisValue))-&gt;multiline()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorLastMatch(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorLastMatch(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 0));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getBackref(exec, 0));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorLastParen(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorLastParen(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getLastParen(exec));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getLastParen(exec));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorLeftContext(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorLeftContext(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getLeftContext(exec));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getLeftContext(exec));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue regExpConstructorRightContext(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorRightContext(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getRightContext(exec));
</del><ins>+    return JSValue::encode(asRegExpConstructor(JSValue::decode(thisValue))-&gt;getRightContext(exec));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setRegExpConstructorInput(ExecState* exec, JSObject* baseObject, EncodedJSValue, EncodedJSValue value)
</del><ins>+void setRegExpConstructorInput(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue value)
</ins><span class="cx"> {
</span><del>-    if (auto constructor = jsDynamicCast&lt;RegExpConstructor*&gt;(baseObject))
</del><ins>+    if (auto constructor = jsDynamicCast&lt;RegExpConstructor*&gt;(JSValue::decode(thisValue)))
</ins><span class="cx">         constructor-&gt;setInput(exec, JSValue::decode(value).toString(exec));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setRegExpConstructorMultiline(ExecState* exec, JSObject* baseObject, EncodedJSValue, EncodedJSValue value)
</del><ins>+void setRegExpConstructorMultiline(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue value)
</ins><span class="cx"> {
</span><del>-    if (auto constructor = jsDynamicCast&lt;RegExpConstructor*&gt;(baseObject))
</del><ins>+    if (auto constructor = jsDynamicCast&lt;RegExpConstructor*&gt;(JSValue::decode(thisValue)))
</ins><span class="cx">         constructor-&gt;setMultiline(JSValue::decode(value).toBoolean(exec));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -137,21 +137,21 @@
</span><span class="cx">     return Base::defineOwnProperty(object, exec, propertyName, descriptor, shouldThrow);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void regExpObjectSetLastIndexStrict(ExecState* exec, JSObject* slotBase, EncodedJSValue, EncodedJSValue value)
</del><ins>+static void regExpObjectSetLastIndexStrict(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue value)
</ins><span class="cx"> {
</span><del>-    asRegExpObject(slotBase)-&gt;setLastIndex(exec, JSValue::decode(value), true);
</del><ins>+    asRegExpObject(JSValue::decode(thisValue))-&gt;setLastIndex(exec, JSValue::decode(value), true);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void regExpObjectSetLastIndexNonStrict(ExecState* exec, JSObject* slotBase, EncodedJSValue, EncodedJSValue value)
</del><ins>+static void regExpObjectSetLastIndexNonStrict(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue value)
</ins><span class="cx"> {
</span><del>-    asRegExpObject(slotBase)-&gt;setLastIndex(exec, JSValue::decode(value), false);
</del><ins>+    asRegExpObject(JSValue::decode(thisValue))-&gt;setLastIndex(exec, JSValue::decode(value), false);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RegExpObject::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)
</span><span class="cx"> {
</span><span class="cx">     if (propertyName == exec-&gt;propertyNames().lastIndex) {
</span><span class="cx">         asRegExpObject(cell)-&gt;setLastIndex(exec, value, slot.isStrictMode());
</span><del>-        slot.setCustomProperty(asRegExpObject(cell), slot.isStrictMode()
</del><ins>+        slot.setCustomValue(asRegExpObject(cell), slot.isStrictMode()
</ins><span class="cx">             ? regExpObjectSetLastIndexStrict
</span><span class="cx">             : regExpObjectSetLastIndexNonStrict);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/ChangeLog        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -1,3 +1,61 @@
</span><ins>+2016-02-07  Gavin Barraclough  &lt;barraclough@apple.com&gt;
+
+        GetValueFunc/PutValueFunc should not take both slotBase and thisValue
+        https://bugs.webkit.org/show_bug.cgi?id=154009
+
+        Reviewed by Geoff Garen.
+
+        In JavaScript there are two types of properties - regular value properties, and accessor properties.
+        One difference between these is how they are reflected by getOwnPropertyDescriptor, and another is
+        what object they operate on in the case of a prototype access. If you access a value property of a
+        prototype object it return a value pertinent to the prototype, but in the case of a prototype object
+        returning an accessor, then the accessor function is applied to the base object of the access.
+
+        JSC supports special 'custom' properties implemented as a c++ callback, and these custom properties
+        can be used to implement either value- or accessor-like behavior. getOwnPropertyDescriptor behavior
+        is selected via the CustomAccessor attribute. Value- or accessor-like object selection is current
+        supported by passing both the slotBase and the thisValue to the callback,and hoping it uses the
+        right one. This is probably inefficient, bug-prone, and leads to crazy like JSBoundSlotBaseFunction.
+
+        Instead, just pass one thisValue to the callback functions, consistent with CustomAccessor.
+
+        * bindings/js/JSDOMBinding.cpp:
+        (WebCore::printErrorMessageForFrame):
+        (WebCore::objectToStringFunctionGetter):
+        * bindings/js/JSDOMBinding.h:
+        (WebCore::propertyNameToString):
+        (WebCore::getStaticValueSlotEntryWithoutCaching&lt;JSDOMObject&gt;):
+        (WebCore::nonCachingStaticFunctionGetter):
+        * bindings/js/JSDOMWindowCustom.cpp:
+        (WebCore::JSDOMWindow::visitAdditionalChildren):
+        (WebCore::childFrameGetter):
+        (WebCore::namedItemGetter):
+        (WebCore::jsDOMWindowWebKit):
+        (WebCore::jsDOMWindowIndexedDB):
+            - add missing null check, in case indexDB acessor is applied to non-window object.
+        * bindings/js/JSPluginElementFunctions.cpp:
+        (WebCore::pluginScriptObject):
+        (WebCore::pluginElementPropertyGetter):
+        * bindings/js/JSPluginElementFunctions.h:
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateHeader):
+        (GenerateImplementation):
+        * bridge/runtime_array.cpp:
+        (JSC::RuntimeArray::destroy):
+        (JSC::RuntimeArray::lengthGetter):
+        * bridge/runtime_array.h:
+        * bridge/runtime_method.cpp:
+        (JSC::RuntimeMethod::finishCreation):
+        (JSC::RuntimeMethod::lengthGetter):
+        * bridge/runtime_method.h:
+        * bridge/runtime_object.cpp:
+        (JSC::Bindings::RuntimeObject::invalidate):
+        (JSC::Bindings::RuntimeObject::fallbackObjectGetter):
+        (JSC::Bindings::RuntimeObject::fieldGetter):
+        (JSC::Bindings::RuntimeObject::methodGetter):
+        * bridge/runtime_object.h:
+            - Merged slotBase &amp; thisValue to custom property callbacks.
+
</ins><span class="cx"> 2016-02-09  Jer Noble  &lt;jer.noble@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Build-fix; add Nullibility macros around previously un-macro'd class definitions.
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -334,7 +334,7 @@
</span><span class="cx">     frame-&gt;document()-&gt;domWindow()-&gt;printErrorMessage(message);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue objectToStringFunctionGetter(ExecState* exec, JSObject*, EncodedJSValue, PropertyName propertyName)
</del><ins>+EncodedJSValue objectToStringFunctionGetter(ExecState* exec, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><span class="cx">     return JSValue::encode(JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 0, propertyName.publicName(), objectProtoFuncToString));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -653,7 +653,7 @@
</span><span class="cx"> bool shouldAllowAccessToDOMWindow(JSC::ExecState*, DOMWindow&amp;, String&amp; message);
</span><span class="cx"> 
</span><span class="cx"> void printErrorMessageForFrame(Frame*, const String&amp; message);
</span><del>-JSC::EncodedJSValue objectToStringFunctionGetter(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue objectToStringFunctionGetter(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> inline String propertyNameToString(JSC::PropertyName propertyName)
</span><span class="cx"> {
</span><span class="lines">@@ -683,7 +683,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;JSC::NativeFunction nativeFunction, int length&gt;
</span><del>-JSC::EncodedJSValue nonCachingStaticFunctionGetter(JSC::ExecState* exec, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName propertyName)
</del><ins>+JSC::EncodedJSValue nonCachingStaticFunctionGetter(JSC::ExecState* exec, JSC::EncodedJSValue, JSC::PropertyName propertyName)
</ins><span class="cx"> {
</span><span class="cx">     return JSC::JSValue::encode(JSC::JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), length, propertyName.publicName(), nativeFunction));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -66,14 +66,14 @@
</span><span class="cx">         visitor.addOpaqueRoot(frame);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue childFrameGetter(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName propertyName)
</del><ins>+static EncodedJSValue childFrameGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    return JSValue::encode(toJS(exec, jsCast&lt;JSDOMWindow*&gt;(slotBase)-&gt;wrapped().frame()-&gt;tree().scopedChild(propertyNameToAtomicString(propertyName))-&gt;document()-&gt;domWindow()));
</del><ins>+    return JSValue::encode(toJS(exec, jsCast&lt;JSDOMWindow*&gt;(JSValue::decode(thisValue))-&gt;wrapped().frame()-&gt;tree().scopedChild(propertyNameToAtomicString(propertyName))-&gt;document()-&gt;domWindow()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static EncodedJSValue namedItemGetter(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName propertyName)
</del><ins>+static EncodedJSValue namedItemGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSDOMWindowBase* thisObj = jsCast&lt;JSDOMWindow*&gt;(slotBase);
</del><ins>+    JSDOMWindowBase* thisObj = jsCast&lt;JSDOMWindow*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     Document* document = thisObj-&gt;wrapped().frame()-&gt;document();
</span><span class="cx"> 
</span><span class="cx">     ASSERT(BindingSecurity::shouldAllowAccessToDOMWindow(exec, thisObj-&gt;wrapped()));
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(USER_MESSAGE_HANDLERS)
</span><del>-static EncodedJSValue jsDOMWindowWebKit(ExecState* exec, JSObject*, EncodedJSValue thisValue, PropertyName)
</del><ins>+static EncodedJSValue jsDOMWindowWebKit(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSDOMWindow* castedThis = toJSDOMWindow(JSValue::decode(thisValue));
</span><span class="cx">     if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis-&gt;wrapped()))
</span><span class="lines">@@ -103,15 +103,13 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><del>-static EncodedJSValue jsDOMWindowIndexedDB(ExecState* exec, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+static EncodedJSValue jsDOMWindowIndexedDB(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    UNUSED_PARAM(slotBase);
-    UNUSED_PARAM(thisValue);
</del><span class="cx">     auto* castedThis = toJSDOMWindow(JSValue::decode(thisValue));
</span><span class="cx">     if (!RuntimeEnabledFeatures::sharedFeatures().indexedDBEnabled())
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis-&gt;wrapped()))
</del><ins>+    if (!castedThis || !BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis-&gt;wrapped()))
</ins><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     auto&amp; impl = castedThis-&gt;wrapped();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(DOMWindowIndexedDatabase::indexedDB(&amp;impl)));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSPluginElementFunctionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx">     return instance-&gt;createRuntimeObject(exec);
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-EncodedJSValue pluginElementPropertyGetter(ExecState* exec, JSObject*, EncodedJSValue thisValue, PropertyName propertyName)
</del><ins>+EncodedJSValue pluginElementPropertyGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><span class="cx"> 
</span><span class="cx">     JSHTMLElement* thisObject = jsDynamicCast&lt;JSHTMLElement*&gt;(JSValue::decode(thisValue));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSPluginElementFunctionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -38,7 +38,8 @@
</span><span class="cx">     JSC::Bindings::Instance* pluginInstance(HTMLElement&amp;);
</span><span class="cx">     WEBCORE_EXPORT JSC::JSObject* pluginScriptObject(JSC::ExecState*, JSHTMLElement*);
</span><span class="cx"> 
</span><del>-    JSC::EncodedJSValue pluginElementPropertyGetter(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</del><ins>+    JSC::EncodedJSValue pluginElementPropertyGetter(JSC::ExecState*,
+    JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx">     bool pluginElementCustomGetOwnPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&amp;, JSHTMLElement*);
</span><span class="cx">     bool pluginElementCustomPut(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSHTMLElement*, JSC::PutPropertySlot&amp;);
</span><span class="cx">     JSC::CallType pluginElementGetCallData(JSHTMLElement*, JSC::CallData&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -1302,10 +1302,10 @@
</span><span class="cx">             my $conditionalString = $codeGenerator-&gt;GenerateConditionalString($attribute-&gt;signature);
</span><span class="cx">             push(@headerContent, &quot;#if ${conditionalString}\n&quot;) if $conditionalString;
</span><span class="cx">             my $getter = GetAttributeGetterName($interfaceName, $className, $interface, $attribute);
</span><del>-            push(@headerContent, &quot;JSC::EncodedJSValue ${getter}(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);\n&quot;);
</del><ins>+            push(@headerContent, &quot;JSC::EncodedJSValue ${getter}(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);\n&quot;);
</ins><span class="cx">             if (!IsReadonly($attribute)) {
</span><span class="cx">                 my $setter = GetAttributeSetterName($interfaceName, $className, $interface, $attribute);
</span><del>-                push(@headerContent, &quot;void ${setter}(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);\n&quot;);
</del><ins>+                push(@headerContent, &quot;void ${setter}(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);\n&quot;);
</ins><span class="cx">             }
</span><span class="cx">             push(@headerContent, &quot;#endif\n&quot;) if $conditionalString;
</span><span class="cx">         }
</span><span class="lines">@@ -1835,21 +1835,21 @@
</span><span class="cx">             my $conditionalString = $codeGenerator-&gt;GenerateConditionalString($attribute-&gt;signature);
</span><span class="cx">             push(@implContent, &quot;#if ${conditionalString}\n&quot;) if $conditionalString;
</span><span class="cx">             my $getter = GetAttributeGetterName($interfaceName, $className, $interface, $attribute);
</span><del>-            push(@implContent, &quot;JSC::EncodedJSValue ${getter}(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);\n&quot;);
</del><ins>+            push(@implContent, &quot;JSC::EncodedJSValue ${getter}(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);\n&quot;);
</ins><span class="cx">             if (!IsReadonly($attribute)) {
</span><span class="cx">                 my $setter = GetAttributeSetterName($interfaceName, $className, $interface, $attribute);
</span><del>-                push(@implContent, &quot;void ${setter}(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);\n&quot;);
</del><ins>+                push(@implContent, &quot;void ${setter}(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);\n&quot;);
</ins><span class="cx">             }
</span><span class="cx">             push(@implContent, &quot;#endif\n&quot;) if $conditionalString;
</span><span class="cx">         }
</span><span class="cx">         
</span><span class="cx">         if (NeedsConstructorProperty($interface)) {
</span><span class="cx">             my $getter = &quot;js&quot; . $interfaceName . &quot;Constructor&quot;;
</span><del>-            push(@implContent, &quot;JSC::EncodedJSValue ${getter}(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);\n&quot;);
</del><ins>+            push(@implContent, &quot;JSC::EncodedJSValue ${getter}(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);\n&quot;);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         my $constructorFunctionName = &quot;setJS&quot; . $interfaceName . &quot;Constructor&quot;;
</span><del>-        push(@implContent, &quot;void ${constructorFunctionName}(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);\n&quot;);
</del><ins>+        push(@implContent, &quot;void ${constructorFunctionName}(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);\n&quot;);
</ins><span class="cx"> 
</span><span class="cx">         push(@implContent, &quot;\n&quot;);
</span><span class="cx">     }
</span><span class="lines">@@ -2278,11 +2278,10 @@
</span><span class="cx">             my $attributeConditionalString = $codeGenerator-&gt;GenerateConditionalString($attribute-&gt;signature);
</span><span class="cx">             push(@implContent, &quot;#if ${attributeConditionalString}\n&quot;) if $attributeConditionalString;
</span><span class="cx"> 
</span><del>-            push(@implContent, &quot;EncodedJSValue ${getFunctionName}(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)\n&quot;);
</del><ins>+            push(@implContent, &quot;EncodedJSValue ${getFunctionName}(ExecState* state, EncodedJSValue thisValue, PropertyName)\n&quot;);
</ins><span class="cx">             push(@implContent, &quot;{\n&quot;);
</span><span class="cx"> 
</span><span class="cx">             push(@implContent, &quot;    UNUSED_PARAM(state);\n&quot;);
</span><del>-            push(@implContent, &quot;    UNUSED_PARAM(slotBase);\n&quot;);
</del><span class="cx">             push(@implContent, &quot;    UNUSED_PARAM(thisValue);\n&quot;);
</span><span class="cx"> 
</span><span class="cx">             if (!$attribute-&gt;isStatic || $attribute-&gt;signature-&gt;type =~ /Constructor$/) {
</span><span class="lines">@@ -2488,17 +2487,17 @@
</span><span class="cx">             my $constructorFunctionName = &quot;js&quot; . $interfaceName . &quot;Constructor&quot;;
</span><span class="cx"> 
</span><span class="cx">             if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomProxyToJSObject&quot;}) {
</span><del>-                push(@implContent, &quot;EncodedJSValue ${constructorFunctionName}(ExecState* state, JSObject*, EncodedJSValue thisValue, PropertyName)\n&quot;);
</del><ins>+                push(@implContent, &quot;EncodedJSValue ${constructorFunctionName}(ExecState* state, EncodedJSValue thisValue, PropertyName)\n&quot;);
</ins><span class="cx">                 push(@implContent, &quot;{\n&quot;);
</span><span class="cx">                 push(@implContent, &quot;    ${className}* domObject = to${className}(JSValue::decode(thisValue));\n&quot;);
</span><span class="cx">             } elsif (ConstructorShouldBeOnInstance($interface)) {
</span><del>-                push(@implContent, &quot;EncodedJSValue ${constructorFunctionName}(ExecState* state, JSObject*, EncodedJSValue thisValue, PropertyName)\n&quot;);
</del><ins>+                push(@implContent, &quot;EncodedJSValue ${constructorFunctionName}(ExecState* state, EncodedJSValue thisValue, PropertyName)\n&quot;);
</ins><span class="cx">                 push(@implContent, &quot;{\n&quot;);
</span><span class="cx">                 push(@implContent, &quot;    ${className}* domObject = &quot; . GetCastingHelperForThisObject($interface) . &quot;(JSValue::decode(thisValue));\n&quot;);
</span><span class="cx">             } else {
</span><del>-                push(@implContent, &quot;EncodedJSValue ${constructorFunctionName}(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)\n&quot;);
</del><ins>+                push(@implContent, &quot;EncodedJSValue ${constructorFunctionName}(ExecState* state, EncodedJSValue thisValue, PropertyName)\n&quot;);
</ins><span class="cx">                 push(@implContent, &quot;{\n&quot;);
</span><del>-                push(@implContent, &quot;    ${className}Prototype* domObject = jsDynamicCast&lt;${className}Prototype*&gt;(baseValue);\n&quot;);
</del><ins>+                push(@implContent, &quot;    ${className}Prototype* domObject = jsDynamicCast&lt;${className}Prototype*&gt;(JSValue::decode(thisValue));\n&quot;);
</ins><span class="cx">             }
</span><span class="cx">             push(@implContent, &quot;    if (!domObject)\n&quot;);
</span><span class="cx">             push(@implContent, &quot;        return throwVMTypeError(state);\n&quot;);
</span><span class="lines">@@ -2522,18 +2521,15 @@
</span><span class="cx"> 
</span><span class="cx">         my $constructorFunctionName = &quot;setJS&quot; . $interfaceName . &quot;Constructor&quot;;
</span><span class="cx"> 
</span><del>-        push(@implContent, &quot;void ${constructorFunctionName}(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)\n&quot;);
</del><ins>+        push(@implContent, &quot;void ${constructorFunctionName}(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)\n&quot;);
</ins><span class="cx">         push(@implContent, &quot;{\n&quot;);
</span><span class="cx">         push(@implContent, &quot;    JSValue value = JSValue::decode(encodedValue);\n&quot;);
</span><span class="cx">         if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomProxyToJSObject&quot;}) {
</span><del>-            push(@implContent, &quot;    UNUSED_PARAM(baseValue);\n&quot;);
</del><span class="cx">             push(@implContent, &quot;    ${className}* domObject = to${className}(JSValue::decode(thisValue));\n&quot;);
</span><span class="cx">         } elsif (ConstructorShouldBeOnInstance($interface)) {
</span><del>-            push(@implContent, &quot;    UNUSED_PARAM(baseValue);\n&quot;);
</del><span class="cx">             push(@implContent, &quot;    ${className}* domObject = &quot; . GetCastingHelperForThisObject($interface) . &quot;(JSValue::decode(thisValue));\n&quot;);
</span><span class="cx">         } else {
</span><del>-            push(@implContent, &quot;    UNUSED_PARAM(thisValue);\n&quot;);
-            push(@implContent, &quot;    ${className}Prototype* domObject = jsDynamicCast&lt;${className}Prototype*&gt;(baseValue);\n&quot;);
</del><ins>+            push(@implContent, &quot;    ${className}Prototype* domObject = jsDynamicCast&lt;${className}Prototype*&gt;(JSValue::decode(thisValue));\n&quot;);
</ins><span class="cx">         }
</span><span class="cx">         push(@implContent, &quot;    if (UNLIKELY(!domObject)) {\n&quot;);
</span><span class="cx">         push(@implContent, &quot;        throwVMTypeError(state);\n&quot;);
</span><span class="lines">@@ -2620,12 +2616,10 @@
</span><span class="cx">             my $attributeConditionalString = $codeGenerator-&gt;GenerateConditionalString($attribute-&gt;signature);
</span><span class="cx">             push(@implContent, &quot;#if ${attributeConditionalString}\n&quot;) if $attributeConditionalString;
</span><span class="cx"> 
</span><del>-            push(@implContent, &quot;void ${putFunctionName}(ExecState* state, JSObject* baseObject, EncodedJSValue&quot;);
-            push(@implContent, &quot; thisValue&quot;) if !$attribute-&gt;isStatic;
-            push(@implContent, &quot;, EncodedJSValue encodedValue)\n&quot;);
</del><ins>+            push(@implContent, &quot;void ${putFunctionName}(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)\n&quot;);
</ins><span class="cx">             push(@implContent, &quot;{\n&quot;);
</span><span class="cx">             push(@implContent, &quot;    JSValue value = JSValue::decode(encodedValue);\n&quot;);
</span><del>-            push(@implContent, &quot;    UNUSED_PARAM(baseObject);\n&quot;);
</del><ins>+            push(@implContent, &quot;    UNUSED_PARAM(thisValue);\n&quot;) if !$attribute-&gt;isStatic;
</ins><span class="cx">             if (!$attribute-&gt;isStatic) {
</span><span class="cx">                 if ($interface-&gt;extendedAttributes-&gt;{&quot;CustomProxyToJSObject&quot;}) {
</span><span class="cx">                     push(@implContent, &quot;    ${className}* castedThis = to${className}(JSValue::decode(thisValue));\n&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -39,9 +39,9 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestActiveDOMObjectExcitingAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestActiveDOMObjectConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestActiveDOMObjectConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestActiveDOMObjectExcitingAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestActiveDOMObjectConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestActiveDOMObjectConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestActiveDOMObjectPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -144,10 +144,9 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestActiveDOMObjectExcitingAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestActiveDOMObjectExcitingAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(decodedThisValue);
</span><span class="lines">@@ -162,7 +161,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestActiveDOMObjectConstructor(ExecState* state, JSObject*, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestActiveDOMObjectConstructor(ExecState* state, 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="lines">@@ -172,10 +171,9 @@
</span><span class="cx">     return JSValue::encode(JSTestActiveDOMObject::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestActiveDOMObjectConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestActiveDOMObjectConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseValue);
</del><span class="cx">     JSTestActiveDOMObject* domObject = jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -32,8 +32,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestClassWithJSBuiltinConstructorConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestClassWithJSBuiltinConstructorConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestClassWithJSBuiltinConstructorConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestClassWithJSBuiltinConstructorConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestClassWithJSBuiltinConstructorPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -119,19 +119,18 @@
</span><span class="cx">     thisObject-&gt;JSTestClassWithJSBuiltinConstructor::~JSTestClassWithJSBuiltinConstructor();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestClassWithJSBuiltinConstructorConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestClassWithJSBuiltinConstructorConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestClassWithJSBuiltinConstructorPrototype* domObject = jsDynamicCast&lt;JSTestClassWithJSBuiltinConstructorPrototype*&gt;(baseValue);
</del><ins>+    JSTestClassWithJSBuiltinConstructorPrototype* domObject = jsDynamicCast&lt;JSTestClassWithJSBuiltinConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestClassWithJSBuiltinConstructor::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestClassWithJSBuiltinConstructorConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestClassWithJSBuiltinConstructorConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestClassWithJSBuiltinConstructorPrototype* domObject = jsDynamicCast&lt;JSTestClassWithJSBuiltinConstructorPrototype*&gt;(baseValue);
</del><ins>+    JSTestClassWithJSBuiltinConstructorPrototype* domObject = jsDynamicCast&lt;JSTestClassWithJSBuiltinConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -31,8 +31,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestCustomConstructorWithNoInterfaceObjectConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestCustomConstructorWithNoInterfaceObjectConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestCustomConstructorWithNoInterfaceObjectConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestCustomConstructorWithNoInterfaceObjectConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestCustomConstructorWithNoInterfaceObjectPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -113,9 +113,9 @@
</span><span class="cx">     thisObject-&gt;JSTestCustomConstructorWithNoInterfaceObject::~JSTestCustomConstructorWithNoInterfaceObject();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestCustomConstructorWithNoInterfaceObjectConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestCustomConstructorWithNoInterfaceObjectConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicCast&lt;JSTestCustomConstructorWithNoInterfaceObjectPrototype*&gt;(baseValue);
</del><ins>+    JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicCast&lt;JSTestCustomConstructorWithNoInterfaceObjectPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     JSValue constructor = JSTestCustomConstructorWithNoInterfaceObjectConstructor::create(state-&gt;vm(), JSTestCustomConstructorWithNoInterfaceObjectConstructor::createStructure(state-&gt;vm(), *domObject-&gt;globalObject(), domObject-&gt;globalObject()-&gt;objectPrototype()), *jsCast&lt;JSDOMGlobalObject*&gt;(domObject-&gt;globalObject()));
</span><span class="lines">@@ -124,11 +124,10 @@
</span><span class="cx">     return JSValue::encode(constructor);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestCustomConstructorWithNoInterfaceObjectConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestCustomConstructorWithNoInterfaceObjectConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicCast&lt;JSTestCustomConstructorWithNoInterfaceObjectPrototype*&gt;(baseValue);
</del><ins>+    JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicCast&lt;JSTestCustomConstructorWithNoInterfaceObjectPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -38,8 +38,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestCustomNamedGetterConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestCustomNamedGetterConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestCustomNamedGetterConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestCustomNamedGetterConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestCustomNamedGetterPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -151,19 +151,18 @@
</span><span class="cx">     return Base::getOwnPropertySlotByIndex(thisObject, state, index, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestCustomNamedGetterConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestCustomNamedGetterConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestCustomNamedGetterPrototype* domObject = jsDynamicCast&lt;JSTestCustomNamedGetterPrototype*&gt;(baseValue);
</del><ins>+    JSTestCustomNamedGetterPrototype* domObject = jsDynamicCast&lt;JSTestCustomNamedGetterPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestCustomNamedGetter::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestCustomNamedGetterConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestCustomNamedGetterConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestCustomNamedGetterPrototype* domObject = jsDynamicCast&lt;JSTestCustomNamedGetterPrototype*&gt;(baseValue);
</del><ins>+    JSTestCustomNamedGetterPrototype* domObject = jsDynamicCast&lt;JSTestCustomNamedGetterPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -35,10 +35,10 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestEventConstructorAttr1(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestEventConstructorAttr2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestEventConstructorConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestEventConstructorConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestEventConstructorAttr1(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestEventConstructorAttr2(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestEventConstructorConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestEventConstructorConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestEventConstructorPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -156,10 +156,9 @@
</span><span class="cx">     thisObject-&gt;JSTestEventConstructor::~JSTestEventConstructor();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestEventConstructorAttr1(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestEventConstructorAttr1(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestEventConstructor*&gt;(decodedThisValue);
</span><span class="lines">@@ -172,10 +171,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestEventConstructorAttr2(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestEventConstructorAttr2(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestEventConstructor*&gt;(decodedThisValue);
</span><span class="lines">@@ -188,19 +186,18 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestEventConstructorConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestEventConstructorConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestEventConstructorPrototype* domObject = jsDynamicCast&lt;JSTestEventConstructorPrototype*&gt;(baseValue);
</del><ins>+    JSTestEventConstructorPrototype* domObject = jsDynamicCast&lt;JSTestEventConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestEventConstructor::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestEventConstructorConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestEventConstructorConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestEventConstructorPrototype* domObject = jsDynamicCast&lt;JSTestEventConstructorPrototype*&gt;(baseValue);
</del><ins>+    JSTestEventConstructorPrototype* domObject = jsDynamicCast&lt;JSTestEventConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -47,8 +47,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestEventTargetConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestEventTargetConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestEventTargetConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestEventTargetConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestEventTargetPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -167,19 +167,18 @@
</span><span class="cx">     return Base::getOwnPropertySlotByIndex(thisObject, state, index, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestEventTargetConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestEventTargetConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestEventTargetPrototype* domObject = jsDynamicCast&lt;JSTestEventTargetPrototype*&gt;(baseValue);
</del><ins>+    JSTestEventTargetPrototype* domObject = jsDynamicCast&lt;JSTestEventTargetPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestEventTarget::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestEventTargetConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestEventTargetConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestEventTargetPrototype* domObject = jsDynamicCast&lt;JSTestEventTargetPrototype*&gt;(baseValue);
</del><ins>+    JSTestEventTargetPrototype* domObject = jsDynamicCast&lt;JSTestEventTargetPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -33,9 +33,9 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestExceptionName(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestExceptionConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestExceptionConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestExceptionName(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestExceptionConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestExceptionConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestExceptionPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -134,10 +134,9 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestExceptionName(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestExceptionName(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestException*&gt;(decodedThisValue);
</span><span class="lines">@@ -150,19 +149,18 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestExceptionConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestExceptionConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestExceptionPrototype* domObject = jsDynamicCast&lt;JSTestExceptionPrototype*&gt;(baseValue);
</del><ins>+    JSTestExceptionPrototype* domObject = jsDynamicCast&lt;JSTestExceptionPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestException::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestExceptionConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestExceptionConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestExceptionPrototype* domObject = jsDynamicCast&lt;JSTestExceptionPrototype*&gt;(baseValue);
</del><ins>+    JSTestExceptionPrototype* domObject = jsDynamicCast&lt;JSTestExceptionPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -31,8 +31,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestGenerateIsReachableConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestGenerateIsReachableConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestGenerateIsReachableConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestGenerateIsReachableConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestGenerateIsReachablePrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -108,19 +108,18 @@
</span><span class="cx">     thisObject-&gt;JSTestGenerateIsReachable::~JSTestGenerateIsReachable();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestGenerateIsReachableConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestGenerateIsReachableConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestGenerateIsReachablePrototype* domObject = jsDynamicCast&lt;JSTestGenerateIsReachablePrototype*&gt;(baseValue);
</del><ins>+    JSTestGenerateIsReachablePrototype* domObject = jsDynamicCast&lt;JSTestGenerateIsReachablePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestGenerateIsReachable::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestGenerateIsReachableConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestGenerateIsReachableConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestGenerateIsReachablePrototype* domObject = jsDynamicCast&lt;JSTestGenerateIsReachablePrototype*&gt;(baseValue);
</del><ins>+    JSTestGenerateIsReachablePrototype* domObject = jsDynamicCast&lt;JSTestGenerateIsReachablePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -78,51 +78,51 @@
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::EncodedJSValue jsTestInterfaceConstructorImplementsStaticReadOnlyAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceConstructorImplementsStaticReadOnlyAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::EncodedJSValue jsTestInterfaceConstructorImplementsStaticAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestInterfaceConstructorImplementsStaticAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceConstructorImplementsStaticAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestInterfaceConstructorImplementsStaticAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::EncodedJSValue jsTestInterfaceImplementsStr1(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceImplementsStr1(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::EncodedJSValue jsTestInterfaceImplementsStr2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestInterfaceImplementsStr2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceImplementsStr2(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestInterfaceImplementsStr2(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::EncodedJSValue jsTestInterfaceImplementsStr3(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestInterfaceImplementsStr3(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceImplementsStr3(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestInterfaceImplementsStr3(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::EncodedJSValue jsTestInterfaceImplementsNode(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestInterfaceImplementsNode(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceImplementsNode(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestInterfaceImplementsNode(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::EncodedJSValue jsTestInterfaceConstructorSupplementalStaticReadOnlyAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceConstructorSupplementalStaticReadOnlyAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::EncodedJSValue jsTestInterfaceConstructorSupplementalStaticAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestInterfaceConstructorSupplementalStaticAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceConstructorSupplementalStaticAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestInterfaceConstructorSupplementalStaticAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::EncodedJSValue jsTestInterfaceSupplementalStr1(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceSupplementalStr1(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::EncodedJSValue jsTestInterfaceSupplementalStr2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestInterfaceSupplementalStr2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceSupplementalStr2(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestInterfaceSupplementalStr2(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::EncodedJSValue jsTestInterfaceSupplementalStr3(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestInterfaceSupplementalStr3(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceSupplementalStr3(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestInterfaceSupplementalStr3(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::EncodedJSValue jsTestInterfaceSupplementalNode(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestInterfaceSupplementalNode(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceSupplementalNode(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestInterfaceSupplementalNode(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><del>-JSC::EncodedJSValue jsTestInterfaceConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestInterfaceConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestInterfaceConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestInterfacePrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -404,10 +404,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-EncodedJSValue jsTestInterfaceConstructorImplementsStaticReadOnlyAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceConstructorImplementsStaticReadOnlyAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue result = jsNumber(TestInterface::implementsStaticReadOnlyAttr());
</span><span class="cx">     return JSValue::encode(result);
</span><span class="lines">@@ -416,10 +415,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-EncodedJSValue jsTestInterfaceConstructorImplementsStaticAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceConstructorImplementsStaticAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue result = jsStringWithCache(state, TestInterface::implementsStaticAttr());
</span><span class="cx">     return JSValue::encode(result);
</span><span class="lines">@@ -428,10 +426,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-EncodedJSValue jsTestInterfaceImplementsStr1(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceImplementsStr1(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -446,10 +443,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-EncodedJSValue jsTestInterfaceImplementsStr2(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceImplementsStr2(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -464,10 +460,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-EncodedJSValue jsTestInterfaceImplementsStr3(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceImplementsStr3(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -480,10 +475,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-EncodedJSValue jsTestInterfaceImplementsNode(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceImplementsNode(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -498,10 +492,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-EncodedJSValue jsTestInterfaceConstructorSupplementalStaticReadOnlyAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceConstructorSupplementalStaticReadOnlyAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue result = jsNumber(WebCore::TestSupplemental::supplementalStaticReadOnlyAttr());
</span><span class="cx">     return JSValue::encode(result);
</span><span class="lines">@@ -510,10 +503,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-EncodedJSValue jsTestInterfaceConstructorSupplementalStaticAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceConstructorSupplementalStaticAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue result = jsStringWithCache(state, WebCore::TestSupplemental::supplementalStaticAttr());
</span><span class="cx">     return JSValue::encode(result);
</span><span class="lines">@@ -522,10 +514,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-EncodedJSValue jsTestInterfaceSupplementalStr1(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceSupplementalStr1(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -540,10 +531,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-EncodedJSValue jsTestInterfaceSupplementalStr2(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceSupplementalStr2(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -558,10 +548,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-EncodedJSValue jsTestInterfaceSupplementalStr3(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceSupplementalStr3(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -574,10 +563,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-EncodedJSValue jsTestInterfaceSupplementalNode(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceSupplementalNode(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -591,19 +579,18 @@
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestInterfaceConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestInterfacePrototype* domObject = jsDynamicCast&lt;JSTestInterfacePrototype*&gt;(baseValue);
</del><ins>+    JSTestInterfacePrototype* domObject = jsDynamicCast&lt;JSTestInterfacePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestInterface::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestInterfaceConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestInterfaceConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestInterfacePrototype* domObject = jsDynamicCast&lt;JSTestInterfacePrototype*&gt;(baseValue);
</del><ins>+    JSTestInterfacePrototype* domObject = jsDynamicCast&lt;JSTestInterfacePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span><span class="lines">@@ -633,10 +620,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-void setJSTestInterfaceConstructorImplementsStaticAttr(ExecState* state, JSObject* baseObject, EncodedJSValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestInterfaceConstructorImplementsStaticAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><span class="cx">     String nativeValue = value.toString(state)-&gt;value(state);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="lines">@@ -646,10 +632,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-void setJSTestInterfaceImplementsStr2(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestInterfaceImplementsStr2(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestInterface&quot;, &quot;implementsStr2&quot;);
</span><span class="lines">@@ -665,10 +651,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-void setJSTestInterfaceImplementsStr3(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestInterfaceImplementsStr3(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestInterface&quot;, &quot;implementsStr3&quot;);
</span><span class="lines">@@ -680,10 +666,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-void setJSTestInterfaceImplementsNode(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestInterfaceImplementsNode(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestInterface&quot;, &quot;implementsNode&quot;);
</span><span class="lines">@@ -699,10 +685,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-void setJSTestInterfaceConstructorSupplementalStaticAttr(ExecState* state, JSObject* baseObject, EncodedJSValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestInterfaceConstructorSupplementalStaticAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><span class="cx">     String nativeValue = value.toString(state)-&gt;value(state);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="lines">@@ -712,10 +697,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-void setJSTestInterfaceSupplementalStr2(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestInterfaceSupplementalStr2(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestInterface&quot;, &quot;supplementalStr2&quot;);
</span><span class="lines">@@ -731,10 +716,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-void setJSTestInterfaceSupplementalStr3(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestInterfaceSupplementalStr3(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestInterface&quot;, &quot;supplementalStr3&quot;);
</span><span class="lines">@@ -746,10 +731,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-void setJSTestInterfaceSupplementalNode(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestInterfaceSupplementalNode(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestInterface&quot;, &quot;supplementalNode&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -37,11 +37,11 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestJSBuiltinConstructorTestAttributeCustom(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestJSBuiltinConstructorTestAttributeRWCustom(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestJSBuiltinConstructorTestAttributeRWCustom(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestJSBuiltinConstructorConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestJSBuiltinConstructorConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestJSBuiltinConstructorTestAttributeCustom(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestJSBuiltinConstructorTestAttributeRWCustom(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestJSBuiltinConstructorTestAttributeRWCustom(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestJSBuiltinConstructorConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestJSBuiltinConstructorConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestJSBuiltinConstructorPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -125,10 +125,9 @@
</span><span class="cx">     thisObject-&gt;JSTestJSBuiltinConstructor::~JSTestJSBuiltinConstructor();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestJSBuiltinConstructorTestAttributeCustom(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestJSBuiltinConstructorTestAttributeCustom(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestJSBuiltinConstructor*&gt;(decodedThisValue);
</span><span class="lines">@@ -139,10 +138,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestJSBuiltinConstructorTestAttributeRWCustom(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestJSBuiltinConstructorTestAttributeRWCustom(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestJSBuiltinConstructor*&gt;(decodedThisValue);
</span><span class="lines">@@ -153,19 +151,18 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestJSBuiltinConstructorConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestJSBuiltinConstructorConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicCast&lt;JSTestJSBuiltinConstructorPrototype*&gt;(baseValue);
</del><ins>+    JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicCast&lt;JSTestJSBuiltinConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestJSBuiltinConstructor::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestJSBuiltinConstructorConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestJSBuiltinConstructorConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicCast&lt;JSTestJSBuiltinConstructorPrototype*&gt;(baseValue);
</del><ins>+    JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicCast&lt;JSTestJSBuiltinConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span><span class="lines">@@ -174,10 +171,10 @@
</span><span class="cx">     domObject-&gt;putDirect(state-&gt;vm(), state-&gt;propertyNames().constructor, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestJSBuiltinConstructorTestAttributeRWCustom(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestJSBuiltinConstructorTestAttributeRWCustom(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestJSBuiltinConstructor* castedThis = jsDynamicCast&lt;JSTestJSBuiltinConstructor*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestJSBuiltinConstructor&quot;, &quot;testAttributeRWCustom&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -38,8 +38,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestMediaQueryListListenerConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestMediaQueryListListenerConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestMediaQueryListListenerConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestMediaQueryListListenerConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestMediaQueryListListenerPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -116,19 +116,18 @@
</span><span class="cx">     thisObject-&gt;JSTestMediaQueryListListener::~JSTestMediaQueryListListener();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestMediaQueryListListenerConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestMediaQueryListListenerConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestMediaQueryListListenerPrototype* domObject = jsDynamicCast&lt;JSTestMediaQueryListListenerPrototype*&gt;(baseValue);
</del><ins>+    JSTestMediaQueryListListenerPrototype* domObject = jsDynamicCast&lt;JSTestMediaQueryListListenerPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestMediaQueryListListener::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestMediaQueryListListenerConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestMediaQueryListListenerConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestMediaQueryListListenerPrototype* domObject = jsDynamicCast&lt;JSTestMediaQueryListListenerPrototype*&gt;(baseValue);
</del><ins>+    JSTestMediaQueryListListenerPrototype* domObject = jsDynamicCast&lt;JSTestMediaQueryListListenerPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -33,8 +33,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestNamedConstructorConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestNamedConstructorConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestNamedConstructorConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestNamedConstructorConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestNamedConstructorPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -143,19 +143,18 @@
</span><span class="cx">     thisObject-&gt;JSTestNamedConstructor::~JSTestNamedConstructor();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestNamedConstructorConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestNamedConstructorConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestNamedConstructorPrototype* domObject = jsDynamicCast&lt;JSTestNamedConstructorPrototype*&gt;(baseValue);
</del><ins>+    JSTestNamedConstructorPrototype* domObject = jsDynamicCast&lt;JSTestNamedConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestNamedConstructor::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestNamedConstructorConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestNamedConstructorConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestNamedConstructorPrototype* domObject = jsDynamicCast&lt;JSTestNamedConstructorPrototype*&gt;(baseValue);
</del><ins>+    JSTestNamedConstructorPrototype* domObject = jsDynamicCast&lt;JSTestNamedConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -35,10 +35,10 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestNodeName(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestNodeName(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestNodeConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestNodeConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestNodeName(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestNodeName(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestNodeConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestNodeConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestNodePrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -116,10 +116,9 @@
</span><span class="cx">     return getDOMPrototype&lt;JSTestNode&gt;(vm, globalObject);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestNodeName(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestNodeName(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestNode*&gt;(decodedThisValue);
</span><span class="lines">@@ -132,19 +131,18 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestNodeConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestNodeConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestNodePrototype* domObject = jsDynamicCast&lt;JSTestNodePrototype*&gt;(baseValue);
</del><ins>+    JSTestNodePrototype* domObject = jsDynamicCast&lt;JSTestNodePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestNode::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestNodeConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestNodeConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestNodePrototype* domObject = jsDynamicCast&lt;JSTestNodePrototype*&gt;(baseValue);
</del><ins>+    JSTestNodePrototype* domObject = jsDynamicCast&lt;JSTestNodePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span><span class="lines">@@ -153,10 +151,10 @@
</span><span class="cx">     domObject-&gt;putDirect(state-&gt;vm(), state-&gt;propertyNames().constructor, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestNodeName(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestNodeName(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestNode* castedThis = jsDynamicCast&lt;JSTestNode*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestNode&quot;, &quot;name&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministiccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -45,17 +45,17 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestNondeterministicNondeterministicReadonlyAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestNondeterministicNondeterministicWriteableAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestNondeterministicNondeterministicWriteableAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestNondeterministicNondeterministicExceptionAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestNondeterministicNondeterministicExceptionAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestNondeterministicNondeterministicGetterExceptionAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestNondeterministicNondeterministicGetterExceptionAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestNondeterministicNondeterministicSetterExceptionAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestNondeterministicNondeterministicSetterExceptionAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestNondeterministicConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestNondeterministicConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestNondeterministicNondeterministicReadonlyAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestNondeterministicNondeterministicWriteableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestNondeterministicNondeterministicWriteableAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestNondeterministicNondeterministicExceptionAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestNondeterministicNondeterministicExceptionAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestNondeterministicNondeterministicGetterExceptionAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestNondeterministicNondeterministicGetterExceptionAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestNondeterministicNondeterministicSetterExceptionAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestNondeterministicNondeterministicSetterExceptionAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestNondeterministicConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestNondeterministicConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestNondeterministicPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -137,10 +137,9 @@
</span><span class="cx">     thisObject-&gt;JSTestNondeterministic::~JSTestNondeterministic();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestNondeterministicNondeterministicReadonlyAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestNondeterministicNondeterministicReadonlyAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(decodedThisValue);
</span><span class="lines">@@ -173,10 +172,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestNondeterministicNondeterministicWriteableAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestNondeterministicNondeterministicWriteableAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(decodedThisValue);
</span><span class="lines">@@ -209,10 +207,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestNondeterministicNondeterministicExceptionAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestNondeterministicNondeterministicExceptionAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(decodedThisValue);
</span><span class="lines">@@ -245,10 +242,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestNondeterministicNondeterministicGetterExceptionAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestNondeterministicNondeterministicGetterExceptionAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(decodedThisValue);
</span><span class="lines">@@ -285,10 +281,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestNondeterministicNondeterministicSetterExceptionAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestNondeterministicNondeterministicSetterExceptionAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(decodedThisValue);
</span><span class="lines">@@ -321,19 +316,18 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestNondeterministicConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestNondeterministicConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestNondeterministicPrototype* domObject = jsDynamicCast&lt;JSTestNondeterministicPrototype*&gt;(baseValue);
</del><ins>+    JSTestNondeterministicPrototype* domObject = jsDynamicCast&lt;JSTestNondeterministicPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestNondeterministic::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestNondeterministicConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestNondeterministicConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestNondeterministicPrototype* domObject = jsDynamicCast&lt;JSTestNondeterministicPrototype*&gt;(baseValue);
</del><ins>+    JSTestNondeterministicPrototype* domObject = jsDynamicCast&lt;JSTestNondeterministicPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span><span class="lines">@@ -342,10 +336,10 @@
</span><span class="cx">     domObject-&gt;putDirect(state-&gt;vm(), state-&gt;propertyNames().constructor, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestNondeterministicNondeterministicWriteableAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestNondeterministicNondeterministicWriteableAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestNondeterministic* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestNondeterministic&quot;, &quot;nondeterministicWriteableAttr&quot;);
</span><span class="lines">@@ -359,10 +353,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestNondeterministicNondeterministicExceptionAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestNondeterministicNondeterministicExceptionAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestNondeterministic* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestNondeterministic&quot;, &quot;nondeterministicExceptionAttr&quot;);
</span><span class="lines">@@ -376,10 +370,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestNondeterministicNondeterministicGetterExceptionAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestNondeterministicNondeterministicGetterExceptionAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestNondeterministic* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestNondeterministic&quot;, &quot;nondeterministicGetterExceptionAttr&quot;);
</span><span class="lines">@@ -393,10 +387,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestNondeterministicNondeterministicSetterExceptionAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestNondeterministicNondeterministicSetterExceptionAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestNondeterministic* castedThis = jsDynamicCast&lt;JSTestNondeterministic*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestNondeterministic&quot;, &quot;nondeterministicSetterExceptionAttr&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -180,159 +180,159 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestObjReadOnlyLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjReadOnlyStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjReadOnlyTestObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjConstructorStaticReadOnlyLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjConstructorStaticStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjConstructorStaticStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjConstructorTestSubObj(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjTestSubObjEnabledBySettingConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjTestSubObjEnabledBySettingConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjEnumAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjEnumAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjByteAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjByteAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjOctetAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjOctetAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjShortAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjShortAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjUnsignedShortAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjUnsignedShortAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjUnsignedLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjUnsignedLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjTestObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjTestObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjLenientTestObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjLenientTestObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjXMLObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjXMLObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjCreate(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjCreate(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjReadOnlySymbolAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjConstructorStaticReadOnlySymbolAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjReflectedUnsignedIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjReflectedUnsignedIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjReflectedURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjReflectedURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjTypedArrayAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjTypedArrayAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjAttrWithGetterExceptionWithMessage(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjAttrWithGetterExceptionWithMessage(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjAttrWithSetterExceptionWithMessage(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjAttrWithSetterExceptionWithMessage(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjStringAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjStringAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjStringAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjStringAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjStrictTypeCheckingAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjStrictTypeCheckingAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjCustomAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjCustomAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjOnfoo(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjOnfoo(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjWithScriptStateAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjWithScriptStateAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjWithCallWithAndSetterCallWithAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjWithCallWithAndSetterCallWithAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjWithScriptExecutionContextAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjWithScriptStateAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjWithScriptStateAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjWithScriptExecutionContextAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjWithScriptExecutionContextAndScriptStateAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjWithScriptArgumentsAndCallStackAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjWithScriptArgumentsAndCallStackAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestObjReadOnlyLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjReadOnlyStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjReadOnlyTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjConstructorStaticReadOnlyLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjConstructorStaticStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjConstructorStaticStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjConstructorTestSubObj(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjTestSubObjEnabledBySettingConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjTestSubObjEnabledBySettingConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjEnumAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjEnumAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjByteAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjByteAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjOctetAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjOctetAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjShortAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjShortAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjUnsignedShortAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjUnsignedShortAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjLongLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjLongLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjUnsignedLongLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjUnsignedLongLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjLenientTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjLenientTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjXMLObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjXMLObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjCreate(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjCreate(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjReadOnlySymbolAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjConstructorStaticReadOnlySymbolAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjReflectedUnsignedIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjReflectedUnsignedIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjReflectedURLAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjReflectedURLAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjTypedArrayAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjTypedArrayAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjAttrWithGetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjAttrWithGetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjAttrWithGetterExceptionWithMessage(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjAttrWithGetterExceptionWithMessage(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjAttrWithSetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjAttrWithSetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjAttrWithSetterExceptionWithMessage(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjAttrWithSetterExceptionWithMessage(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjStringAttrWithGetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjStringAttrWithGetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjStringAttrWithSetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjStringAttrWithSetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjStrictTypeCheckingAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjStrictTypeCheckingAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjCustomAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjCustomAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjOnfoo(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjOnfoo(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjWithScriptStateAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjWithScriptStateAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjWithCallWithAndSetterCallWithAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjWithCallWithAndSetterCallWithAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjWithScriptExecutionContextAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjWithScriptStateAttributeRaises(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjWithScriptStateAttributeRaises(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAttributeRaises(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjWithScriptExecutionContextAttributeRaises(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjWithScriptExecutionContextAndScriptStateAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjWithScriptArgumentsAndCallStackAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjWithScriptArgumentsAndCallStackAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #if ENABLE(Condition1)
</span><del>-JSC::EncodedJSValue jsTestObjConditionalAttr1(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjConditionalAttr1(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestObjConditionalAttr1(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjConditionalAttr1(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) &amp;&amp; ENABLE(Condition2)
</span><del>-JSC::EncodedJSValue jsTestObjConditionalAttr2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjConditionalAttr2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestObjConditionalAttr2(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjConditionalAttr2(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><del>-JSC::EncodedJSValue jsTestObjConditionalAttr3(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjConditionalAttr3(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestObjConditionalAttr3(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjConditionalAttr3(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-JSC::EncodedJSValue jsTestObjConditionalAttr4Constructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjConditionalAttr4Constructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestObjConditionalAttr4Constructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjConditionalAttr4Constructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) &amp;&amp; ENABLE(Condition2)
</span><del>-JSC::EncodedJSValue jsTestObjConditionalAttr5Constructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjConditionalAttr5Constructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestObjConditionalAttr5Constructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjConditionalAttr5Constructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><del>-JSC::EncodedJSValue jsTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> #endif
</span><del>-JSC::EncodedJSValue jsTestObjCachedAttribute1(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjCachedAttribute2(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjAnyAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjAnyAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjContentDocument(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjMutablePoint(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjMutablePoint(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjImmutablePoint(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjImmutablePoint(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjStrawberry(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjStrawberry(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjStrictFloat(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjStrictFloat(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjDescription(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjId(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjId(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjHash(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjReplaceableAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjReplaceableAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjNullableDoubleAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjNullableLongAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjNullableBooleanAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjNullableStringAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjNullableLongSettableAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjNullableLongSettableAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjNullableStringValue(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjNullableStringValue(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjPutForwardsAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjPutForwardsAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjPutForwardsNullableAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjPutForwardsNullableAttribute(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestObjConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestObjConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestObjCachedAttribute1(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCachedAttribute2(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjAnyAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjAnyAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjContentDocument(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjMutablePoint(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjMutablePoint(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjImmutablePoint(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjImmutablePoint(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjStrawberry(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjStrawberry(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjStrictFloat(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjStrictFloat(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjDescription(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjId(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjId(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjHash(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjReplaceableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjReplaceableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjNullableDoubleAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjNullableLongAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjNullableBooleanAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjNullableStringAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjNullableLongSettableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjNullableLongSettableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjNullableStringValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjNullableStringValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjPutForwardsAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjPutForwardsAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjPutForwardsNullableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjPutForwardsNullableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestObjConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestObjConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestObjPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -742,10 +742,9 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReadOnlyLongAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReadOnlyLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -758,10 +757,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReadOnlyStringAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReadOnlyStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -774,10 +772,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReadOnlyTestObjAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReadOnlyTestObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -790,30 +787,27 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjConstructorStaticReadOnlyLongAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConstructorStaticReadOnlyLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue result = jsNumber(TestObj::staticReadOnlyLongAttr());
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjConstructorStaticStringAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConstructorStaticStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue result = jsStringWithCache(state, TestObj::staticStringAttr());
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjConstructorTestSubObj(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConstructorTestSubObj(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -824,10 +818,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjTestSubObjEnabledBySettingConstructor(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjTestSubObjEnabledBySettingConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -843,10 +836,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjEnumAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjEnumAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -859,10 +851,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjByteAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjByteAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -875,10 +866,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjOctetAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjOctetAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -891,10 +881,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjShortAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjShortAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -907,10 +896,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjUnsignedShortAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjUnsignedShortAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -923,10 +911,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjLongAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -939,10 +926,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjLongLongAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjLongLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -955,10 +941,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjUnsignedLongLongAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjUnsignedLongLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -971,10 +956,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjStringAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -987,10 +971,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjTestObjAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjTestObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1003,10 +986,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjLenientTestObjAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjLenientTestObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1019,10 +1001,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjXMLObjAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjXMLObjAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1035,10 +1016,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjCreate(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCreate(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1051,10 +1031,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReadOnlySymbolAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReadOnlySymbolAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1067,20 +1046,18 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjConstructorStaticReadOnlySymbolAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConstructorStaticReadOnlySymbolAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue result = Symbol::create(state-&gt;vm(), *(TestObj::staticReadOnlySymbolAttr()).uid());
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReflectedStringAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1093,10 +1070,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReflectedIntegralAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedIntegralAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1109,10 +1085,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReflectedUnsignedIntegralAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedUnsignedIntegralAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1125,10 +1100,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReflectedBooleanAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedBooleanAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1141,10 +1115,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReflectedURLAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedURLAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1157,10 +1130,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReflectedStringAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1173,10 +1145,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReflectedCustomIntegralAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedCustomIntegralAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1189,10 +1160,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReflectedCustomBooleanAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedCustomBooleanAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1205,10 +1175,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReflectedCustomURLAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedCustomURLAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1221,10 +1190,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjTypedArrayAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjTypedArrayAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1237,10 +1205,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjAttrWithGetterException(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1255,10 +1222,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjAttrWithGetterExceptionWithMessage(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjAttrWithGetterExceptionWithMessage(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1273,10 +1239,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjAttrWithSetterException(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1289,10 +1254,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjAttrWithSetterExceptionWithMessage(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjAttrWithSetterExceptionWithMessage(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1305,10 +1269,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjStringAttrWithGetterException(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjStringAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1323,10 +1286,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjStringAttrWithSetterException(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjStringAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1339,10 +1301,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjStrictTypeCheckingAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjStrictTypeCheckingAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1355,10 +1316,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjCustomAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCustomAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1369,10 +1329,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjOnfoo(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjOnfoo(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1384,10 +1343,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjWithScriptStateAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptStateAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1400,10 +1358,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjWithCallWithAndSetterCallWithAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithCallWithAndSetterCallWithAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1416,10 +1373,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjWithScriptExecutionContextAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptExecutionContextAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1435,10 +1391,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjWithScriptStateAttributeRaises(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptStateAttributeRaises(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1453,10 +1408,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjWithScriptExecutionContextAttributeRaises(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptExecutionContextAttributeRaises(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1474,10 +1428,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1493,10 +1446,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1514,10 +1466,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1533,10 +1484,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjWithScriptArgumentsAndCallStackAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptArgumentsAndCallStackAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1550,10 +1500,9 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-EncodedJSValue jsTestObjConditionalAttr1(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConditionalAttr1(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1568,10 +1517,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) &amp;&amp; ENABLE(Condition2)
</span><del>-EncodedJSValue jsTestObjConditionalAttr2(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConditionalAttr2(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1586,10 +1534,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><del>-EncodedJSValue jsTestObjConditionalAttr3(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConditionalAttr3(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1604,10 +1551,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-EncodedJSValue jsTestObjConditionalAttr4Constructor(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConditionalAttr4Constructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1620,10 +1566,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) &amp;&amp; ENABLE(Condition2)
</span><del>-EncodedJSValue jsTestObjConditionalAttr5Constructor(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConditionalAttr5Constructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1636,10 +1581,9 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><del>-EncodedJSValue jsTestObjConditionalAttr6Constructor(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConditionalAttr6Constructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1651,10 +1595,9 @@
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjCachedAttribute1(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCachedAttribute1(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1670,10 +1613,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjCachedAttribute2(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCachedAttribute2(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1689,10 +1631,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjAnyAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjAnyAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1705,10 +1646,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjContentDocument(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjContentDocument(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1720,10 +1660,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjMutablePoint(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjMutablePoint(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1736,10 +1675,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjImmutablePoint(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjImmutablePoint(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1752,10 +1690,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjStrawberry(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjStrawberry(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1768,10 +1705,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjStrictFloat(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjStrictFloat(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1784,10 +1720,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjDescription(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjDescription(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1800,10 +1735,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjId(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjId(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1816,10 +1750,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjHash(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjHash(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1832,10 +1765,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjReplaceableAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReplaceableAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1848,10 +1780,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjNullableDoubleAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjNullableDoubleAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1864,10 +1795,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjNullableLongAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjNullableLongAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1880,10 +1810,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjNullableBooleanAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjNullableBooleanAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1896,10 +1825,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjNullableStringAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjNullableStringAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1912,10 +1840,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjNullableLongSettableAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjNullableLongSettableAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1928,10 +1855,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjNullableStringValue(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjNullableStringValue(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1946,10 +1872,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1962,10 +1887,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjAttributeWithReservedEnumType(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjAttributeWithReservedEnumType(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1978,10 +1902,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjPutForwardsAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjPutForwardsAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -1994,10 +1917,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjPutForwardsNullableAttribute(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjPutForwardsNullableAttribute(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(decodedThisValue);
</span><span class="lines">@@ -2010,19 +1932,18 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestObjConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObjPrototype* domObject = jsDynamicCast&lt;JSTestObjPrototype*&gt;(baseValue);
</del><ins>+    JSTestObjPrototype* domObject = jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestObj::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestObjConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestObjPrototype* domObject = jsDynamicCast&lt;JSTestObjPrototype*&gt;(baseValue);
</del><ins>+    JSTestObjPrototype* domObject = jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span><span class="lines">@@ -2031,10 +1952,9 @@
</span><span class="cx">     domObject-&gt;putDirect(state-&gt;vm(), state-&gt;propertyNames().constructor, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestObjConstructorStaticStringAttr(ExecState* state, JSObject* baseObject, EncodedJSValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjConstructorStaticStringAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><span class="cx">     String nativeValue = value.toString(state)-&gt;value(state);
</span><span class="cx">     if (UNLIKELY(state-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="lines">@@ -2042,10 +1962,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjTestSubObjEnabledBySettingConstructor(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjTestSubObjEnabledBySettingConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;TestSubObjEnabledBySetting&quot;);
</span><span class="lines">@@ -2056,10 +1976,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjEnumAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjEnumAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;enumAttr&quot;);
</span><span class="lines">@@ -2075,10 +1995,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjByteAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjByteAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;byteAttr&quot;);
</span><span class="lines">@@ -2092,10 +2012,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjOctetAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjOctetAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;octetAttr&quot;);
</span><span class="lines">@@ -2109,10 +2029,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjShortAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjShortAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;shortAttr&quot;);
</span><span class="lines">@@ -2126,10 +2046,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjUnsignedShortAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjUnsignedShortAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;unsignedShortAttr&quot;);
</span><span class="lines">@@ -2143,10 +2063,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjLongAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjLongAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;longAttr&quot;);
</span><span class="lines">@@ -2160,10 +2080,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjLongLongAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjLongLongAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;longLongAttr&quot;);
</span><span class="lines">@@ -2177,10 +2097,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjUnsignedLongLongAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjUnsignedLongLongAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;unsignedLongLongAttr&quot;);
</span><span class="lines">@@ -2194,10 +2114,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjStringAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjStringAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;stringAttr&quot;);
</span><span class="lines">@@ -2211,10 +2131,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjTestObjAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjTestObjAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;testObjAttr&quot;);
</span><span class="lines">@@ -2228,10 +2148,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjLenientTestObjAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjLenientTestObjAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         return;
</span><span class="lines">@@ -2244,10 +2164,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjXMLObjAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjXMLObjAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;XMLObjAttr&quot;);
</span><span class="lines">@@ -2261,10 +2181,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjCreate(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjCreate(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;create&quot;);
</span><span class="lines">@@ -2278,10 +2198,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjReflectedStringAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;reflectedStringAttr&quot;);
</span><span class="lines">@@ -2295,10 +2215,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjReflectedIntegralAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjReflectedIntegralAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;reflectedIntegralAttr&quot;);
</span><span class="lines">@@ -2312,10 +2232,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjReflectedUnsignedIntegralAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjReflectedUnsignedIntegralAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;reflectedUnsignedIntegralAttr&quot;);
</span><span class="lines">@@ -2329,10 +2249,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjReflectedBooleanAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjReflectedBooleanAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;reflectedBooleanAttr&quot;);
</span><span class="lines">@@ -2346,10 +2266,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjReflectedURLAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjReflectedURLAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;reflectedURLAttr&quot;);
</span><span class="lines">@@ -2363,10 +2283,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjReflectedStringAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjReflectedStringAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;reflectedStringAttr&quot;);
</span><span class="lines">@@ -2380,10 +2300,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjReflectedCustomIntegralAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjReflectedCustomIntegralAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;reflectedCustomIntegralAttr&quot;);
</span><span class="lines">@@ -2397,10 +2317,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjReflectedCustomBooleanAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjReflectedCustomBooleanAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;reflectedCustomBooleanAttr&quot;);
</span><span class="lines">@@ -2414,10 +2334,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjReflectedCustomURLAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjReflectedCustomURLAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;reflectedCustomURLAttr&quot;);
</span><span class="lines">@@ -2431,10 +2351,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjTypedArrayAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjTypedArrayAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;typedArrayAttr&quot;);
</span><span class="lines">@@ -2448,10 +2368,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjAttrWithGetterException(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;attrWithGetterException&quot;);
</span><span class="lines">@@ -2465,10 +2385,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjAttrWithGetterExceptionWithMessage(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjAttrWithGetterExceptionWithMessage(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;attrWithGetterExceptionWithMessage&quot;);
</span><span class="lines">@@ -2482,10 +2402,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjAttrWithSetterException(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;attrWithSetterException&quot;);
</span><span class="lines">@@ -2501,10 +2421,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjAttrWithSetterExceptionWithMessage(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjAttrWithSetterExceptionWithMessage(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;attrWithSetterExceptionWithMessage&quot;);
</span><span class="lines">@@ -2520,10 +2440,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjStringAttrWithGetterException(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjStringAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;stringAttrWithGetterException&quot;);
</span><span class="lines">@@ -2537,10 +2457,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjStringAttrWithSetterException(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjStringAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;stringAttrWithSetterException&quot;);
</span><span class="lines">@@ -2556,10 +2476,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjStrictTypeCheckingAttribute(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjStrictTypeCheckingAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;strictTypeCheckingAttribute&quot;);
</span><span class="lines">@@ -2577,10 +2497,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjCustomAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjCustomAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;customAttr&quot;);
</span><span class="lines">@@ -2590,10 +2510,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjOnfoo(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjOnfoo(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;onfoo&quot;);
</span><span class="lines">@@ -2603,10 +2523,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjWithScriptStateAttribute(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjWithScriptStateAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;withScriptStateAttribute&quot;);
</span><span class="lines">@@ -2620,10 +2540,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjWithCallWithAndSetterCallWithAttribute(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjWithCallWithAndSetterCallWithAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;withCallWithAndSetterCallWithAttribute&quot;);
</span><span class="lines">@@ -2637,10 +2557,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjWithScriptExecutionContextAttribute(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjWithScriptExecutionContextAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;withScriptExecutionContextAttribute&quot;);
</span><span class="lines">@@ -2657,10 +2577,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjWithScriptStateAttributeRaises(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjWithScriptStateAttributeRaises(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;withScriptStateAttributeRaises&quot;);
</span><span class="lines">@@ -2674,10 +2594,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjWithScriptExecutionContextAttributeRaises(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjWithScriptExecutionContextAttributeRaises(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;withScriptExecutionContextAttributeRaises&quot;);
</span><span class="lines">@@ -2694,10 +2614,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjWithScriptExecutionContextAndScriptStateAttribute(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjWithScriptExecutionContextAndScriptStateAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateAttribute&quot;);
</span><span class="lines">@@ -2714,10 +2634,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateAttributeRaises&quot;);
</span><span class="lines">@@ -2734,10 +2654,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;withScriptExecutionContextAndScriptStateWithSpacesAttribute&quot;);
</span><span class="lines">@@ -2754,10 +2674,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjWithScriptArgumentsAndCallStackAttribute(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjWithScriptArgumentsAndCallStackAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;withScriptArgumentsAndCallStackAttribute&quot;);
</span><span class="lines">@@ -2772,10 +2692,10 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-void setJSTestObjConditionalAttr1(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjConditionalAttr1(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;conditionalAttr1&quot;);
</span><span class="lines">@@ -2791,10 +2711,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) &amp;&amp; ENABLE(Condition2)
</span><del>-void setJSTestObjConditionalAttr2(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjConditionalAttr2(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;conditionalAttr2&quot;);
</span><span class="lines">@@ -2810,10 +2730,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><del>-void setJSTestObjConditionalAttr3(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjConditionalAttr3(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;conditionalAttr3&quot;);
</span><span class="lines">@@ -2829,10 +2749,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-void setJSTestObjConditionalAttr4Constructor(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjConditionalAttr4Constructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;conditionalAttr4&quot;);
</span><span class="lines">@@ -2845,10 +2765,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) &amp;&amp; ENABLE(Condition2)
</span><del>-void setJSTestObjConditionalAttr5Constructor(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjConditionalAttr5Constructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;conditionalAttr5&quot;);
</span><span class="lines">@@ -2861,10 +2781,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><del>-void setJSTestObjConditionalAttr6Constructor(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjConditionalAttr6Constructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;conditionalAttr6&quot;);
</span><span class="lines">@@ -2876,10 +2796,10 @@
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void setJSTestObjAnyAttribute(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjAnyAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;anyAttribute&quot;);
</span><span class="lines">@@ -2893,10 +2813,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjMutablePoint(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjMutablePoint(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;mutablePoint&quot;);
</span><span class="lines">@@ -2910,10 +2830,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjImmutablePoint(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjImmutablePoint(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;immutablePoint&quot;);
</span><span class="lines">@@ -2927,10 +2847,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjStrawberry(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjStrawberry(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;strawberry&quot;);
</span><span class="lines">@@ -2944,10 +2864,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjStrictFloat(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjStrictFloat(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;strictFloat&quot;);
</span><span class="lines">@@ -2961,10 +2881,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjId(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjId(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;id&quot;);
</span><span class="lines">@@ -2978,10 +2898,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjReplaceableAttribute(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjReplaceableAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;replaceableAttribute&quot;);
</span><span class="lines">@@ -2992,10 +2912,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjNullableLongSettableAttribute(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjNullableLongSettableAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;nullableLongSettableAttribute&quot;);
</span><span class="lines">@@ -3009,10 +2929,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjNullableStringValue(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjNullableStringValue(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;nullableStringValue&quot;);
</span><span class="lines">@@ -3026,10 +2946,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjAttributeWithReservedEnumType(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjAttributeWithReservedEnumType(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;attributeWithReservedEnumType&quot;);
</span><span class="lines">@@ -3045,10 +2965,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjPutForwardsAttribute(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjPutForwardsAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;putForwardsAttribute&quot;);
</span><span class="lines">@@ -3063,10 +2983,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestObjPutForwardsNullableAttribute(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestObjPutForwardsNullableAttribute(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestObj&quot;, &quot;putForwardsNullableAttribute&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -34,8 +34,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestOverloadedConstructorsConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestOverloadedConstructorsConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestOverloadedConstructorsConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestOverloadedConstructorsConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestOverloadedConstructorsPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -188,19 +188,18 @@
</span><span class="cx">     thisObject-&gt;JSTestOverloadedConstructors::~JSTestOverloadedConstructors();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestOverloadedConstructorsConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestOverloadedConstructorsConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestOverloadedConstructorsPrototype* domObject = jsDynamicCast&lt;JSTestOverloadedConstructorsPrototype*&gt;(baseValue);
</del><ins>+    JSTestOverloadedConstructorsPrototype* domObject = jsDynamicCast&lt;JSTestOverloadedConstructorsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestOverloadedConstructors::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestOverloadedConstructorsConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestOverloadedConstructorsConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestOverloadedConstructorsPrototype* domObject = jsDynamicCast&lt;JSTestOverloadedConstructorsPrototype*&gt;(baseValue);
</del><ins>+    JSTestOverloadedConstructorsPrototype* domObject = jsDynamicCast&lt;JSTestOverloadedConstructorsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -40,8 +40,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestOverrideBuiltinsConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestOverrideBuiltinsConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestOverrideBuiltinsConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestOverrideBuiltinsConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestOverrideBuiltinsPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -149,19 +149,18 @@
</span><span class="cx">     return Base::getOwnPropertySlotByIndex(thisObject, state, index, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestOverrideBuiltinsConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestOverrideBuiltinsConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestOverrideBuiltinsPrototype* domObject = jsDynamicCast&lt;JSTestOverrideBuiltinsPrototype*&gt;(baseValue);
</del><ins>+    JSTestOverrideBuiltinsPrototype* domObject = jsDynamicCast&lt;JSTestOverrideBuiltinsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestOverrideBuiltins::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestOverrideBuiltinsConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestOverrideBuiltinsConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestOverrideBuiltinsPrototype* domObject = jsDynamicCast&lt;JSTestOverrideBuiltinsPrototype*&gt;(baseValue);
</del><ins>+    JSTestOverrideBuiltinsPrototype* domObject = jsDynamicCast&lt;JSTestOverrideBuiltinsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -38,15 +38,15 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceValue(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestSerializedScriptValueInterfaceValue(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceReadonlyValue(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceCachedValue(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestSerializedScriptValueInterfaceCachedValue(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestSerializedScriptValueInterfacePorts(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValue(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestSerializedScriptValueInterfaceConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestSerializedScriptValueInterfaceValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceReadonlyValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceCachedValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestSerializedScriptValueInterfaceCachedValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestSerializedScriptValueInterfacePorts(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestSerializedScriptValueInterfaceConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestSerializedScriptValueInterfacePrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -127,10 +127,9 @@
</span><span class="cx">     thisObject-&gt;JSTestSerializedScriptValueInterface::~JSTestSerializedScriptValueInterface();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestSerializedScriptValueInterfaceValue(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfaceValue(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -143,10 +142,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestSerializedScriptValueInterfaceReadonlyValue(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfaceReadonlyValue(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -159,10 +157,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestSerializedScriptValueInterfaceCachedValue(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfaceCachedValue(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -178,10 +175,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestSerializedScriptValueInterfacePorts(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfacePorts(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -194,10 +190,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValue(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValue(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(decodedThisValue);
</span><span class="lines">@@ -213,19 +208,18 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestSerializedScriptValueInterfaceConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfaceConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestSerializedScriptValueInterfacePrototype* domObject = jsDynamicCast&lt;JSTestSerializedScriptValueInterfacePrototype*&gt;(baseValue);
</del><ins>+    JSTestSerializedScriptValueInterfacePrototype* domObject = jsDynamicCast&lt;JSTestSerializedScriptValueInterfacePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestSerializedScriptValueInterface::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestSerializedScriptValueInterfaceConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestSerializedScriptValueInterfaceConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestSerializedScriptValueInterfacePrototype* domObject = jsDynamicCast&lt;JSTestSerializedScriptValueInterfacePrototype*&gt;(baseValue);
</del><ins>+    JSTestSerializedScriptValueInterfacePrototype* domObject = jsDynamicCast&lt;JSTestSerializedScriptValueInterfacePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span><span class="lines">@@ -234,10 +228,10 @@
</span><span class="cx">     domObject-&gt;putDirect(state-&gt;vm(), state-&gt;propertyNames().constructor, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestSerializedScriptValueInterfaceValue(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestSerializedScriptValueInterfaceValue(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestSerializedScriptValueInterface* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestSerializedScriptValueInterface&quot;, &quot;value&quot;);
</span><span class="lines">@@ -251,10 +245,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestSerializedScriptValueInterfaceCachedValue(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestSerializedScriptValueInterfaceCachedValue(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestSerializedScriptValueInterface* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestSerializedScriptValueInterface&quot;, &quot;cachedValue&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -58,21 +58,21 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsTestTypedefsUnsignedLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestTypedefsUnsignedLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestTypedefsImmutableSerializedScriptValue(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestTypedefsImmutableSerializedScriptValue(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestTypedefsConstructorTestSubObj(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsTestTypedefsAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestTypedefsAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestTypedefsAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestTypedefsAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestTypedefsStringAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestTypedefsStringAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestTypedefsStringAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestTypedefsStringAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
-JSC::EncodedJSValue jsTestTypedefsConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSTestTypedefsConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsTestTypedefsUnsignedLongLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestTypedefsUnsignedLongLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestTypedefsImmutableSerializedScriptValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestTypedefsImmutableSerializedScriptValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestTypedefsConstructorTestSubObj(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestTypedefsAttrWithGetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestTypedefsAttrWithGetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestTypedefsAttrWithSetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestTypedefsAttrWithSetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestTypedefsStringAttrWithGetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestTypedefsStringAttrWithGetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestTypedefsStringAttrWithSetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestTypedefsStringAttrWithSetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
+JSC::EncodedJSValue jsTestTypedefsConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSTestTypedefsConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSTestTypedefsPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -210,10 +210,9 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestTypedefsUnsignedLongLongAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsUnsignedLongLongAttr(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(decodedThisValue);
</span><span class="lines">@@ -226,10 +225,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestTypedefsImmutableSerializedScriptValue(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsImmutableSerializedScriptValue(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(decodedThisValue);
</span><span class="lines">@@ -242,10 +240,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestTypedefsConstructorTestSubObj(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsConstructorTestSubObj(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(decodedThisValue);
</span><span class="lines">@@ -256,10 +253,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestTypedefsAttrWithGetterException(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(decodedThisValue);
</span><span class="lines">@@ -274,10 +270,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestTypedefsAttrWithSetterException(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(decodedThisValue);
</span><span class="lines">@@ -290,10 +285,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestTypedefsStringAttrWithGetterException(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsStringAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(decodedThisValue);
</span><span class="lines">@@ -308,10 +302,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestTypedefsStringAttrWithSetterException(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsStringAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(decodedThisValue);
</span><span class="lines">@@ -324,19 +317,18 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsTestTypedefsConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestTypedefsPrototype* domObject = jsDynamicCast&lt;JSTestTypedefsPrototype*&gt;(baseValue);
</del><ins>+    JSTestTypedefsPrototype* domObject = jsDynamicCast&lt;JSTestTypedefsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSTestTypedefs::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestTypedefsConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestTypedefsConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSTestTypedefsPrototype* domObject = jsDynamicCast&lt;JSTestTypedefsPrototype*&gt;(baseValue);
</del><ins>+    JSTestTypedefsPrototype* domObject = jsDynamicCast&lt;JSTestTypedefsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span><span class="lines">@@ -345,10 +337,10 @@
</span><span class="cx">     domObject-&gt;putDirect(state-&gt;vm(), state-&gt;propertyNames().constructor, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSTestTypedefsUnsignedLongLongAttr(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestTypedefsUnsignedLongLongAttr(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestTypedefs&quot;, &quot;unsignedLongLongAttr&quot;);
</span><span class="lines">@@ -362,10 +354,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestTypedefsImmutableSerializedScriptValue(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestTypedefsImmutableSerializedScriptValue(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestTypedefs&quot;, &quot;immutableSerializedScriptValue&quot;);
</span><span class="lines">@@ -379,10 +371,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestTypedefsAttrWithGetterException(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestTypedefsAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestTypedefs&quot;, &quot;attrWithGetterException&quot;);
</span><span class="lines">@@ -396,10 +388,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestTypedefsAttrWithSetterException(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestTypedefsAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestTypedefs&quot;, &quot;attrWithSetterException&quot;);
</span><span class="lines">@@ -415,10 +407,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestTypedefsStringAttrWithGetterException(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestTypedefsStringAttrWithGetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestTypedefs&quot;, &quot;stringAttrWithGetterException&quot;);
</span><span class="lines">@@ -432,10 +424,10 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-void setJSTestTypedefsStringAttrWithSetterException(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSTestTypedefsStringAttrWithSetterException(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(baseObject);
</del><ins>+    UNUSED_PARAM(thisValue);
</ins><span class="cx">     JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (UNLIKELY(!castedThis)) {
</span><span class="cx">         throwSetterTypeError(*state, &quot;TestTypedefs&quot;, &quot;stringAttrWithSetterException&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSattributecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -33,9 +33,9 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsattributeReadonly(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-JSC::EncodedJSValue jsattributeConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSattributeConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsattributeReadonly(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsattributeConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSattributeConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSattributePrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -112,10 +112,9 @@
</span><span class="cx">     thisObject-&gt;JSattribute::~JSattribute();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsattributeReadonly(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue jsattributeReadonly(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(state);
</span><del>-    UNUSED_PARAM(slotBase);
</del><span class="cx">     UNUSED_PARAM(thisValue);
</span><span class="cx">     JSValue decodedThisValue = JSValue::decode(thisValue);
</span><span class="cx">     auto* castedThis = jsDynamicCast&lt;JSattribute*&gt;(decodedThisValue);
</span><span class="lines">@@ -128,19 +127,18 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-EncodedJSValue jsattributeConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsattributeConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSattributePrototype* domObject = jsDynamicCast&lt;JSattributePrototype*&gt;(baseValue);
</del><ins>+    JSattributePrototype* domObject = jsDynamicCast&lt;JSattributePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSattribute::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSattributeConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSattributeConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSattributePrototype* domObject = jsDynamicCast&lt;JSattributePrototype*&gt;(baseValue);
</del><ins>+    JSattributePrototype* domObject = jsDynamicCast&lt;JSattributePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSreadonlycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -31,8 +31,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::EncodedJSValue jsreadonlyConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-void setJSreadonlyConstructor(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</del><ins>+JSC::EncodedJSValue jsreadonlyConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+void setJSreadonlyConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
</ins><span class="cx"> 
</span><span class="cx"> class JSreadonlyPrototype : public JSC::JSNonFinalObject {
</span><span class="cx"> public:
</span><span class="lines">@@ -108,19 +108,18 @@
</span><span class="cx">     thisObject-&gt;JSreadonly::~JSreadonly();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue jsreadonlyConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</del><ins>+EncodedJSValue jsreadonlyConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSreadonlyPrototype* domObject = jsDynamicCast&lt;JSreadonlyPrototype*&gt;(baseValue);
</del><ins>+    JSreadonlyPrototype* domObject = jsDynamicCast&lt;JSreadonlyPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!domObject)
</span><span class="cx">         return throwVMTypeError(state);
</span><span class="cx">     return JSValue::encode(JSreadonly::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void setJSreadonlyConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</del><ins>+void setJSreadonlyConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    UNUSED_PARAM(thisValue);
-    JSreadonlyPrototype* domObject = jsDynamicCast&lt;JSreadonlyPrototype*&gt;(baseValue);
</del><ins>+    JSreadonlyPrototype* domObject = jsDynamicCast&lt;JSreadonlyPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_arraycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_array.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_array.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bridge/runtime_array.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">     static_cast&lt;RuntimeArray*&gt;(cell)-&gt;RuntimeArray::~RuntimeArray();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue RuntimeArray::lengthGetter(ExecState* exec, JSObject*, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue RuntimeArray::lengthGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     RuntimeArray* thisObject = jsDynamicCast&lt;RuntimeArray*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!thisObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_arrayh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_array.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_array.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bridge/runtime_array.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     RuntimeArray(ExecState*, Structure*);
</span><del>-    static EncodedJSValue lengthGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
</del><ins>+    static EncodedJSValue lengthGetter(ExecState*, EncodedJSValue, PropertyName);
</ins><span class="cx"> 
</span><span class="cx">     BindingsArray* m_array;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_methodcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_method.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_method.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bridge/runtime_method.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">     ASSERT(inherits(info()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue RuntimeMethod::lengthGetter(ExecState* exec, JSObject*, EncodedJSValue thisValue, PropertyName)
</del><ins>+EncodedJSValue RuntimeMethod::lengthGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     RuntimeMethod* thisObject = jsDynamicCast&lt;RuntimeMethod*&gt;(JSValue::decode(thisValue));
</span><span class="cx">     if (!thisObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_methodh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_method.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_method.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bridge/runtime_method.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx">     static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&amp;);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    static EncodedJSValue lengthGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
</del><ins>+    static EncodedJSValue lengthGetter(ExecState*, EncodedJSValue, PropertyName);
</ins><span class="cx"> 
</span><span class="cx">     Bindings::Method* m_method;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_objectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_object.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_object.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bridge/runtime_object.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -62,9 +62,9 @@
</span><span class="cx">     m_instance = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue RuntimeObject::fallbackObjectGetter(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName propertyName)
</del><ins>+EncodedJSValue RuntimeObject::fallbackObjectGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    RuntimeObject* thisObj = jsCast&lt;RuntimeObject*&gt;(slotBase);
</del><ins>+    RuntimeObject* thisObj = jsCast&lt;RuntimeObject*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     RefPtr&lt;Instance&gt; instance = thisObj-&gt;m_instance;
</span><span class="cx"> 
</span><span class="cx">     if (!instance)
</span><span class="lines">@@ -80,9 +80,9 @@
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue RuntimeObject::fieldGetter(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName propertyName)
</del><ins>+EncodedJSValue RuntimeObject::fieldGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName propertyName)
</ins><span class="cx"> {    
</span><del>-    RuntimeObject* thisObj = jsCast&lt;RuntimeObject*&gt;(slotBase);
</del><ins>+    RuntimeObject* thisObj = jsCast&lt;RuntimeObject*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     RefPtr&lt;Instance&gt; instance = thisObj-&gt;m_instance;
</span><span class="cx"> 
</span><span class="cx">     if (!instance)
</span><span class="lines">@@ -99,9 +99,9 @@
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue RuntimeObject::methodGetter(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName propertyName)
</del><ins>+EncodedJSValue RuntimeObject::methodGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    RuntimeObject* thisObj = jsCast&lt;RuntimeObject*&gt;(slotBase);
</del><ins>+    RuntimeObject* thisObj = jsCast&lt;RuntimeObject*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     RefPtr&lt;Instance&gt; instance = thisObj-&gt;m_instance;
</span><span class="cx"> 
</span><span class="cx">     if (!instance)
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_objecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_object.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_object.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebCore/bridge/runtime_object.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -78,9 +78,9 @@
</span><span class="cx">     void finishCreation(VM&amp;);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    static EncodedJSValue fallbackObjectGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-    static EncodedJSValue fieldGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-    static EncodedJSValue methodGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
</del><ins>+    static EncodedJSValue fallbackObjectGetter(ExecState*, EncodedJSValue, PropertyName);
+    static EncodedJSValue fieldGetter(ExecState*, EncodedJSValue, PropertyName);
+    static EncodedJSValue methodGetter(ExecState*, EncodedJSValue, PropertyName);
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Instance&gt; m_instance;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebKit2/ChangeLog        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -1,3 +1,31 @@
</span><ins>+2016-02-07  Gavin Barraclough  &lt;barraclough@apple.com&gt;
+
+        GetValueFunc/PutValueFunc should not take both slotBase and thisValue
+        https://bugs.webkit.org/show_bug.cgi?id=154009
+
+        Reviewed by Geoff Garen.
+
+        In JavaScript there are two types of properties - regular value properties, and accessor properties.
+        One difference between these is how they are reflected by getOwnPropertyDescriptor, and another is
+        what object they operate on in the case of a prototype access. If you access a value property of a
+        prototype object it return a value pertinent to the prototype, but in the case of a prototype object
+        returning an accessor, then the accessor function is applied to the base object of the access.
+
+        JSC supports special 'custom' properties implemented as a c++ callback, and these custom properties
+        can be used to implement either value- or accessor-like behavior. getOwnPropertyDescriptor behavior
+        is selected via the CustomAccessor attribute. Value- or accessor-like object selection is current
+        supported by passing both the slotBase and the thisValue to the callback,and hoping it uses the
+        right one. This is probably inefficient, bug-prone, and leads to crazy like JSBoundSlotBaseFunction.
+
+        Instead, just pass one thisValue to the callback functions, consistent with CustomAccessor.
+
+        * WebProcess/Plugins/Netscape/JSNPObject.cpp:
+        (WebKit::JSNPObject::getOwnPropertyNames):
+        (WebKit::JSNPObject::propertyGetter):
+        (WebKit::JSNPObject::methodGetter):
+        * WebProcess/Plugins/Netscape/JSNPObject.h:
+            - Merged slotBase &amp; thisValue to custom property callbacks.
+
</ins><span class="cx"> 2016-02-09  Jer Noble  &lt;jer.noble@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Mac] Exiting fullscreen through the placeholder action leaves window in empty state
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsNetscapeJSNPObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -433,9 +433,9 @@
</span><span class="cx">     npnMemFree(identifiers);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JSNPObject::propertyGetter(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName propertyName)
</del><ins>+EncodedJSValue JSNPObject::propertyGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSNPObject* thisObj = jsCast&lt;JSNPObject*&gt;(slotBase);
</del><ins>+    JSNPObject* thisObj = jsCast&lt;JSNPObject*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     ASSERT_GC_OBJECT_INHERITS(thisObj, info());
</span><span class="cx">     
</span><span class="cx">     if (!thisObj-&gt;m_npObject)
</span><span class="lines">@@ -473,9 +473,9 @@
</span><span class="cx">     return JSValue::encode(propertyValue);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JSNPObject::methodGetter(ExecState* exec, JSObject* slotBase, EncodedJSValue, PropertyName propertyName)
</del><ins>+EncodedJSValue JSNPObject::methodGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSNPObject* thisObj = jsCast&lt;JSNPObject*&gt;(slotBase);
</del><ins>+    JSNPObject* thisObj = jsCast&lt;JSNPObject*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     ASSERT_GC_OBJECT_INHERITS(thisObj, info());
</span><span class="cx">     
</span><span class="cx">     if (!thisObj-&gt;m_npObject)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsNetscapeJSNPObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h (196330 => 196331)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h        2016-02-09 21:17:03 UTC (rev 196330)
+++ trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h        2016-02-09 21:19:59 UTC (rev 196331)
</span><span class="lines">@@ -94,8 +94,8 @@
</span><span class="cx"> 
</span><span class="cx">     static void getOwnPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&amp;, JSC::EnumerationMode);
</span><span class="cx"> 
</span><del>-    static JSC::EncodedJSValue propertyGetter(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
-    static JSC::EncodedJSValue methodGetter(JSC::ExecState*, JSC::JSObject*, JSC::EncodedJSValue, JSC::PropertyName);
</del><ins>+    static JSC::EncodedJSValue propertyGetter(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
+    static JSC::EncodedJSValue methodGetter(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx">     static JSC::JSObject* throwInvalidAccessError(JSC::ExecState*);
</span><span class="cx"> 
</span><span class="cx">     NPRuntimeObjectMap* m_objectMap;
</span></span></pre>
</div>
</div>

</body>
</html>