<!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>[160208] 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/160208">160208</a></dd>
<dt>Author</dt> <dd>oliver@apple.com</dd>
<dt>Date</dt> <dd>2013-12-05 19:03:24 -0800 (Thu, 05 Dec 2013)</dd>
</dl>

<h3>Log Message</h3>
<pre>Refactor static getter function prototype to include thisValue in addition to the base object
https://bugs.webkit.org/show_bug.cgi?id=124461

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Add thisValue parameter to static getter prototype, and switch
from JSValue to EncodedJSValue for parameters and return value.

Currently none of the static getters use the thisValue, but
separating out the refactoring will prevent future changes
from getting lost in the noise of refactoring.  This means
that this patch does not result in any change in behaviour.

* API/JSCallbackObject.h:
* API/JSCallbackObjectFunctions.h:
(JSC::::asCallbackObject):
(JSC::::staticFunctionGetter):
(JSC::::callbackGetter):
* jit/JITOperations.cpp:
* runtime/JSActivation.cpp:
(JSC::JSActivation::argumentsGetter):
* runtime/JSActivation.h:
* runtime/JSFunction.cpp:
(JSC::JSFunction::argumentsGetter):
(JSC::JSFunction::callerGetter):
(JSC::JSFunction::lengthGetter):
(JSC::JSFunction::nameGetter):
* runtime/JSFunction.h:
* runtime/JSObject.h:
(JSC::PropertySlot::getValue):
* runtime/NumberConstructor.cpp:
(JSC::numberConstructorNaNValue):
(JSC::numberConstructorNegInfinity):
(JSC::numberConstructorPosInfinity):
(JSC::numberConstructorMaxValue):
(JSC::numberConstructorMinValue):
* runtime/PropertySlot.h:
* runtime/RegExpConstructor.cpp:
(JSC::asRegExpConstructor):
(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):
* runtime/RegExpObject.cpp:
(JSC::asRegExpObject):
(JSC::regExpObjectGlobal):
(JSC::regExpObjectIgnoreCase):
(JSC::regExpObjectMultiline):
(JSC::regExpObjectSource):

Source/WebCore:

Change bindings codegen to produce static getter functions
with the correct types.  Also update the many custom implementations
to the new type.

No change in behaviour.

* bindings/js/JSCSSStyleDeclarationCustom.cpp:
(WebCore::cssPropertyGetterPixelOrPosPrefixCallback):
(WebCore::cssPropertyGetterCallback):
* bindings/js/JSDOMBinding.cpp:
(WebCore::objectToStringFunctionGetter):
* bindings/js/JSDOMBinding.h:
* bindings/js/JSDOMMimeTypeArrayCustom.cpp:
(WebCore::JSDOMMimeTypeArray::nameGetter):
* bindings/js/JSDOMPluginArrayCustom.cpp:
(WebCore::JSDOMPluginArray::nameGetter):
* bindings/js/JSDOMPluginCustom.cpp:
(WebCore::JSDOMPlugin::nameGetter):
* bindings/js/JSDOMStringMapCustom.cpp:
(WebCore::JSDOMStringMap::nameGetter):
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::nonCachingStaticFunctionGetter):
(WebCore::childFrameGetter):
(WebCore::indexGetter):
(WebCore::namedItemGetter):
* bindings/js/JSHTMLAllCollectionCustom.cpp:
(WebCore::JSHTMLAllCollection::nameGetter):
* bindings/js/JSHTMLCollectionCustom.cpp:
(WebCore::JSHTMLCollection::nameGetter):
* bindings/js/JSHTMLDocumentCustom.cpp:
(WebCore::JSHTMLDocument::nameGetter):
* bindings/js/JSHTMLFormControlsCollectionCustom.cpp:
(WebCore::JSHTMLFormControlsCollection::nameGetter):
* bindings/js/JSHTMLFormElementCustom.cpp:
(WebCore::JSHTMLFormElement::nameGetter):
* bindings/js/JSHTMLFrameSetElementCustom.cpp:
(WebCore::JSHTMLFrameSetElement::nameGetter):
* bindings/js/JSHistoryCustom.cpp:
(WebCore::nonCachingStaticBackFunctionGetter):
(WebCore::nonCachingStaticForwardFunctionGetter):
(WebCore::nonCachingStaticGoFunctionGetter):
* bindings/js/JSJavaScriptCallFrameCustom.cpp:
(WebCore::JSJavaScriptCallFrame::scopeType):
* bindings/js/JSLocationCustom.cpp:
(WebCore::nonCachingStaticReplaceFunctionGetter):
(WebCore::nonCachingStaticReloadFunctionGetter):
(WebCore::nonCachingStaticAssignFunctionGetter):
* bindings/js/JSNamedNodeMapCustom.cpp:
(WebCore::JSNamedNodeMap::nameGetter):
* bindings/js/JSNodeListCustom.cpp:
(WebCore::JSNodeList::nameGetter):
* bindings/js/JSPluginElementFunctions.cpp:
(WebCore::pluginElementPropertyGetter):
* bindings/js/JSPluginElementFunctions.h:
* bindings/js/JSRTCStatsResponseCustom.cpp:
(WebCore::JSRTCStatsResponse::nameGetter):
* bindings/js/JSStorageCustom.cpp:
(WebCore::JSStorage::nameGetter):
* bindings/js/JSStyleSheetListCustom.cpp:
(WebCore::JSStyleSheetList::nameGetter):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateImplementation):
(GenerateParametersCheck):
* bridge/runtime_array.cpp:
(JSC::RuntimeArray::lengthGetter):
(JSC::RuntimeArray::indexGetter):
* bridge/runtime_array.h:
* bridge/runtime_method.cpp:
(JSC::RuntimeMethod::lengthGetter):
* bridge/runtime_method.h:
* bridge/runtime_object.cpp:
(JSC::Bindings::RuntimeObject::fallbackObjectGetter):
(JSC::Bindings::RuntimeObject::fieldGetter):
(JSC::Bindings::RuntimeObject::methodGetter):
* bridge/runtime_object.h:

Source/WebKit2:

Update the WK2 JSC usage to the new static getter API

* WebProcess/Plugins/Netscape/JSNPMethod.cpp:
(WebKit::callMethod):
* WebProcess/Plugins/Netscape/JSNPObject.cpp:
(WebKit::callNPJSObject):
(WebKit::constructWithConstructor):
(WebKit::JSNPObject::propertyGetter):
(WebKit::JSNPObject::methodGetter):
* WebProcess/Plugins/Netscape/JSNPObject.h:
* WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
(WebKit::NPRuntimeObjectMap::getOrCreateNPObject):
(WebKit::NPRuntimeObjectMap::finalize):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::frameForContext):
(WebKit::WebFrame::counterValue):</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="#trunkSourceJavaScriptCorejitJITOperationscpp">trunk/Source/JavaScriptCore/jit/JITOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSActivationcpp">trunk/Source/JavaScriptCore/runtime/JSActivation.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSActivationh">trunk/Source/JavaScriptCore/runtime/JSActivation.h</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="#trunkSourceJavaScriptCoreruntimeJSObjecth">trunk/Source/JavaScriptCore/runtime/JSObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeNumberConstructorcpp">trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertySloth">trunk/Source/JavaScriptCore/runtime/PropertySlot.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="#trunkSourceWebCorebindingsjsJSCSSStyleDeclarationCustomcpp">trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp</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="#trunkSourceWebCorebindingsjsJSDOMMimeTypeArrayCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMMimeTypeArrayCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMPluginArrayCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMPluginArrayCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMPluginCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMPluginCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMStringMapCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLAllCollectionCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLCollectionCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLDocumentCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLFormControlsCollectionCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLFormControlsCollectionCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLFormElementCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLFormElementCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLFrameSetElementCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLFrameSetElementCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHistoryCustomcpp">trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSJavaScriptCallFrameCustomcpp">trunk/Source/WebCore/bindings/js/JSJavaScriptCallFrameCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSLocationCustomcpp">trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSNamedNodeMapCustomcpp">trunk/Source/WebCore/bindings/js/JSNamedNodeMapCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSNodeListCustomcpp">trunk/Source/WebCore/bindings/js/JSNodeListCustom.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="#trunkSourceWebCorebindingsjsJSRTCStatsResponseCustomcpp">trunk/Source/WebCore/bindings/js/JSRTCStatsResponseCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSStorageCustomcpp">trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSStyleSheetListCustomcpp">trunk/Source/WebCore/bindings/js/JSStyleSheetListCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjecth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGetterh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargeth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestExceptionh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachableh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenerh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNodeh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfaceh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefsh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSattributecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSattributeh">trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSreadonlycpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSreadonlyh">trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.h</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="#trunkSourceWebKit2WebProcessPluginsNetscapeJSNPMethodcpp">trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.cpp</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>
<li><a href="#trunkSourceWebKit2WebProcessPluginsNetscapeNPRuntimeObjectMapcpp">trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebFramecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp</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 (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSCallbackObject.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/API/JSCallbackObject.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -205,13 +205,14 @@
</span><span class="cx">     void init(ExecState*);
</span><span class="cx">  
</span><span class="cx">     static JSCallbackObject* asCallbackObject(JSValue);
</span><ins>+    static JSCallbackObject* asCallbackObject(EncodedJSValue);
</ins><span class="cx">  
</span><span class="cx">     static EncodedJSValue JSC_HOST_CALL call(ExecState*);
</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 JSValue staticFunctionGetter(ExecState*, JSValue, PropertyName);
-    static JSValue callbackGetter(ExecState*, JSValue, PropertyName);
</del><ins>+    static EncodedJSValue staticFunctionGetter(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+    static EncodedJSValue callbackGetter(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
</ins><span class="cx"> 
</span><span class="cx">     OwnPtr&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 (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -50,6 +50,13 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;class Parent&gt;
</span><ins>+inline JSCallbackObject&lt;Parent&gt;* JSCallbackObject&lt;Parent&gt;::asCallbackObject(EncodedJSValue value)
+{
+    ASSERT(asObject(JSValue::decode(value))-&gt;inherits(info()));
+    return jsCast&lt;JSCallbackObject*&gt;(asObject(JSValue::decode(value)));
+}
+
+template &lt;class Parent&gt;
</ins><span class="cx"> JSCallbackObject&lt;Parent&gt;::JSCallbackObject(ExecState* exec, Structure* structure, JSClassRef jsClass, void* data)
</span><span class="cx">     : Parent(exec-&gt;vm(), structure)
</span><span class="cx">     , m_callbackObjectData(adoptPtr(new JSCallbackObjectData(data, jsClass)))
</span><span class="lines">@@ -584,14 +591,14 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;class Parent&gt;
</span><del>-JSValue JSCallbackObject&lt;Parent&gt;::staticFunctionGetter(ExecState* exec, JSValue slotParent, PropertyName propertyName)
</del><ins>+EncodedJSValue JSCallbackObject&lt;Parent&gt;::staticFunctionGetter(ExecState* exec, EncodedJSValue slotParent, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSCallbackObject* thisObj = asCallbackObject(slotParent);
</span><span class="cx">     
</span><span class="cx">     // Check for cached or override property.
</span><span class="cx">     PropertySlot slot2(thisObj);
</span><span class="cx">     if (Parent::getOwnPropertySlot(thisObj, exec, propertyName, slot2))
</span><del>-        return slot2.getValue(exec, propertyName);
</del><ins>+        return JSValue::encode(slot2.getValue(exec, propertyName));
</ins><span class="cx"> 
</span><span class="cx">     if (StringImpl* name = propertyName.publicName()) {
</span><span class="cx">         for (JSClassRef jsClass = thisObj-&gt;classRef(); jsClass; jsClass = jsClass-&gt;parentClass) {
</span><span class="lines">@@ -601,18 +608,18 @@
</span><span class="cx">                         VM&amp; vm = exec-&gt;vm();
</span><span class="cx">                         JSObject* o = JSCallbackFunction::create(vm, thisObj-&gt;globalObject(), callAsFunction, name);
</span><span class="cx">                         thisObj-&gt;putDirect(vm, propertyName, o, entry-&gt;attributes);
</span><del>-                        return o;
</del><ins>+                        return JSValue::encode(o);
</ins><span class="cx">                     }
</span><span class="cx">                 }
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return exec-&gt;vm().throwException(exec, createReferenceError(exec, ASCIILiteral(&quot;Static function property defined with NULL callAsFunction callback.&quot;)));
</del><ins>+    return JSValue::encode(exec-&gt;vm().throwException(exec, createReferenceError(exec, ASCIILiteral(&quot;Static function property defined with NULL callAsFunction callback.&quot;))));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;class Parent&gt;
</span><del>-JSValue JSCallbackObject&lt;Parent&gt;::callbackGetter(ExecState* exec, JSValue slotParent, PropertyName propertyName)
</del><ins>+EncodedJSValue JSCallbackObject&lt;Parent&gt;::callbackGetter(ExecState* exec, EncodedJSValue slotParent, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><span class="cx">     JSCallbackObject* thisObj = asCallbackObject(slotParent);
</span><span class="cx">     
</span><span class="lines">@@ -632,15 +639,15 @@
</span><span class="cx">                 }
</span><span class="cx">                 if (exception) {
</span><span class="cx">                     exec-&gt;vm().throwException(exec, toJS(exec, exception));
</span><del>-                    return jsUndefined();
</del><ins>+                    return JSValue::encode(jsUndefined());
</ins><span class="cx">                 }
</span><span class="cx">                 if (value)
</span><del>-                    return toJS(exec, value);
</del><ins>+                    return JSValue::encode(toJS(exec, value));
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return exec-&gt;vm().throwException(exec, createReferenceError(exec, ASCIILiteral(&quot;hasProperty callback returned true for a property that doesn't exist.&quot;)));
</del><ins>+    return JSValue::encode(exec-&gt;vm().throwException(exec, createReferenceError(exec, ASCIILiteral(&quot;hasProperty callback returned true for a property that doesn't exist.&quot;))));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/ChangeLog        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -1,3 +1,66 @@
</span><ins>+2013-12-04  Oliver Hunt  &lt;oliver@apple.com&gt;
+
+        Refactor static getter function prototype to include thisValue in addition to the base object
+        https://bugs.webkit.org/show_bug.cgi?id=124461
+
+        Reviewed by Geoffrey Garen.
+
+        Add thisValue parameter to static getter prototype, and switch
+        from JSValue to EncodedJSValue for parameters and return value.
+
+        Currently none of the static getters use the thisValue, but
+        separating out the refactoring will prevent future changes
+        from getting lost in the noise of refactoring.  This means
+        that this patch does not result in any change in behaviour.
+
+        * API/JSCallbackObject.h:
+        * API/JSCallbackObjectFunctions.h:
+        (JSC::::asCallbackObject):
+        (JSC::::staticFunctionGetter):
+        (JSC::::callbackGetter):
+        * jit/JITOperations.cpp:
+        * runtime/JSActivation.cpp:
+        (JSC::JSActivation::argumentsGetter):
+        * runtime/JSActivation.h:
+        * runtime/JSFunction.cpp:
+        (JSC::JSFunction::argumentsGetter):
+        (JSC::JSFunction::callerGetter):
+        (JSC::JSFunction::lengthGetter):
+        (JSC::JSFunction::nameGetter):
+        * runtime/JSFunction.h:
+        * runtime/JSObject.h:
+        (JSC::PropertySlot::getValue):
+        * runtime/NumberConstructor.cpp:
+        (JSC::numberConstructorNaNValue):
+        (JSC::numberConstructorNegInfinity):
+        (JSC::numberConstructorPosInfinity):
+        (JSC::numberConstructorMaxValue):
+        (JSC::numberConstructorMinValue):
+        * runtime/PropertySlot.h:
+        * runtime/RegExpConstructor.cpp:
+        (JSC::asRegExpConstructor):
+        (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):
+        * runtime/RegExpObject.cpp:
+        (JSC::asRegExpObject):
+        (JSC::regExpObjectGlobal):
+        (JSC::regExpObjectIgnoreCase):
+        (JSC::regExpObjectMultiline):
+        (JSC::regExpObjectSource):
+
</ins><span class="cx"> 2013-12-04  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         FTL should use cvttsd2si directly for double-to-int32 conversions
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -222,7 +222,7 @@
</span><span class="cx">     
</span><span class="cx">     Identifier ident(vm, uid);
</span><span class="cx">     
</span><del>-    return JSValue::encode(function(exec, asObject(base), ident));
</del><ins>+    return function(exec, JSValue::encode(base), JSValue::encode(base), ident);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> EncodedJSValue JIT_OPERATION operationCallGetter(ExecState* exec, JSCell* base, JSCell* getterSetter)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSActivationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSActivation.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSActivation.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/runtime/JSActivation.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -210,17 +210,17 @@
</span><span class="cx">     return exec-&gt;globalThisValue();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSActivation::argumentsGetter(ExecState*, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue JSActivation::argumentsGetter(ExecState*, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSActivation* activation = jsCast&lt;JSActivation*&gt;(slotBase);
</del><ins>+    JSActivation* activation = jsCast&lt;JSActivation*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     CallFrame* callFrame = CallFrame::create(reinterpret_cast&lt;Register*&gt;(activation-&gt;m_registers));
</span><span class="cx">     ASSERT(!activation-&gt;isTornOff() &amp;&amp; (callFrame-&gt;codeBlock()-&gt;usesArguments() || callFrame-&gt;codeBlock()-&gt;usesEval()));
</span><span class="cx">     if (activation-&gt;isTornOff() || !(callFrame-&gt;codeBlock()-&gt;usesArguments() || callFrame-&gt;codeBlock()-&gt;usesEval()))
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx"> 
</span><span class="cx">     VirtualRegister argumentsRegister = callFrame-&gt;codeBlock()-&gt;argumentsRegister();
</span><span class="cx">     if (JSValue arguments = callFrame-&gt;uncheckedR(argumentsRegister.offset()).jsValue())
</span><del>-        return arguments;
</del><ins>+        return JSValue::encode(arguments);
</ins><span class="cx">     int realArgumentsRegister = unmodifiedArgumentsRegister(argumentsRegister).offset();
</span><span class="cx"> 
</span><span class="cx">     JSValue arguments = JSValue(Arguments::create(callFrame-&gt;vm(), callFrame));
</span><span class="lines">@@ -228,7 +228,7 @@
</span><span class="cx">     callFrame-&gt;uncheckedR(realArgumentsRegister) = arguments;
</span><span class="cx">     
</span><span class="cx">     ASSERT(callFrame-&gt;uncheckedR(realArgumentsRegister).jsValue().inherits(Arguments::info()));
</span><del>-    return callFrame-&gt;uncheckedR(realArgumentsRegister).jsValue();
</del><ins>+    return JSValue::encode(callFrame-&gt;uncheckedR(realArgumentsRegister).jsValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSActivationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSActivation.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSActivation.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/runtime/JSActivation.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx">     bool symbolTablePut(ExecState*, PropertyName, JSValue, bool shouldThrow);
</span><span class="cx">     bool symbolTablePutWithAttributes(VM&amp;, PropertyName, JSValue, unsigned attributes);
</span><span class="cx"> 
</span><del>-    static JSValue argumentsGetter(ExecState*, JSValue, PropertyName);
</del><ins>+    static EncodedJSValue argumentsGetter(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
</ins><span class="cx"> 
</span><span class="cx">     static size_t allocationSize(SymbolTable*);
</span><span class="cx">     static size_t storageOffset();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSFunction.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSFunction.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/runtime/JSFunction.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -212,12 +212,12 @@
</span><span class="cx">     return functor.result();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSFunction::argumentsGetter(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue JSFunction::argumentsGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(slotBase);
</del><ins>+    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ASSERT(!thisObj-&gt;isHostFunction());
</span><span class="cx"> 
</span><del>-    return retrieveArguments(exec, thisObj);
</del><ins>+    return JSValue::encode(retrieveArguments(exec, thisObj));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> class RetrieveCallerFunctionFunctor {
</span><span class="lines">@@ -267,33 +267,33 @@
</span><span class="cx">     return functor.result();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSFunction::callerGetter(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue JSFunction::callerGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(slotBase);
</del><ins>+    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ASSERT(!thisObj-&gt;isHostFunction());
</span><span class="cx">     JSValue caller = retrieveCallerFunction(exec, thisObj);
</span><span class="cx"> 
</span><span class="cx">     // See ES5.1 15.3.5.4 - Function.caller may not be used to retrieve a strict caller.
</span><span class="cx">     if (!caller.isObject() || !asObject(caller)-&gt;inherits(JSFunction::info()))
</span><del>-        return caller;
</del><ins>+        return JSValue::encode(caller);
</ins><span class="cx">     JSFunction* function = jsCast&lt;JSFunction*&gt;(caller);
</span><span class="cx">     if (function-&gt;isHostFunction() || !function-&gt;jsExecutable()-&gt;isStrictMode())
</span><del>-        return caller;
-    return throwTypeError(exec, ASCIILiteral(&quot;Function.caller used to retrieve strict caller&quot;));
</del><ins>+        return JSValue::encode(caller);
+    return JSValue::encode(throwTypeError(exec, ASCIILiteral(&quot;Function.caller used to retrieve strict caller&quot;)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSFunction::lengthGetter(ExecState*, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue JSFunction::lengthGetter(ExecState*, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(slotBase);
</del><ins>+    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ASSERT(!thisObj-&gt;isHostFunction());
</span><del>-    return jsNumber(thisObj-&gt;jsExecutable()-&gt;parameterCount());
</del><ins>+    return JSValue::encode(jsNumber(thisObj-&gt;jsExecutable()-&gt;parameterCount()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSFunction::nameGetter(ExecState*, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue JSFunction::nameGetter(ExecState*, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(slotBase);
</del><ins>+    JSFunction* thisObj = jsCast&lt;JSFunction*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ASSERT(!thisObj-&gt;isHostFunction());
</span><del>-    return thisObj-&gt;jsExecutable()-&gt;nameValue();
</del><ins>+    return JSValue::encode(thisObj-&gt;jsExecutable()-&gt;nameValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool JSFunction::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSFunctionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSFunction.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSFunction.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/runtime/JSFunction.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -171,10 +171,10 @@
</span><span class="cx">         
</span><span class="cx">         JS_EXPORT_PRIVATE bool isHostFunctionNonInline() const;
</span><span class="cx"> 
</span><del>-        static JSValue argumentsGetter(ExecState*, JSValue, PropertyName);
-        static JSValue callerGetter(ExecState*, JSValue, PropertyName);
-        static JSValue lengthGetter(ExecState*, JSValue, PropertyName);
-        static JSValue nameGetter(ExecState*, JSValue, PropertyName);
</del><ins>+        static EncodedJSValue argumentsGetter(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+        static EncodedJSValue callerGetter(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+        static EncodedJSValue lengthGetter(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+        static EncodedJSValue nameGetter(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
</ins><span class="cx"> 
</span><span class="cx">         WriteBarrier&lt;ExecutableBase&gt; m_executable;
</span><span class="cx">         WriteBarrier&lt;JSScope&gt; m_scope;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -1535,10 +1535,10 @@
</span><span class="cx">     if (m_propertyType == TypeValue)
</span><span class="cx">         return JSValue::decode(m_data.value);
</span><span class="cx">     if (m_propertyType == TypeCustomIndex)
</span><del>-        return m_data.customIndex.getIndexValue(exec, slotBase(), m_data.customIndex.index);
</del><ins>+        return JSValue::decode(m_data.customIndex.getIndexValue(exec, JSValue::encode(slotBase()), JSValue::encode(m_thisValue), m_data.customIndex.index));
</ins><span class="cx">     if (m_propertyType == TypeGetter)
</span><span class="cx">         return functionGetter(exec);
</span><del>-    return m_data.custom.getValue(exec, slotBase(), propertyName);
</del><ins>+    return JSValue::decode(m_data.custom.getValue(exec, JSValue::encode(slotBase()), JSValue::encode(m_thisValue), 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">@@ -1546,10 +1546,10 @@
</span><span class="cx">     if (m_propertyType == TypeValue)
</span><span class="cx">         return JSValue::decode(m_data.value);
</span><span class="cx">     if (m_propertyType == TypeCustomIndex)
</span><del>-        return m_data.customIndex.getIndexValue(exec, slotBase(), m_data.customIndex.index);
</del><ins>+        return JSValue::decode(m_data.customIndex.getIndexValue(exec, JSValue::encode(slotBase()), JSValue::encode(m_thisValue), m_data.customIndex.index));
</ins><span class="cx">     if (m_propertyType == TypeGetter)
</span><span class="cx">         return functionGetter(exec);
</span><del>-    return m_data.custom.getValue(exec, slotBase(), Identifier::from(exec, propertyName));
</del><ins>+    return JSValue::decode(m_data.custom.getValue(exec, JSValue::encode(slotBase()), JSValue::encode(m_thisValue), Identifier::from(exec, propertyName)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNumberConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -29,11 +29,11 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-static JSValue numberConstructorNaNValue(ExecState*, JSValue, PropertyName);
-static JSValue numberConstructorNegInfinity(ExecState*, JSValue, PropertyName);
-static JSValue numberConstructorPosInfinity(ExecState*, JSValue, PropertyName);
-static JSValue numberConstructorMaxValue(ExecState*, JSValue, PropertyName);
-static JSValue numberConstructorMinValue(ExecState*, JSValue, PropertyName);
</del><ins>+static EncodedJSValue numberConstructorNaNValue(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue numberConstructorNegInfinity(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue numberConstructorPosInfinity(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue numberConstructorMaxValue(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue numberConstructorMinValue(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span><span class="lines">@@ -82,29 +82,29 @@
</span><span class="cx">     lookupPut&lt;NumberConstructor, InternalFunction&gt;(exec, propertyName, value, ExecState::numberConstructorTable(exec), jsCast&lt;NumberConstructor*&gt;(cell), slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue numberConstructorNaNValue(ExecState*, JSValue, PropertyName)
</del><ins>+static EncodedJSValue numberConstructorNaNValue(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return jsNaN();
</del><ins>+    return JSValue::encode(jsNaN());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue numberConstructorNegInfinity(ExecState*, JSValue, PropertyName)
</del><ins>+static EncodedJSValue numberConstructorNegInfinity(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return jsNumber(-std::numeric_limits&lt;double&gt;::infinity());
</del><ins>+    return JSValue::encode(jsNumber(-std::numeric_limits&lt;double&gt;::infinity()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue numberConstructorPosInfinity(ExecState*, JSValue, PropertyName)
</del><ins>+static EncodedJSValue numberConstructorPosInfinity(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return jsNumber(std::numeric_limits&lt;double&gt;::infinity());
</del><ins>+    return JSValue::encode(jsNumber(std::numeric_limits&lt;double&gt;::infinity()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue numberConstructorMaxValue(ExecState*, JSValue, PropertyName)
</del><ins>+static EncodedJSValue numberConstructorMaxValue(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return jsNumber(1.7976931348623157E+308);
</del><ins>+    return JSValue::encode(jsNumber(1.7976931348623157E+308));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue numberConstructorMinValue(ExecState*, JSValue, PropertyName)
</del><ins>+static EncodedJSValue numberConstructorMinValue(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return jsNumber(5E-324);
</del><ins>+    return JSValue::encode(jsNumber(5E-324));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ECMA 15.7.1
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertySloth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertySlot.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertySlot.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/runtime/PropertySlot.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -60,8 +60,8 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    typedef JSValue (*GetValueFunc)(ExecState*, JSValue slotBase, PropertyName);
-    typedef JSValue (*GetIndexValueFunc)(ExecState*, JSValue slotBase, unsigned);
</del><ins>+    typedef EncodedJSValue (*GetValueFunc)(ExecState*, EncodedJSValue slotBase, EncodedJSValue thisValue, PropertyName);
+    typedef EncodedJSValue (*GetIndexValueFunc)(ExecState*, EncodedJSValue slotBase, EncodedJSValue thisValue, unsigned);
</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">@@ -226,7 +226,7 @@
</span><span class="cx"> 
</span><span class="cx">     PropertyType m_propertyType;
</span><span class="cx">     PropertyOffset m_offset;
</span><del>-    JSValue m_thisValue;
</del><ins>+    const JSValue m_thisValue;
</ins><span class="cx">     JSObject* m_slotBase;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -29,21 +29,21 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-static JSValue regExpConstructorInput(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorMultiline(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorLastMatch(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorLastParen(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorLeftContext(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorRightContext(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorDollar1(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorDollar2(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorDollar3(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorDollar4(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorDollar5(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorDollar6(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorDollar7(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorDollar8(ExecState*, JSValue, PropertyName);
-static JSValue regExpConstructorDollar9(ExecState*, JSValue, PropertyName);
</del><ins>+static EncodedJSValue regExpConstructorInput(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorMultiline(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorLastMatch(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorLastParen(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorLeftContext(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorRightContext(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar1(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar2(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar3(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar4(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar5(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar6(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar7(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar8(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpConstructorDollar9(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> static void setRegExpConstructorInput(ExecState*, JSObject*, JSValue);
</span><span class="cx"> static void setRegExpConstructorMultiline(ExecState*, JSObject*, JSValue);
</span><span class="lines">@@ -158,79 +158,84 @@
</span><span class="cx">     return getStaticValueSlot&lt;RegExpConstructor, InternalFunction&gt;(exec, ExecState::regExpConstructorTable(exec), jsCast&lt;RegExpConstructor*&gt;(object), propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorDollar1(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+static inline RegExpConstructor* asRegExpConstructor(EncodedJSValue value)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getBackref(exec, 1);
</del><ins>+    return jsCast&lt;RegExpConstructor*&gt;(JSValue::decode(value));
</ins><span class="cx"> }
</span><ins>+    
+EncodedJSValue regExpConstructorDollar1(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
+{
+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 1));
+}
</ins><span class="cx"> 
</span><del>-JSValue regExpConstructorDollar2(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar2(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getBackref(exec, 2);
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 2));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorDollar3(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar3(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getBackref(exec, 3);
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 3));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorDollar4(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar4(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getBackref(exec, 4);
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 4));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorDollar5(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar5(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getBackref(exec, 5);
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 5));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorDollar6(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar6(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getBackref(exec, 6);
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 6));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorDollar7(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar7(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getBackref(exec, 7);
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 7));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorDollar8(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar8(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getBackref(exec, 8);
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 8));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorDollar9(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorDollar9(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getBackref(exec, 9);
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 9));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorInput(ExecState*, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorInput(ExecState*, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;input();
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;input());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorMultiline(ExecState*, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorMultiline(ExecState*, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return jsBoolean(asRegExpConstructor(slotBase)-&gt;multiline());
</del><ins>+    return JSValue::encode(jsBoolean(asRegExpConstructor(slotBase)-&gt;multiline()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorLastMatch(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorLastMatch(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getBackref(exec, 0);
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getBackref(exec, 0));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorLastParen(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorLastParen(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getLastParen(exec);
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getLastParen(exec));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorLeftContext(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorLeftContext(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getLeftContext(exec);
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getLeftContext(exec));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpConstructorRightContext(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpConstructorRightContext(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return asRegExpConstructor(slotBase)-&gt;getRightContext(exec);
</del><ins>+    return JSValue::encode(asRegExpConstructor(slotBase)-&gt;getRightContext(exec));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RegExpConstructor::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -39,10 +39,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-static JSValue regExpObjectGlobal(ExecState*, JSValue, PropertyName);
-static JSValue regExpObjectIgnoreCase(ExecState*, JSValue, PropertyName);
-static JSValue regExpObjectMultiline(ExecState*, JSValue, PropertyName);
-static JSValue regExpObjectSource(ExecState*, JSValue, PropertyName);
</del><ins>+static EncodedJSValue regExpObjectGlobal(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpObjectIgnoreCase(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpObjectMultiline(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+static EncodedJSValue regExpObjectSource(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span><span class="lines">@@ -155,19 +155,24 @@
</span><span class="cx">     return Base::defineOwnProperty(object, exec, propertyName, descriptor, shouldThrow);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpObjectGlobal(ExecState*, JSValue slotBase, PropertyName)
</del><ins>+static inline RegExpObject* asRegExpObject(EncodedJSValue value)
</ins><span class="cx"> {
</span><del>-    return jsBoolean(asRegExpObject(slotBase)-&gt;regExp()-&gt;global());
</del><ins>+    return jsCast&lt;RegExpObject*&gt;(JSValue::decode(value));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpObjectIgnoreCase(ExecState*, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpObjectGlobal(ExecState*, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return jsBoolean(asRegExpObject(slotBase)-&gt;regExp()-&gt;ignoreCase());
</del><ins>+    return JSValue::encode(jsBoolean(asRegExpObject(slotBase)-&gt;regExp()-&gt;global()));
</ins><span class="cx"> }
</span><ins>+
+EncodedJSValue regExpObjectIgnoreCase(ExecState*, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
+{
+    return JSValue::encode(jsBoolean(asRegExpObject(slotBase)-&gt;regExp()-&gt;ignoreCase()));
+}
</ins><span class="cx">  
</span><del>-JSValue regExpObjectMultiline(ExecState*, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue regExpObjectMultiline(ExecState*, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {            
</span><del>-    return jsBoolean(asRegExpObject(slotBase)-&gt;regExp()-&gt;multiline());
</del><ins>+    return JSValue::encode(jsBoolean(asRegExpObject(slotBase)-&gt;regExp()-&gt;multiline()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename CharacterType&gt;
</span><span class="lines">@@ -276,12 +281,14 @@
</span><span class="cx">     return jsString(exec, result.toString());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue regExpObjectSource(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+    
+    
+EncodedJSValue regExpObjectSource(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     String pattern = asRegExpObject(slotBase)-&gt;regExp()-&gt;pattern();
</span><span class="cx">     if (pattern.is8Bit())
</span><del>-        return regExpObjectSourceInternal(exec, pattern, pattern.characters8(), pattern.length());
-    return regExpObjectSourceInternal(exec, pattern, pattern.characters16(), pattern.length());
</del><ins>+        return JSValue::encode(regExpObjectSourceInternal(exec, pattern, pattern.characters8(), pattern.length()));
+    return JSValue::encode(regExpObjectSourceInternal(exec, pattern, pattern.characters16(), pattern.length()));
</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></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/ChangeLog        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -1,3 +1,87 @@
</span><ins>+2013-12-04  Oliver Hunt  &lt;oliver@apple.com&gt;
+
+        Refactor static getter function prototype to include thisValue in addition to the base object
+        https://bugs.webkit.org/show_bug.cgi?id=124461
+
+        Reviewed by Geoffrey Garen.
+
+        Change bindings codegen to produce static getter functions
+        with the correct types.  Also update the many custom implementations
+        to the new type.
+
+        No change in behaviour.
+
+        * bindings/js/JSCSSStyleDeclarationCustom.cpp:
+        (WebCore::cssPropertyGetterPixelOrPosPrefixCallback):
+        (WebCore::cssPropertyGetterCallback):
+        * bindings/js/JSDOMBinding.cpp:
+        (WebCore::objectToStringFunctionGetter):
+        * bindings/js/JSDOMBinding.h:
+        * bindings/js/JSDOMMimeTypeArrayCustom.cpp:
+        (WebCore::JSDOMMimeTypeArray::nameGetter):
+        * bindings/js/JSDOMPluginArrayCustom.cpp:
+        (WebCore::JSDOMPluginArray::nameGetter):
+        * bindings/js/JSDOMPluginCustom.cpp:
+        (WebCore::JSDOMPlugin::nameGetter):
+        * bindings/js/JSDOMStringMapCustom.cpp:
+        (WebCore::JSDOMStringMap::nameGetter):
+        * bindings/js/JSDOMWindowCustom.cpp:
+        (WebCore::nonCachingStaticFunctionGetter):
+        (WebCore::childFrameGetter):
+        (WebCore::indexGetter):
+        (WebCore::namedItemGetter):
+        * bindings/js/JSHTMLAllCollectionCustom.cpp:
+        (WebCore::JSHTMLAllCollection::nameGetter):
+        * bindings/js/JSHTMLCollectionCustom.cpp:
+        (WebCore::JSHTMLCollection::nameGetter):
+        * bindings/js/JSHTMLDocumentCustom.cpp:
+        (WebCore::JSHTMLDocument::nameGetter):
+        * bindings/js/JSHTMLFormControlsCollectionCustom.cpp:
+        (WebCore::JSHTMLFormControlsCollection::nameGetter):
+        * bindings/js/JSHTMLFormElementCustom.cpp:
+        (WebCore::JSHTMLFormElement::nameGetter):
+        * bindings/js/JSHTMLFrameSetElementCustom.cpp:
+        (WebCore::JSHTMLFrameSetElement::nameGetter):
+        * bindings/js/JSHistoryCustom.cpp:
+        (WebCore::nonCachingStaticBackFunctionGetter):
+        (WebCore::nonCachingStaticForwardFunctionGetter):
+        (WebCore::nonCachingStaticGoFunctionGetter):
+        * bindings/js/JSJavaScriptCallFrameCustom.cpp:
+        (WebCore::JSJavaScriptCallFrame::scopeType):
+        * bindings/js/JSLocationCustom.cpp:
+        (WebCore::nonCachingStaticReplaceFunctionGetter):
+        (WebCore::nonCachingStaticReloadFunctionGetter):
+        (WebCore::nonCachingStaticAssignFunctionGetter):
+        * bindings/js/JSNamedNodeMapCustom.cpp:
+        (WebCore::JSNamedNodeMap::nameGetter):
+        * bindings/js/JSNodeListCustom.cpp:
+        (WebCore::JSNodeList::nameGetter):
+        * bindings/js/JSPluginElementFunctions.cpp:
+        (WebCore::pluginElementPropertyGetter):
+        * bindings/js/JSPluginElementFunctions.h:
+        * bindings/js/JSRTCStatsResponseCustom.cpp:
+        (WebCore::JSRTCStatsResponse::nameGetter):
+        * bindings/js/JSStorageCustom.cpp:
+        (WebCore::JSStorage::nameGetter):
+        * bindings/js/JSStyleSheetListCustom.cpp:
+        (WebCore::JSStyleSheetList::nameGetter):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateHeader):
+        (GenerateImplementation):
+        (GenerateParametersCheck):
+        * bridge/runtime_array.cpp:
+        (JSC::RuntimeArray::lengthGetter):
+        (JSC::RuntimeArray::indexGetter):
+        * bridge/runtime_array.h:
+        * bridge/runtime_method.cpp:
+        (JSC::RuntimeMethod::lengthGetter):
+        * bridge/runtime_method.h:
+        * bridge/runtime_object.cpp:
+        (JSC::Bindings::RuntimeObject::fallbackObjectGetter):
+        (JSC::Bindings::RuntimeObject::fieldGetter):
+        (JSC::Bindings::RuntimeObject::methodGetter):
+        * bridge/runtime_object.h:
+
</ins><span class="cx"> 2013-12-05  Tim Horton  &lt;timothy_horton@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove Image::decodedSize()
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCSSStyleDeclarationCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -303,9 +303,9 @@
</span><span class="cx">     return getPropertyValueFallback(exec, thisObj, propertyID);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue cssPropertyGetterPixelOrPosPrefixCallback(ExecState* exec, JSValue slotBase, unsigned propertyID)
</del><ins>+static EncodedJSValue cssPropertyGetterPixelOrPosPrefixCallback(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, unsigned propertyID)
</ins><span class="cx"> {
</span><del>-    return cssPropertyGetterPixelOrPosPrefix(exec, jsCast&lt;JSCSSStyleDeclaration*&gt;(asObject(slotBase)), propertyID);
</del><ins>+    return JSValue::encode(cssPropertyGetterPixelOrPosPrefix(exec, jsCast&lt;JSCSSStyleDeclaration*&gt;(JSValue::decode(slotBase)), propertyID));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue cssPropertyGetter(ExecState* exec, JSCSSStyleDeclaration* thisObj, unsigned propertyID)
</span><span class="lines">@@ -317,9 +317,9 @@
</span><span class="cx">     return getPropertyValueFallback(exec, thisObj, propertyID);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue cssPropertyGetterCallback(ExecState* exec, JSValue slotBase, unsigned propertyID)
</del><ins>+static EncodedJSValue cssPropertyGetterCallback(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, unsigned propertyID)
</ins><span class="cx"> {
</span><del>-    return cssPropertyGetter(exec, jsCast&lt;JSCSSStyleDeclaration*&gt;(asObject(slotBase)), propertyID);
</del><ins>+    return JSValue::encode(cssPropertyGetter(exec, jsCast&lt;JSCSSStyleDeclaration*&gt;(JSValue::decode(slotBase)), propertyID));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool JSCSSStyleDeclaration::getOwnPropertySlotDelegate(ExecState*, PropertyName propertyIdentifier, PropertySlot&amp; slot)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -271,9 +271,9 @@
</span><span class="cx">     frame-&gt;document()-&gt;domWindow()-&gt;printErrorMessage(message);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue objectToStringFunctionGetter(ExecState* exec, JSValue, PropertyName propertyName)
</del><ins>+EncodedJSValue objectToStringFunctionGetter(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    return JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 0, propertyName.publicName(), objectProtoFuncToString);
</del><ins>+    return JSValue::encode(JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 0, propertyName.publicName(), objectProtoFuncToString));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Structure* getCachedDOMStructure(JSDOMGlobalObject* globalObject, const ClassInfo* classInfo)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -572,7 +572,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::JSValue objectToStringFunctionGetter(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue objectToStringFunctionGetter(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> inline JSC::JSValue jsStringWithCache(JSC::ExecState* exec, const String&amp; s)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMMimeTypeArrayCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMMimeTypeArrayCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMMimeTypeArrayCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSDOMMimeTypeArrayCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -33,10 +33,12 @@
</span><span class="cx">     return mimeTypeArray-&gt;canGetItemsForName(propertyNameToAtomicString(propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSDOMMimeTypeArray::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSDOMMimeTypeArray::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSDOMMimeTypeArray* thisObj = jsCast&lt;JSDOMMimeTypeArray*&gt;(asObject(slotBase));
-    return toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().namedItem(propertyNameToAtomicString(propertyName)));
</del><ins>+    JSDOMMimeTypeArray* thisObj = jsDynamicCast&lt;JSDOMMimeTypeArray*&gt;(JSValue::decode(slotBase));
+    if (!thisObj)
+        return throwVMTypeError(exec);
+    return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().namedItem(propertyNameToAtomicString(propertyName))));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMPluginArrayCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMPluginArrayCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMPluginArrayCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSDOMPluginArrayCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -33,10 +33,10 @@
</span><span class="cx">     return pluginArray-&gt;canGetItemsForName(propertyNameToAtomicString(propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSDOMPluginArray::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSDOMPluginArray::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSDOMPluginArray* thisObj = jsCast&lt;JSDOMPluginArray*&gt;(asObject(slotBase));
-    return toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().namedItem(propertyNameToAtomicString(propertyName)));
</del><ins>+    JSDOMPluginArray* thisObj = jsCast&lt;JSDOMPluginArray*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().namedItem(propertyNameToAtomicString(propertyName))));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMPluginCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMPluginCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMPluginCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSDOMPluginCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -32,10 +32,10 @@
</span><span class="cx">     return plugin-&gt;canGetItemsForName(propertyNameToAtomicString(propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSDOMPlugin::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSDOMPlugin::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSDOMPlugin* thisObj = jsCast&lt;JSDOMPlugin*&gt;(asObject(slotBase));
-    return toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().namedItem(propertyNameToAtomicString(propertyName)));
</del><ins>+    JSDOMPlugin* thisObj = jsCast&lt;JSDOMPlugin*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().namedItem(propertyNameToAtomicString(propertyName))));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMStringMapCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -40,10 +40,10 @@
</span><span class="cx">     return impl-&gt;contains(propertyNameToAtomicString(propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSDOMStringMap::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSDOMStringMap::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSDOMStringMap* thisObj = jsCast&lt;JSDOMStringMap*&gt;(asObject(slotBase));
-    return jsStringWithCache(exec, thisObj-&gt;impl().item(propertyNameToAtomicString(propertyName)));
</del><ins>+    JSDOMStringMap* thisObj = jsCast&lt;JSDOMStringMap*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(jsStringWithCache(exec, thisObj-&gt;impl().item(propertyNameToAtomicString(propertyName))));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSDOMStringMap::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray&amp; propertyNames, EnumerationMode mode)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -67,24 +67,24 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;NativeFunction nativeFunction, int length&gt;
</span><del>-JSValue nonCachingStaticFunctionGetter(ExecState* exec, JSValue, PropertyName propertyName)
</del><ins>+EncodedJSValue nonCachingStaticFunctionGetter(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    return JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), length, propertyName.publicName(), nativeFunction);
</del><ins>+    return JSValue::encode(JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), length, propertyName.publicName(), nativeFunction));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue childFrameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+static EncodedJSValue childFrameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    return toJS(exec, jsCast&lt;JSDOMWindow*&gt;(asObject(slotBase))-&gt;impl().frame()-&gt;tree().scopedChild(propertyNameToAtomicString(propertyName))-&gt;document()-&gt;domWindow());
</del><ins>+    return JSValue::encode(toJS(exec, jsCast&lt;JSDOMWindow*&gt;(JSValue::decode(slotBase))-&gt;impl().frame()-&gt;tree().scopedChild(propertyNameToAtomicString(propertyName))-&gt;document()-&gt;domWindow()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue indexGetter(ExecState* exec, JSValue slotBase, unsigned index)
</del><ins>+static EncodedJSValue indexGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, unsigned index)
</ins><span class="cx"> {
</span><del>-    return toJS(exec, jsCast&lt;JSDOMWindow*&gt;(asObject(slotBase))-&gt;impl().frame()-&gt;tree().scopedChild(index)-&gt;document()-&gt;domWindow());
</del><ins>+    return JSValue::encode(toJS(exec, jsCast&lt;JSDOMWindow*&gt;(JSValue::decode(slotBase))-&gt;impl().frame()-&gt;tree().scopedChild(index)-&gt;document()-&gt;domWindow()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue namedItemGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+static EncodedJSValue namedItemGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSDOMWindowBase* thisObj = jsCast&lt;JSDOMWindow*&gt;(asObject(slotBase));
</del><ins>+    JSDOMWindowBase* thisObj = jsCast&lt;JSDOMWindow*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     Document* document = thisObj-&gt;impl().frame()-&gt;document();
</span><span class="cx"> 
</span><span class="cx">     ASSERT(BindingSecurity::shouldAllowAccessToDOMWindow(exec, thisObj-&gt;impl()));
</span><span class="lines">@@ -93,15 +93,15 @@
</span><span class="cx"> 
</span><span class="cx">     AtomicStringImpl* atomicPropertyName = findAtomicString(propertyName);
</span><span class="cx">     if (!atomicPropertyName || !toHTMLDocument(document)-&gt;hasWindowNamedItem(*atomicPropertyName))
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx"> 
</span><span class="cx">     if (UNLIKELY(toHTMLDocument(document)-&gt;windowNamedItemContainsMultipleElements(*atomicPropertyName))) {
</span><span class="cx">         RefPtr&lt;HTMLCollection&gt; collection = document-&gt;windowNamedItems(atomicPropertyName);
</span><span class="cx">         ASSERT(collection-&gt;length() &gt; 1);
</span><del>-        return toJS(exec, thisObj-&gt;globalObject(), WTF::getPtr(collection));
</del><ins>+        return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), WTF::getPtr(collection)));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return toJS(exec, thisObj-&gt;globalObject(), toHTMLDocument(document)-&gt;windowNamedItem(*atomicPropertyName));
</del><ins>+    return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), toHTMLDocument(document)-&gt;windowNamedItem(*atomicPropertyName)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool JSDOMWindow::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLAllCollectionCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -100,10 +100,10 @@
</span><span class="cx">     return collection-&gt;hasNamedItem(propertyNameToAtomicString(propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSHTMLAllCollection::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSHTMLAllCollection::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSHTMLAllCollection* thisObj = jsCast&lt;JSHTMLAllCollection*&gt;(asObject(slotBase));
-    return getNamedItems(exec, thisObj, propertyName);
</del><ins>+    JSHTMLAllCollection* thisObj = jsCast&lt;JSHTMLAllCollection*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(getNamedItems(exec, thisObj, propertyName));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSHTMLAllCollection::item(ExecState* exec)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLCollectionCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -45,11 +45,11 @@
</span><span class="cx">     return collection-&gt;hasNamedItem(propertyNameToAtomicString(propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSHTMLCollection::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSHTMLCollection::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSHTMLCollection* collection = jsCast&lt;JSHTMLCollection*&gt;(asObject(slotBase));
</del><ins>+    JSHTMLCollection* collection = jsCast&lt;JSHTMLCollection*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     const AtomicString&amp; name = propertyNameToAtomicString(propertyName);
</span><del>-    return toJS(exec, collection-&gt;globalObject(), collection-&gt;impl().namedItem(name));
</del><ins>+    return JSValue::encode(toJS(exec, collection-&gt;globalObject(), collection-&gt;impl().namedItem(name)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, HTMLCollection* collection)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLDocumentCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -57,28 +57,28 @@
</span><span class="cx">     return atomicPropertyName &amp;&amp; document-&gt;hasDocumentNamedItem(*atomicPropertyName);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSHTMLDocument::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSHTMLDocument::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSHTMLDocument* thisObj = jsCast&lt;JSHTMLDocument*&gt;(asObject(slotBase));
</del><ins>+    JSHTMLDocument* thisObj = jsCast&lt;JSHTMLDocument*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     HTMLDocument&amp; document = thisObj-&gt;impl();
</span><span class="cx"> 
</span><span class="cx">     AtomicStringImpl* atomicPropertyName = findAtomicString(propertyName);
</span><span class="cx">     if (!atomicPropertyName || !document.hasDocumentNamedItem(*atomicPropertyName))
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx"> 
</span><span class="cx">     if (UNLIKELY(document.documentNamedItemContainsMultipleElements(*atomicPropertyName))) {
</span><span class="cx">         RefPtr&lt;HTMLCollection&gt; collection = document.documentNamedItems(atomicPropertyName);
</span><span class="cx">         ASSERT(collection-&gt;length() &gt; 1);
</span><del>-        return toJS(exec, thisObj-&gt;globalObject(), WTF::getPtr(collection));
</del><ins>+        return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), WTF::getPtr(collection)));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     Element* element = document.documentNamedItem(*atomicPropertyName);
</span><span class="cx">     if (UNLIKELY(element-&gt;hasTagName(iframeTag))) {
</span><span class="cx">         if (Frame* frame = toHTMLIFrameElement(element)-&gt;contentFrame())
</span><del>-            return toJS(exec, frame);
</del><ins>+            return JSValue::encode(toJS(exec, frame));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return toJS(exec, thisObj-&gt;globalObject(), element);
</del><ins>+    return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), element));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Custom attributes
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLFormControlsCollectionCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLFormControlsCollectionCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLFormControlsCollectionCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSHTMLFormControlsCollectionCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -57,10 +57,10 @@
</span><span class="cx">     return collection-&gt;hasNamedItem(propertyNameToAtomicString(propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSHTMLFormControlsCollection::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSHTMLFormControlsCollection::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSHTMLFormControlsCollection* thisObj = jsCast&lt;JSHTMLFormControlsCollection*&gt;(asObject(slotBase));
-    return getNamedItems(exec, thisObj, propertyName);
</del><ins>+    JSHTMLFormControlsCollection* thisObj = jsCast&lt;JSHTMLFormControlsCollection*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(getNamedItems(exec, thisObj, propertyName));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSHTMLFormControlsCollection::namedItem(ExecState* exec)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLFormElementCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLFormElementCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLFormElementCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSHTMLFormElementCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -42,21 +42,21 @@
</span><span class="cx">     return form-&gt;hasNamedElement(propertyNameToAtomicString(propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSHTMLFormElement::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSHTMLFormElement::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSHTMLFormElement* jsForm = jsCast&lt;JSHTMLFormElement*&gt;(asObject(slotBase));
</del><ins>+    JSHTMLFormElement* jsForm = jsCast&lt;JSHTMLFormElement*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     HTMLFormElement&amp; form = jsForm-&gt;impl();
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;Ref&lt;Element&gt;&gt; namedItems;
</span><span class="cx">     form.getNamedElements(propertyNameToAtomicString(propertyName), namedItems);
</span><span class="cx">     
</span><span class="cx">     if (namedItems.isEmpty())
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx">     if (namedItems.size() == 1)
</span><del>-        return toJS(exec, jsForm-&gt;globalObject(), &amp;namedItems[0].get());
</del><ins>+        return JSValue::encode(toJS(exec, jsForm-&gt;globalObject(), &amp;namedItems[0].get()));
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: HTML5 specifies that this should be a RadioNodeList.
</span><del>-    return toJS(exec, jsForm-&gt;globalObject(), StaticElementList::adopt(namedItems).get());
</del><ins>+    return JSValue::encode(toJS(exec, jsForm-&gt;globalObject(), StaticElementList::adopt(namedItems).get()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLFrameSetElementCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLFrameSetElementCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLFrameSetElementCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSHTMLFrameSetElementCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -47,15 +47,15 @@
</span><span class="cx">     return frame &amp;&amp; frame-&gt;hasTagName(frameTag);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSHTMLFrameSetElement::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSHTMLFrameSetElement::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    HTMLElement&amp; element = jsCast&lt;JSHTMLElement*&gt;(asObject(slotBase))-&gt;impl();
</del><ins>+    HTMLElement&amp; element = jsCast&lt;JSHTMLElement*&gt;(JSValue::decode(slotBase))-&gt;impl();
</ins><span class="cx">     Node* frameElement = element.children()-&gt;namedItem(propertyNameToAtomicString(propertyName));
</span><span class="cx">     if (Document* document = toHTMLFrameElement(frameElement)-&gt;contentDocument()) {
</span><span class="cx">         if (JSDOMWindowShell* window = toJSDOMWindowShell(document-&gt;frame(), currentWorld(exec)))
</span><del>-            return window;
</del><ins>+            return JSValue::encode(window);
</ins><span class="cx">     }
</span><del>-    return jsUndefined();
</del><ins>+    return JSValue::encode(jsUndefined());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHistoryCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -38,19 +38,19 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-static JSValue nonCachingStaticBackFunctionGetter(ExecState* exec, JSValue, PropertyName propertyName)
</del><ins>+static EncodedJSValue nonCachingStaticBackFunctionGetter(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    return JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 0, propertyName.publicName(), jsHistoryPrototypeFunctionBack);
</del><ins>+    return JSValue::encode(JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 0, propertyName.publicName(), jsHistoryPrototypeFunctionBack));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue nonCachingStaticForwardFunctionGetter(ExecState* exec, JSValue, PropertyName propertyName)
</del><ins>+static EncodedJSValue nonCachingStaticForwardFunctionGetter(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    return JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 0, propertyName.publicName(), jsHistoryPrototypeFunctionForward);
</del><ins>+    return JSValue::encode(JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 0, propertyName.publicName(), jsHistoryPrototypeFunctionForward));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue nonCachingStaticGoFunctionGetter(ExecState* exec, JSValue, PropertyName propertyName)
</del><ins>+static EncodedJSValue nonCachingStaticGoFunctionGetter(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    return JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 1, propertyName.publicName(), jsHistoryPrototypeFunctionGo);
</del><ins>+    return JSValue::encode(JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 1, propertyName.publicName(), jsHistoryPrototypeFunctionGo));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool JSHistory::getOwnPropertySlotDelegate(ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSJavaScriptCallFrameCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSJavaScriptCallFrameCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSJavaScriptCallFrameCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSJavaScriptCallFrameCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -106,17 +106,17 @@
</span><span class="cx">             if (!foundLocalScope) {
</span><span class="cx">                 // First activation object is local scope, each successive activation object is closure.
</span><span class="cx">                 if (!index)
</span><del>-                    return jsJavaScriptCallFrameLOCAL_SCOPE(exec, JSValue(), Identifier());
</del><ins>+                    return JSValue::decode(jsJavaScriptCallFrameLOCAL_SCOPE(exec, EncodedJSValue(), EncodedJSValue(), Identifier()));
</ins><span class="cx">                 foundLocalScope = true;
</span><span class="cx">             } else if (!index)
</span><del>-                return jsJavaScriptCallFrameCLOSURE_SCOPE(exec, JSValue(), Identifier());
</del><ins>+                return JSValue::decode(jsJavaScriptCallFrameCLOSURE_SCOPE(exec, EncodedJSValue(), EncodedJSValue(), Identifier()));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (!index) {
</span><span class="cx">             // Last in the chain is global scope.
</span><span class="cx">             if (++iter == end)
</span><del>-                return jsJavaScriptCallFrameGLOBAL_SCOPE(exec, JSValue(), Identifier());
-            return jsJavaScriptCallFrameWITH_SCOPE(exec, JSValue(), Identifier());
</del><ins>+                return JSValue::decode(jsJavaScriptCallFrameGLOBAL_SCOPE(exec, EncodedJSValue(), EncodedJSValue(), Identifier()));
+            return JSValue::decode(jsJavaScriptCallFrameWITH_SCOPE(exec, EncodedJSValue(), EncodedJSValue(), Identifier()));
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         --index;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSLocationCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSLocationCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -30,19 +30,19 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-static JSValue nonCachingStaticReplaceFunctionGetter(ExecState* exec, JSValue, PropertyName propertyName)
</del><ins>+static EncodedJSValue nonCachingStaticReplaceFunctionGetter(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    return JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 1, propertyName.publicName(), jsLocationPrototypeFunctionReplace);
</del><ins>+    return JSValue::encode(JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 1, propertyName.publicName(), jsLocationPrototypeFunctionReplace));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue nonCachingStaticReloadFunctionGetter(ExecState* exec, JSValue, PropertyName propertyName)
</del><ins>+static EncodedJSValue nonCachingStaticReloadFunctionGetter(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    return JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 0, propertyName.publicName(), jsLocationPrototypeFunctionReload);
</del><ins>+    return JSValue::encode(JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 0, propertyName.publicName(), jsLocationPrototypeFunctionReload));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static JSValue nonCachingStaticAssignFunctionGetter(ExecState* exec, JSValue, PropertyName propertyName)
</del><ins>+static EncodedJSValue nonCachingStaticAssignFunctionGetter(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    return JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 1, propertyName.publicName(), jsLocationPrototypeFunctionAssign);
</del><ins>+    return JSValue::encode(JSFunction::create(exec-&gt;vm(), exec-&gt;lexicalGlobalObject(), 1, propertyName.publicName(), jsLocationPrototypeFunctionAssign));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool JSLocation::getOwnPropertySlotDelegate(ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSNamedNodeMapCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSNamedNodeMapCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSNamedNodeMapCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSNamedNodeMapCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -40,10 +40,10 @@
</span><span class="cx">     return impl-&gt;getNamedItem(propertyNameToAtomicString(propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSNamedNodeMap::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSNamedNodeMap::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSNamedNodeMap* thisObj = jsCast&lt;JSNamedNodeMap*&gt;(asObject(slotBase));
-    return toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().getNamedItem(propertyNameToAtomicString(propertyName)));
</del><ins>+    JSNamedNodeMap* thisObj = jsCast&lt;JSNamedNodeMap*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().getNamedItem(propertyNameToAtomicString(propertyName))));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSNodeListCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSNodeListCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSNodeListCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSNodeListCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -56,10 +56,10 @@
</span><span class="cx">     return impl-&gt;namedItem(propertyNameToAtomicString(propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSNodeList::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSNodeList::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSNodeList* thisObj = jsCast&lt;JSNodeList*&gt;(asObject(slotBase));
-    return toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().namedItem(propertyNameToAtomicString(propertyName)));
</del><ins>+    JSNodeList* thisObj = jsCast&lt;JSNodeList*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().namedItem(propertyNameToAtomicString(propertyName))));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSPluginElementFunctionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -100,14 +100,14 @@
</span><span class="cx">     return instance-&gt;createRuntimeObject(exec);
</span><span class="cx"> }
</span><span class="cx">     
</span><del>-JSValue pluginElementPropertyGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue pluginElementPropertyGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSHTMLElement* element = jsCast&lt;JSHTMLElement*&gt;(asObject(slotBase));
</del><ins>+    JSHTMLElement* element = jsCast&lt;JSHTMLElement*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     JSObject* scriptObject = pluginScriptObject(exec, element);
</span><span class="cx">     if (!scriptObject)
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx">     
</span><del>-    return scriptObject-&gt;get(exec, propertyName);
</del><ins>+    return JSValue::encode(scriptObject-&gt;get(exec, propertyName));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool pluginElementCustomGetOwnPropertySlot(ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot, JSHTMLElement* element)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSPluginElementFunctionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">     JSC::Bindings::Instance* pluginInstance(HTMLElement&amp;);
</span><span class="cx">     JSC::JSObject* pluginScriptObject(JSC::ExecState*, JSHTMLElement*);
</span><span class="cx"> 
</span><del>-    JSC::JSValue pluginElementPropertyGetter(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+    JSC::EncodedJSValue pluginElementPropertyGetter(JSC::ExecState*, JSC::EncodedJSValue, 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="trunkSourceWebCorebindingsjsJSRTCStatsResponseCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSRTCStatsResponseCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSRTCStatsResponseCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSRTCStatsResponseCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -40,10 +40,10 @@
</span><span class="cx">     return response-&gt;canGetItemsForName(propertyNameToAtomicString(propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSRTCStatsResponse::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSRTCStatsResponse::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSRTCStatsResponse* thisObj = jsCast&lt;JSRTCStatsResponse*&gt;(asObject(slotBase));
-    return toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().namedItem(propertyNameToAtomicString(propertyName)));
</del><ins>+    JSRTCStatsResponse* thisObj = jsCast&lt;JSRTCStatsResponse*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().namedItem(propertyNameToAtomicString(propertyName))));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSStorageCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -42,18 +42,18 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSStorage::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSStorage::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSStorage* thisObj = jsCast&lt;JSStorage*&gt;(asObject(slotBase));
</del><ins>+    JSStorage* thisObj = jsCast&lt;JSStorage*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">         
</span><del>-    JSValue prototype = asObject(slotBase)-&gt;prototype();
</del><ins>+    JSValue prototype = asObject(JSValue::decode(slotBase))-&gt;prototype();
</ins><span class="cx">     if (prototype.isObject() &amp;&amp; asObject(prototype)-&gt;hasProperty(exec, propertyName))
</span><del>-        return asObject(prototype)-&gt;get(exec, propertyName);
</del><ins>+        return JSValue::encode(asObject(prototype)-&gt;get(exec, propertyName));
</ins><span class="cx">  
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     JSValue result = jsStringOrNull(exec, thisObj-&gt;impl().getItem(propertyNameToString(propertyName), ec));
</span><span class="cx">     setDOMException(exec, ec);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool JSStorage::deleteProperty(JSCell* cell, ExecState* exec, PropertyName propertyName)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSStyleSheetListCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSStyleSheetListCustom.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSStyleSheetListCustom.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/js/JSStyleSheetListCustom.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -40,12 +40,12 @@
</span><span class="cx">     return styleSheetList-&gt;getNamedItem(propertyNameToString(propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSStyleSheetList::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSStyleSheetList::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSStyleSheetList* thisObj = jsCast&lt;JSStyleSheetList*&gt;(asObject(slotBase));
</del><ins>+    JSStyleSheetList* thisObj = jsCast&lt;JSStyleSheetList*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     HTMLStyleElement* element = thisObj-&gt;impl().getNamedItem(propertyNameToString(propertyName));
</span><span class="cx">     ASSERT(element);
</span><del>-    return toJS(exec, thisObj-&gt;globalObject(), element-&gt;sheet());
</del><ins>+    return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), element-&gt;sheet()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -893,7 +893,7 @@
</span><span class="cx">         if ($hasNumericIndexedGetter) {
</span><span class="cx">             push(@headerContent, &quot;    JSC::JSValue getByIndex(JSC::ExecState*, unsigned index);\n&quot;);
</span><span class="cx">         } else {
</span><del>-            push(@headerContent, &quot;    static JSC::JSValue indexGetter(JSC::ExecState*, JSC::JSValue, unsigned);\n&quot;);
</del><ins>+            push(@headerContent, &quot;    static JSC::EncodedJSValue indexGetter(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, unsigned);\n&quot;);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -905,7 +905,7 @@
</span><span class="cx">     if ($namedGetterFunction || $interface-&gt;extendedAttributes-&gt;{&quot;CustomNamedGetter&quot;}) {
</span><span class="cx">         push(@headerContent, &quot;private:\n&quot;);
</span><span class="cx">         push(@headerContent, &quot;    static bool canGetItemsForName(JSC::ExecState*, $interfaceName*, JSC::PropertyName);\n&quot;);
</span><del>-        push(@headerContent, &quot;    static JSC::JSValue nameGetter(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);\n&quot;);
</del><ins>+        push(@headerContent, &quot;    static JSC::EncodedJSValue nameGetter(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);\n&quot;);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     push(@headerContent, &quot;};\n\n&quot;);
</span><span class="lines">@@ -1041,7 +1041,7 @@
</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, $attribute);
</span><del>-            push(@headerContent, &quot;JSC::JSValue ${getter}(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);\n&quot;);
</del><ins>+            push(@headerContent, &quot;JSC::EncodedJSValue ${getter}(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);\n&quot;);
</ins><span class="cx">             if (!IsReadonly($attribute)) {
</span><span class="cx">                 my $setter = GetAttributeSetterName($interfaceName, $className, $attribute);
</span><span class="cx">                 push(@headerContent, &quot;void ${setter}(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);\n&quot;);
</span><span class="lines">@@ -1051,7 +1051,7 @@
</span><span class="cx">         
</span><span class="cx">         if (!$interface-&gt;extendedAttributes-&gt;{&quot;NoInterfaceObject&quot;}) {
</span><span class="cx">             my $getter = &quot;js&quot; . $interfaceName . &quot;Constructor&quot;;
</span><del>-            push(@headerContent, &quot;JSC::JSValue ${getter}(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);\n&quot;);
</del><ins>+            push(@headerContent, &quot;JSC::EncodedJSValue ${getter}(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);\n&quot;);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if ($interface-&gt;extendedAttributes-&gt;{&quot;ReplaceableConstructor&quot;}) {
</span><span class="lines">@@ -1066,7 +1066,7 @@
</span><span class="cx">             my $conditionalString = $codeGenerator-&gt;GenerateConditionalString($constant);
</span><span class="cx">             push(@headerContent, &quot;#if ${conditionalString}\n&quot;) if $conditionalString;
</span><span class="cx">             my $getter = &quot;js&quot; . $interfaceName . $codeGenerator-&gt;WK_ucfirst($constant-&gt;name);
</span><del>-            push(@headerContent, &quot;JSC::JSValue ${getter}(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);\n&quot;);
</del><ins>+            push(@headerContent, &quot;JSC::EncodedJSValue ${getter}(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);\n&quot;);
</ins><span class="cx">             push(@headerContent, &quot;#endif\n&quot;) if $conditionalString;
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -1875,11 +1875,11 @@
</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;JSValue ${getFunctionName}(ExecState* exec, JSValue slotBase, PropertyName)\n&quot;);
</del><ins>+                push(@implContent, &quot;EncodedJSValue ${getFunctionName}(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)\n&quot;);
</ins><span class="cx">                 push(@implContent, &quot;{\n&quot;);
</span><span class="cx"> 
</span><span class="cx">                 if (!$attribute-&gt;isStatic || $attribute-&gt;signature-&gt;type =~ /Constructor$/) {
</span><del>-                    push(@implContent, &quot;    ${className}* castedThis = jsCast&lt;$className*&gt;(asObject(slotBase));\n&quot;);
</del><ins>+                    push(@implContent, &quot;    ${className}* castedThis = jsDynamicCast&lt;$className*&gt;(JSValue::decode(slotBase));\n&quot;);
</ins><span class="cx">                 } else {
</span><span class="cx">                     push(@implContent, &quot;    UNUSED_PARAM(slotBase);\n&quot;);
</span><span class="cx">                 }
</span><span class="lines">@@ -1890,16 +1890,16 @@
</span><span class="cx">                         AddToImplIncludes(&quot;RuntimeEnabledFeatures.h&quot;);
</span><span class="cx">                         my $enable_function = GetRuntimeEnableFunctionName($attribute-&gt;signature);
</span><span class="cx">                         push(@implContent, &quot;    if (!${enable_function}())\n&quot;);
</span><del>-                        push(@implContent, &quot;        return jsUndefined();\n&quot;);
</del><ins>+                        push(@implContent, &quot;        return JSValue::encode(jsUndefined());\n&quot;);
</ins><span class="cx">                     } elsif ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;EnabledBySetting&quot;}) {
</span><span class="cx">                         AddToImplIncludes(&quot;Frame.h&quot;);
</span><span class="cx">                         AddToImplIncludes(&quot;Settings.h&quot;);
</span><span class="cx">                         my $enable_function = ToMethodName($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;EnabledBySetting&quot;}) . &quot;Enabled&quot;;
</span><span class="cx">                         push(@implContent, &quot;    if (!castedThis-&gt;impl().frame())\n&quot;);
</span><del>-                        push(@implContent, &quot;        return jsUndefined();\n&quot;);
</del><ins>+                        push(@implContent, &quot;        return JSValue::encode(jsUndefined());\n&quot;);
</ins><span class="cx">                         push(@implContent, &quot;    Settings&amp; settings = castedThis-&gt;impl().frame()-&gt;settings();\n&quot;);
</span><span class="cx">                         push(@implContent, &quot;    if (!settings.$enable_function())\n&quot;);
</span><del>-                        push(@implContent, &quot;        return jsUndefined();\n&quot;);
</del><ins>+                        push(@implContent, &quot;        return JSValue::encode(jsUndefined());\n&quot;);
</ins><span class="cx">                     }
</span><span class="cx">                 }
</span><span class="cx"> 
</span><span class="lines">@@ -1911,15 +1911,15 @@
</span><span class="cx">                     !$attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;DoNotCheckSecurity&quot;} &amp;&amp;
</span><span class="cx">                     !$attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;DoNotCheckSecurityOnGetter&quot;}) {
</span><span class="cx">                     push(@implContent, &quot;    if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis-&gt;impl()))\n&quot;);
</span><del>-                    push(@implContent, &quot;        return jsUndefined();\n&quot;);
</del><ins>+                    push(@implContent, &quot;        return JSValue::encode(jsUndefined());\n&quot;);
</ins><span class="cx">                 }
</span><span class="cx"> 
</span><span class="cx">                 if (HasCustomGetter($attribute-&gt;signature-&gt;extendedAttributes)) {
</span><del>-                    push(@implContent, &quot;    return castedThis-&gt;$implGetterFunctionName(exec);\n&quot;);
</del><ins>+                    push(@implContent, &quot;    return JSValue::encode(castedThis-&gt;$implGetterFunctionName(exec));\n&quot;);
</ins><span class="cx">                 } elsif ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CheckSecurityForNode&quot;}) {
</span><span class="cx">                     $implIncludes{&quot;JSDOMBinding.h&quot;} = 1;
</span><span class="cx">                     push(@implContent, &quot;    $interfaceName&amp; impl = castedThis-&gt;impl();\n&quot;);
</span><del>-                    push(@implContent, &quot;    return shouldAllowAccessToNode(exec, impl.&quot; . $attribute-&gt;signature-&gt;name . &quot;()) ? &quot; . NativeToJSValue($attribute-&gt;signature, 0, $interfaceName, &quot;impl.$implGetterFunctionName()&quot;, &quot;castedThis&quot;) . &quot; : jsNull();\n&quot;);
</del><ins>+                    push(@implContent, &quot;    return JSValue::encode(shouldAllowAccessToNode(exec, impl.&quot; . $attribute-&gt;signature-&gt;name . &quot;()) ? &quot; . NativeToJSValue($attribute-&gt;signature, 0, $interfaceName, &quot;impl.$implGetterFunctionName()&quot;, &quot;castedThis&quot;) . &quot; : jsNull());\n&quot;);
</ins><span class="cx">                 } elsif ($type eq &quot;EventListener&quot;) {
</span><span class="cx">                     $implIncludes{&quot;EventListener.h&quot;} = 1;
</span><span class="cx">                     push(@implContent, &quot;    UNUSED_PARAM(exec);\n&quot;);
</span><span class="lines">@@ -1931,10 +1931,10 @@
</span><span class="cx">                     } else {
</span><span class="cx">                         push(@implContent, &quot;            if (JSObject* jsFunction = jsListener-&gt;jsFunction(impl.scriptExecutionContext()))\n&quot;);
</span><span class="cx">                     }
</span><del>-                    push(@implContent, &quot;                return jsFunction;\n&quot;);
</del><ins>+                    push(@implContent, &quot;                return JSValue::encode(jsFunction);\n&quot;);
</ins><span class="cx">                     push(@implContent, &quot;        }\n&quot;);
</span><span class="cx">                     push(@implContent, &quot;    }\n&quot;);
</span><del>-                    push(@implContent, &quot;    return jsNull();\n&quot;);
</del><ins>+                    push(@implContent, &quot;    return JSValue::encode(jsNull());\n&quot;);
</ins><span class="cx">                 } elsif ($attribute-&gt;signature-&gt;type =~ /Constructor$/) {
</span><span class="cx">                     my $constructorType = $attribute-&gt;signature-&gt;type;
</span><span class="cx">                     $constructorType =~ s/Constructor$//;
</span><span class="lines">@@ -1943,10 +1943,10 @@
</span><span class="cx">                     if ($interfaceName eq &quot;DOMWindow&quot;) {
</span><span class="cx">                         my $named = ($constructorType =~ /Named$/) ? &quot;Named&quot; : &quot;&quot;;
</span><span class="cx">                         $constructorType =~ s/Named$//;
</span><del>-                        push(@implContent, &quot;    return JS&quot; . $constructorType . &quot;::get${named}Constructor(exec-&gt;vm(), castedThis);\n&quot;);
</del><ins>+                        push(@implContent, &quot;    return JSValue::encode(JS&quot; . $constructorType . &quot;::get${named}Constructor(exec-&gt;vm(), castedThis));\n&quot;);
</ins><span class="cx">                     } else {
</span><span class="cx">                        AddToImplIncludes(&quot;JS&quot; . $constructorType . &quot;.h&quot;, $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;});
</span><del>-                       push(@implContent, &quot;    return JS&quot; . $constructorType . &quot;::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject());\n&quot;);
</del><ins>+                       push(@implContent, &quot;    return JSValue::encode(JS&quot; . $constructorType . &quot;::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject()));\n&quot;);
</ins><span class="cx">                     }
</span><span class="cx">                 } elsif (!$attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;GetterRaisesException&quot;}) {
</span><span class="cx">                     push(@implContent, &quot;    UNUSED_PARAM(exec);\n&quot;) if !$attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CallWith&quot;};
</span><span class="lines">@@ -1957,10 +1957,10 @@
</span><span class="cx">                         $cacheIndex = $currentCachedAttribute;
</span><span class="cx">                         $currentCachedAttribute++;
</span><span class="cx">                         push(@implContent, &quot;    if (JSValue cachedValue = castedThis-&gt;m_&quot; . $attribute-&gt;signature-&gt;name . &quot;.get())\n&quot;);
</span><del>-                        push(@implContent, &quot;        return cachedValue;\n&quot;);
</del><ins>+                        push(@implContent, &quot;        return JSValue::encode(cachedValue);\n&quot;);
</ins><span class="cx">                     }
</span><span class="cx"> 
</span><del>-                    my @callWithArgs = GenerateCallWith($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CallWith&quot;}, \@implContent, &quot;jsUndefined()&quot;);
</del><ins>+                    my @callWithArgs = GenerateCallWith($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CallWith&quot;}, \@implContent, &quot;JSValue::encode(jsUndefined())&quot;);
</ins><span class="cx"> 
</span><span class="cx">                     if ($svgListPropertyType) {
</span><span class="cx">                         push(@implContent, &quot;    JSValue result =  &quot; . NativeToJSValue($attribute-&gt;signature, 0, $interfaceName, &quot;castedThis-&gt;impl().$implGetterFunctionName(&quot; . (join &quot;, &quot;, @callWithArgs) . &quot;)&quot;, &quot;castedThis&quot;) . &quot;;\n&quot;);
</span><span class="lines">@@ -1998,12 +1998,12 @@
</span><span class="cx"> 
</span><span class="cx">                         if ($isNullable) {
</span><span class="cx">                             push(@implContent, &quot;    if (isNull)\n&quot;);
</span><del>-                            push(@implContent, &quot;        return jsNull();\n&quot;);
</del><ins>+                            push(@implContent, &quot;        return JSValue::encode(jsNull());\n&quot;);
</ins><span class="cx">                         }
</span><span class="cx">                     }
</span><span class="cx"> 
</span><span class="cx">                     push(@implContent, &quot;    castedThis-&gt;m_&quot; . $attribute-&gt;signature-&gt;name . &quot;.set(exec-&gt;vm(), castedThis, result);\n&quot;) if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CachedAttribute&quot;});
</span><del>-                    push(@implContent, &quot;    return result;\n&quot;);
</del><ins>+                    push(@implContent, &quot;    return JSValue::encode(result);\n&quot;);
</ins><span class="cx"> 
</span><span class="cx">                 } else {
</span><span class="cx">                     my @arguments = (&quot;ec&quot;);
</span><span class="lines">@@ -2014,7 +2014,7 @@
</span><span class="cx">                         unshift(@arguments, &quot;isNull&quot;);
</span><span class="cx">                     }
</span><span class="cx"> 
</span><del>-                    unshift(@arguments, GenerateCallWith($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CallWith&quot;}, \@implContent, &quot;jsUndefined()&quot;));
</del><ins>+                    unshift(@arguments, GenerateCallWith($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CallWith&quot;}, \@implContent, &quot;JSValue::encode(jsUndefined())&quot;));
</ins><span class="cx"> 
</span><span class="cx">                     if ($svgPropertyOrListPropertyType) {
</span><span class="cx">                         push(@implContent, &quot;    $svgPropertyOrListPropertyType impl(*castedThis-&gt;impl());\n&quot;);
</span><span class="lines">@@ -2026,11 +2026,11 @@
</span><span class="cx"> 
</span><span class="cx">                     if ($isNullable) {
</span><span class="cx">                         push(@implContent, &quot;    if (isNull)\n&quot;);
</span><del>-                        push(@implContent, &quot;        return jsNull();\n&quot;);
</del><ins>+                        push(@implContent, &quot;        return JSValue::encode(jsNull());\n&quot;);
</ins><span class="cx">                     }
</span><span class="cx"> 
</span><span class="cx">                     push(@implContent, &quot;    setDOMException(exec, ec);\n&quot;);
</span><del>-                    push(@implContent, &quot;    return result;\n&quot;);
</del><ins>+                    push(@implContent, &quot;    return JSValue::encode(result);\n&quot;);
</ins><span class="cx">                 }
</span><span class="cx"> 
</span><span class="cx">                 push(@implContent, &quot;}\n\n&quot;);
</span><span class="lines">@@ -2043,16 +2043,16 @@
</span><span class="cx">             if (!$interface-&gt;extendedAttributes-&gt;{&quot;NoInterfaceObject&quot;}) {
</span><span class="cx">                 my $constructorFunctionName = &quot;js&quot; . $interfaceName . &quot;Constructor&quot;;
</span><span class="cx"> 
</span><del>-                push(@implContent, &quot;JSValue ${constructorFunctionName}(ExecState* exec, JSValue slotBase, PropertyName)\n&quot;);
</del><ins>+                push(@implContent, &quot;EncodedJSValue ${constructorFunctionName}(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)\n&quot;);
</ins><span class="cx">                 push(@implContent, &quot;{\n&quot;);
</span><del>-                push(@implContent, &quot;    ${className}* domObject = jsCast&lt;$className*&gt;(asObject(slotBase));\n&quot;);
</del><ins>+                push(@implContent, &quot;    ${className}* domObject = jsDynamicCast&lt;$className*&gt;(JSValue::decode(slotBase));\n&quot;);
</ins><span class="cx"> 
</span><span class="cx">                 if ($interface-&gt;extendedAttributes-&gt;{&quot;CheckSecurity&quot;}) {
</span><span class="cx">                     push(@implContent, &quot;    if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, domObject-&gt;impl()))\n&quot;);
</span><del>-                    push(@implContent, &quot;        return jsUndefined();\n&quot;);
</del><ins>+                    push(@implContent, &quot;        return JSValue::encode(jsUndefined());\n&quot;);
</ins><span class="cx">                 }
</span><span class="cx"> 
</span><del>-                push(@implContent, &quot;    return ${className}::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());\n&quot;);
</del><ins>+                push(@implContent, &quot;    return JSValue::encode(${className}::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));\n&quot;);
</ins><span class="cx">                 push(@implContent, &quot;}\n\n&quot;);
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="lines">@@ -2384,9 +2384,9 @@
</span><span class="cx">                     push(@implContent, &quot;        return throwVMTypeError(exec);\n&quot;);
</span><span class="cx">                 } else {
</span><span class="cx">                     push(@implContent, &quot;    JSValue thisValue = exec-&gt;hostThisValue();\n&quot;);
</span><del>-                    push(@implContent, &quot;    if (!thisValue.inherits(${className}::info()))\n&quot;);
</del><ins>+                    push(@implContent, &quot;    $className* castedThis = jsDynamicCast&lt;$className*&gt;(thisValue);\n&quot;);
+                    push(@implContent, &quot;    if (!castedThis)\n&quot;);
</ins><span class="cx">                     push(@implContent, &quot;        return throwVMTypeError(exec);\n&quot;);
</span><del>-                    push(@implContent, &quot;    $className* castedThis = jsCast&lt;$className*&gt;(asObject(thisValue));\n&quot;);
</del><span class="cx">                 }
</span><span class="cx"> 
</span><span class="cx">                 push(@implContent, &quot;    ASSERT_GC_OBJECT_INHERITS(castedThis, ${className}::info());\n&quot;);
</span><span class="lines">@@ -2484,13 +2484,13 @@
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             # FIXME: this casts into int to match our previous behavior which turned 0xFFFFFFFF in -1 for NodeFilter.SHOW_ALL
</span><del>-            push(@implContent, &quot;JSValue ${getter}(ExecState* exec, JSValue, PropertyName)\n&quot;);
</del><ins>+            push(@implContent, &quot;EncodedJSValue ${getter}(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)\n&quot;);
</ins><span class="cx">             push(@implContent, &quot;{\n&quot;);
</span><span class="cx">             if ($constant-&gt;type eq &quot;DOMString&quot;) {
</span><del>-                push(@implContent, &quot;    return jsStringOrNull(exec, String(&quot; . $constant-&gt;value . &quot;));\n&quot;);
</del><ins>+                push(@implContent, &quot;    return JSValue::encode(jsStringOrNull(exec, String(&quot; . $constant-&gt;value . &quot;)));\n&quot;);
</ins><span class="cx">             } else {
</span><span class="cx">                 push(@implContent, &quot;    UNUSED_PARAM(exec);\n&quot;);
</span><del>-                push(@implContent, &quot;    return jsNumber(static_cast&lt;int&gt;(&quot; . $constant-&gt;value . &quot;));\n&quot;);
</del><ins>+                push(@implContent, &quot;    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(&quot; . $constant-&gt;value . &quot;)));\n&quot;);
</ins><span class="cx">             }
</span><span class="cx">             push(@implContent, &quot;}\n\n&quot;);
</span><span class="cx">             push(@implContent, &quot;#endif\n&quot;) if $conditional;
</span><span class="lines">@@ -2498,15 +2498,15 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if ($indexedGetterFunction &amp;&amp; !$hasNumericIndexedGetter) {
</span><del>-        push(@implContent, &quot;\nJSValue ${className}::indexGetter(ExecState* exec, JSValue slotBase, unsigned index)\n&quot;);
</del><ins>+        push(@implContent, &quot;\nEncodedJSValue ${className}::indexGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, unsigned index)\n&quot;);
</ins><span class="cx">         push(@implContent, &quot;{\n&quot;);
</span><del>-        push(@implContent, &quot;    ${className}* thisObj = jsCast&lt;$className*&gt;(asObject(slotBase));\n&quot;);
</del><ins>+        push(@implContent, &quot;    ${className}* thisObj = jsCast&lt;$className*&gt;(JSValue::decode(slotBase));\n&quot;);
</ins><span class="cx">         push(@implContent, &quot;    ASSERT_GC_OBJECT_INHERITS(thisObj, info());\n&quot;);
</span><span class="cx">         if ($indexedGetterFunction-&gt;signature-&gt;type eq &quot;DOMString&quot;) {
</span><span class="cx">             $implIncludes{&quot;URL.h&quot;} = 1;
</span><del>-            push(@implContent, &quot;    return jsStringOrUndefined(exec, thisObj-&gt;impl().item(index));\n&quot;);
</del><ins>+            push(@implContent, &quot;    return JSValue::encode(jsStringOrUndefined(exec, thisObj-&gt;impl().item(index)));\n&quot;);
</ins><span class="cx">         } else {
</span><del>-            push(@implContent, &quot;    return toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().item(index));\n&quot;);
</del><ins>+            push(@implContent, &quot;    return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().item(index)));\n&quot;);
</ins><span class="cx">         }
</span><span class="cx">         push(@implContent, &quot;}\n\n&quot;);
</span><span class="cx">         if ($interfaceName =~ /^HTML\w*Collection$/ or $interfaceName eq &quot;RadioNodeList&quot;) {
</span><span class="lines">@@ -2537,10 +2537,10 @@
</span><span class="cx">             push(@implContent, &quot;{\n&quot;);
</span><span class="cx">             push(@implContent, &quot;    return collection-&gt;hasNamedItem(propertyNameToAtomicString(propertyName));\n&quot;);
</span><span class="cx">             push(@implContent, &quot;}\n\n&quot;);
</span><del>-            push(@implContent, &quot;JSValue ${className}::nameGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)\n&quot;);
</del><ins>+            push(@implContent, &quot;EncodedJSValue ${className}::nameGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)\n&quot;);
</ins><span class="cx">             push(@implContent, &quot;{\n&quot;);
</span><del>-            push(@implContent, &quot;    ${className}* thisObj = jsCast&lt;$className*&gt;(asObject(slotBase));\n&quot;);
-            push(@implContent, &quot;    return toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().namedItem(propertyNameToAtomicString(propertyName)));\n&quot;);
</del><ins>+            push(@implContent, &quot;    ${className}* thisObj = jsCast&lt;$className*&gt;(JSValue::decode(slotBase));\n&quot;);
+            push(@implContent, &quot;    return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().namedItem(propertyNameToAtomicString(propertyName))));\n&quot;);
</ins><span class="cx">             push(@implContent, &quot;}\n\n&quot;);
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -2731,7 +2731,7 @@
</span><span class="cx">     if ((!$hasParent or $interface-&gt;extendedAttributes-&gt;{&quot;JSGenerateToNativeObject&quot;}) and !$interface-&gt;extendedAttributes-&gt;{&quot;JSCustomToNativeObject&quot;}) {
</span><span class="cx">         push(@implContent, &quot;$implType* to${interfaceName}(JSC::JSValue value)\n&quot;);
</span><span class="cx">         push(@implContent, &quot;{\n&quot;);
</span><del>-        push(@implContent, &quot;    return value.inherits(${className}::info()) ? &amp;jsCast&lt;$className*&gt;(asObject(value))-&gt;impl() : 0&quot;);
</del><ins>+        push(@implContent, &quot;    return value.inherits(${className}::info()) ? &amp;jsCast&lt;$className*&gt;(value)-&gt;impl() : 0&quot;);
</ins><span class="cx">         push(@implContent, &quot;;\n}\n&quot;);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -2871,7 +2871,7 @@
</span><span class="cx">                 push(@$outputArray, &quot;            return throwVMTypeError(exec);\n&quot;);
</span><span class="cx">                 if ($function-&gt;isStatic) {
</span><span class="cx">                     AddToImplIncludes(&quot;CallbackFunction.h&quot;);
</span><del>-                    push(@$outputArray, &quot;        $name = createFunctionOnlyCallback&lt;${callbackClassName}&gt;(exec, static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;uncheckedArgument($argsIndex));\n&quot;);
</del><ins>+                    push(@$outputArray, &quot;        $name = createFunctionOnlyCallback&lt;${callbackClassName}&gt;(exec, jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;uncheckedArgument($argsIndex));\n&quot;);
</ins><span class="cx">                 } else {
</span><span class="cx">                     push(@$outputArray, &quot;        $name = ${callbackClassName}::create(asObject(exec-&gt;uncheckedArgument($argsIndex)), castedThis-&gt;globalObject());\n&quot;);
</span><span class="cx">                 }
</span><span class="lines">@@ -2881,7 +2881,7 @@
</span><span class="cx">                 push(@$outputArray, &quot;        return throwVMTypeError(exec);\n&quot;);
</span><span class="cx">                 if ($function-&gt;isStatic) {
</span><span class="cx">                     AddToImplIncludes(&quot;CallbackFunction.h&quot;);
</span><del>-                    push(@$outputArray, &quot;    RefPtr&lt;$argType&gt; $name = createFunctionOnlyCallback&lt;${callbackClassName}&gt;(exec, static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;uncheckedArgument($argsIndex));\n&quot;);
</del><ins>+                    push(@$outputArray, &quot;    RefPtr&lt;$argType&gt; $name = createFunctionOnlyCallback&lt;${callbackClassName}&gt;(exec, jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;uncheckedArgument($argsIndex));\n&quot;);
</ins><span class="cx">                 } else {
</span><span class="cx">                     push(@$outputArray, &quot;    RefPtr&lt;$argType&gt; $name = ${callbackClassName}::create(asObject(exec-&gt;uncheckedArgument($argsIndex)), castedThis-&gt;globalObject());\n&quot;);
</span><span class="cx">                 }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -130,24 +130,24 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestActiveDOMObject, Base&gt;(exec, JSTestActiveDOMObjectTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestActiveDOMObjectExcitingAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestActiveDOMObjectExcitingAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestActiveDOMObject* castedThis = jsCast&lt;JSTestActiveDOMObject*&gt;(asObject(slotBase));
</del><ins>+    JSTestActiveDOMObject* castedThis = jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis-&gt;impl()))
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestActiveDOMObject&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.excitingAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestActiveDOMObjectConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestActiveDOMObjectConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestActiveDOMObject* domObject = jsCast&lt;JSTestActiveDOMObject*&gt;(asObject(slotBase));
</del><ins>+    JSTestActiveDOMObject* domObject = jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, domObject-&gt;impl()))
</span><del>-        return jsUndefined();
-    return JSTestActiveDOMObject::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+        return JSValue::encode(jsUndefined());
+    return JSValue::encode(JSTestActiveDOMObject::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSTestActiveDOMObject::getConstructor(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -158,9 +158,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestActiveDOMObjectPrototypeFunctionExcitingFunction(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestActiveDOMObject::info()))
</del><ins>+    JSTestActiveDOMObject* castedThis = jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestActiveDOMObject* castedThis = jsCast&lt;JSTestActiveDOMObject*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestActiveDOMObject::info());
</span><span class="cx">     if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis-&gt;impl()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -177,9 +177,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestActiveDOMObjectPrototypeFunctionPostMessage(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestActiveDOMObject::info()))
</del><ins>+    JSTestActiveDOMObject* castedThis = jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestActiveDOMObject* castedThis = jsCast&lt;JSTestActiveDOMObject*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestActiveDOMObject::info());
</span><span class="cx">     TestActiveDOMObject&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -245,7 +245,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestActiveDOMObject* toTestActiveDOMObject(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestActiveDOMObject::info()) ? &amp;jsCast&lt;JSTestActiveDOMObject*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestActiveDOMObject::info()) ? &amp;jsCast&lt;JSTestActiveDOMObject*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -144,8 +144,8 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestActiveDOMObjectPrototypeFunctionPostMessage(JSC::ExecState*);
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestActiveDOMObjectExcitingAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestActiveDOMObjectConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestActiveDOMObjectExcitingAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestActiveDOMObjectConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -144,10 +144,10 @@
</span><span class="cx">     return Base::getOwnPropertySlotByIndex(thisObject, exec, index, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestCustomNamedGetterConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestCustomNamedGetterConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestCustomNamedGetter* domObject = jsCast&lt;JSTestCustomNamedGetter*&gt;(asObject(slotBase));
-    return JSTestCustomNamedGetter::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestCustomNamedGetter* domObject = jsDynamicCast&lt;JSTestCustomNamedGetter*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestCustomNamedGetter::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSTestCustomNamedGetter::getConstructor(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -158,9 +158,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestCustomNamedGetterPrototypeFunctionAnotherFunction(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestCustomNamedGetter::info()))
</del><ins>+    JSTestCustomNamedGetter* castedThis = jsDynamicCast&lt;JSTestCustomNamedGetter*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestCustomNamedGetter* castedThis = jsCast&lt;JSTestCustomNamedGetter*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestCustomNamedGetter::info());
</span><span class="cx">     TestCustomNamedGetter&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -226,7 +226,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestCustomNamedGetter* toTestCustomNamedGetter(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestCustomNamedGetter::info()) ? &amp;jsCast&lt;JSTestCustomNamedGetter*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestCustomNamedGetter::info()) ? &amp;jsCast&lt;JSTestCustomNamedGetter*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGetterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx">     static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::HasImpureGetOwnPropertySlot | Base::StructureFlags;
</span><span class="cx"> private:
</span><span class="cx">     static bool canGetItemsForName(JSC::ExecState*, TestCustomNamedGetter*, JSC::PropertyName);
</span><del>-    static JSC::JSValue nameGetter(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+    static JSC::EncodedJSValue nameGetter(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class JSTestCustomNamedGetterOwner : public JSC::WeakHandleOwner {
</span><span class="lines">@@ -147,7 +147,7 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestCustomNamedGetterPrototypeFunctionAnotherFunction(JSC::ExecState*);
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestCustomNamedGetterConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestCustomNamedGetterConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -167,30 +167,30 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestEventConstructor, Base&gt;(exec, JSTestEventConstructorTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestEventConstructorAttr1(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestEventConstructorAttr1(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestEventConstructor* castedThis = jsCast&lt;JSTestEventConstructor*&gt;(asObject(slotBase));
</del><ins>+    JSTestEventConstructor* castedThis = jsDynamicCast&lt;JSTestEventConstructor*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestEventConstructor&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.attr1());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestEventConstructorAttr2(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestEventConstructorAttr2(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestEventConstructor* castedThis = jsCast&lt;JSTestEventConstructor*&gt;(asObject(slotBase));
</del><ins>+    JSTestEventConstructor* castedThis = jsDynamicCast&lt;JSTestEventConstructor*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestEventConstructor&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.attr2());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestEventConstructorConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestEventConstructorConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestEventConstructor* domObject = jsCast&lt;JSTestEventConstructor*&gt;(asObject(slotBase));
-    return JSTestEventConstructor::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestEventConstructor* domObject = jsDynamicCast&lt;JSTestEventConstructor*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestEventConstructor::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSTestEventConstructor::getConstructor(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -252,7 +252,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestEventConstructor* toTestEventConstructor(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestEventConstructor::info()) ? &amp;jsCast&lt;JSTestEventConstructor*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestEventConstructor::info()) ? &amp;jsCast&lt;JSTestEventConstructor*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -145,9 +145,9 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestEventConstructorAttr1(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestEventConstructorAttr2(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestEventConstructorConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestEventConstructorAttr1(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestEventConstructorAttr2(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestEventConstructorConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -169,10 +169,10 @@
</span><span class="cx">     return Base::getOwnPropertySlotByIndex(thisObject, exec, index, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestEventTargetConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestEventTargetConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestEventTarget* domObject = jsCast&lt;JSTestEventTarget*&gt;(asObject(slotBase));
-    return JSTestEventTarget::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestEventTarget* domObject = jsDynamicCast&lt;JSTestEventTarget*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestEventTarget::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSTestEventTarget::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray&amp; propertyNames, EnumerationMode mode)
</span><span class="lines">@@ -192,9 +192,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionItem(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestEventTarget::info()))
</del><ins>+    JSTestEventTarget* castedThis = jsDynamicCast&lt;JSTestEventTarget*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestEventTarget* castedThis = jsCast&lt;JSTestEventTarget*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestEventTarget::info());
</span><span class="cx">     TestEventTarget&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -214,9 +214,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionAddEventListener(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestEventTarget::info()))
</del><ins>+    JSTestEventTarget* castedThis = jsDynamicCast&lt;JSTestEventTarget*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestEventTarget* castedThis = jsCast&lt;JSTestEventTarget*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestEventTarget::info());
</span><span class="cx">     TestEventTarget&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue listener = exec-&gt;argument(1);
</span><span class="lines">@@ -229,9 +229,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionRemoveEventListener(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestEventTarget::info()))
</del><ins>+    JSTestEventTarget* castedThis = jsDynamicCast&lt;JSTestEventTarget*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestEventTarget* castedThis = jsCast&lt;JSTestEventTarget*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestEventTarget::info());
</span><span class="cx">     TestEventTarget&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue listener = exec-&gt;argument(1);
</span><span class="lines">@@ -244,9 +244,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionDispatchEvent(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestEventTarget::info()))
</del><ins>+    JSTestEventTarget* castedThis = jsDynamicCast&lt;JSTestEventTarget*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestEventTarget* castedThis = jsCast&lt;JSTestEventTarget*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestEventTarget::info());
</span><span class="cx">     TestEventTarget&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -272,11 +272,11 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue JSTestEventTarget::indexGetter(ExecState* exec, JSValue slotBase, unsigned index)
</del><ins>+EncodedJSValue JSTestEventTarget::indexGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, unsigned index)
</ins><span class="cx"> {
</span><del>-    JSTestEventTarget* thisObj = jsCast&lt;JSTestEventTarget*&gt;(asObject(slotBase));
</del><ins>+    JSTestEventTarget* thisObj = jsCast&lt;JSTestEventTarget*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ASSERT_GC_OBJECT_INHERITS(thisObj, info());
</span><del>-    return toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().item(index));
</del><ins>+    return JSValue::encode(toJS(exec, thisObj-&gt;globalObject(), thisObj-&gt;impl().item(index)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool JSTestEventTargetOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt; handle, void*, SlotVisitor&amp; visitor)
</span><span class="lines">@@ -335,7 +335,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestEventTarget* toTestEventTarget(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestEventTarget::info()) ? &amp;jsCast&lt;JSTestEventTarget*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestEventTarget::info()) ? &amp;jsCast&lt;JSTestEventTarget*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -73,10 +73,10 @@
</span><span class="cx">     JSTestEventTarget(JSC::Structure*, JSDOMGlobalObject*, PassRefPtr&lt;TestEventTarget&gt;);
</span><span class="cx">     void finishCreation(JSC::VM&amp;);
</span><span class="cx">     static const unsigned StructureFlags = JSC::OverridesGetPropertyNames | JSC::OverridesGetOwnPropertySlot | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesVisitChildren | JSC::MasqueradesAsUndefined | JSC::HasImpureGetOwnPropertySlot | Base::StructureFlags;
</span><del>-    static JSC::JSValue indexGetter(JSC::ExecState*, JSC::JSValue, unsigned);
</del><ins>+    static JSC::EncodedJSValue indexGetter(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, unsigned);
</ins><span class="cx"> private:
</span><span class="cx">     static bool canGetItemsForName(JSC::ExecState*, TestEventTarget*, JSC::PropertyName);
</span><del>-    static JSC::JSValue nameGetter(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+    static JSC::EncodedJSValue nameGetter(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class JSTestEventTargetOwner : public JSC::WeakHandleOwner {
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionDispatchEvent(JSC::ExecState*);
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestEventTargetConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestEventTargetConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -120,20 +120,20 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestException, Base&gt;(exec, JSTestExceptionTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestExceptionName(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestExceptionName(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestException* castedThis = jsCast&lt;JSTestException*&gt;(asObject(slotBase));
</del><ins>+    JSTestException* castedThis = jsDynamicCast&lt;JSTestException*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestException&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.name());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestExceptionConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestExceptionConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestException* domObject = jsCast&lt;JSTestException*&gt;(asObject(slotBase));
-    return JSTestException::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestException* domObject = jsDynamicCast&lt;JSTestException*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestException::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSTestException::getConstructor(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -195,7 +195,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestException* toTestException(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestException::info()) ? &amp;jsCast&lt;JSTestException*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestException::info()) ? &amp;jsCast&lt;JSTestException*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestExceptionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -139,8 +139,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestExceptionName(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestExceptionConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestExceptionName(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestExceptionConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -117,10 +117,10 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestGenerateIsReachable, Base&gt;(exec, JSTestGenerateIsReachableTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestGenerateIsReachableConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestGenerateIsReachableConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestGenerateIsReachable* domObject = jsCast&lt;JSTestGenerateIsReachable*&gt;(asObject(slotBase));
-    return JSTestGenerateIsReachable::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestGenerateIsReachable* domObject = jsDynamicCast&lt;JSTestGenerateIsReachable*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestGenerateIsReachable::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSTestGenerateIsReachable::getConstructor(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -191,7 +191,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestGenerateIsReachable* toTestGenerateIsReachable(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestGenerateIsReachable::info()) ? &amp;jsCast&lt;JSTestGenerateIsReachable*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestGenerateIsReachable::info()) ? &amp;jsCast&lt;JSTestGenerateIsReachable*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestGenerateIsReachableConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestGenerateIsReachableConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -272,143 +272,143 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSValue jsTestInterfaceConstructorImplementsStaticReadOnlyAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceConstructorImplementsStaticReadOnlyAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(slotBase);
</span><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     JSValue result = jsNumber(TestInterface::implementsStaticReadOnlyAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSValue jsTestInterfaceConstructorImplementsStaticAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceConstructorImplementsStaticAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(slotBase);
</span><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     JSValue result = jsStringWithCache(exec, TestInterface::implementsStaticAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSValue jsTestInterfaceImplementsStr1(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceImplementsStr1(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(slotBase));
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.implementsStr1());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSValue jsTestInterfaceImplementsStr2(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceImplementsStr2(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(slotBase));
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.implementsStr2());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSValue jsTestInterfaceImplementsStr3(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceImplementsStr3(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(slotBase));
-    return castedThis-&gt;implementsStr3(exec);
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(castedThis-&gt;implementsStr3(exec));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSValue jsTestInterfaceImplementsNode(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceImplementsNode(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(slotBase));
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.implementsNode()));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSValue jsTestInterfaceConstructorSupplementalStaticReadOnlyAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceConstructorSupplementalStaticReadOnlyAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(slotBase);
</span><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     JSValue result = jsNumber(TestSupplemental::supplementalStaticReadOnlyAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSValue jsTestInterfaceConstructorSupplementalStaticAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceConstructorSupplementalStaticAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(slotBase);
</span><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     JSValue result = jsStringWithCache(exec, TestSupplemental::supplementalStaticAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSValue jsTestInterfaceSupplementalStr1(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceSupplementalStr1(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(slotBase));
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, TestSupplemental::supplementalStr1(&amp;impl));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSValue jsTestInterfaceSupplementalStr2(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceSupplementalStr2(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(slotBase));
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, TestSupplemental::supplementalStr2(&amp;impl));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSValue jsTestInterfaceSupplementalStr3(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceSupplementalStr3(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(slotBase));
-    return castedThis-&gt;supplementalStr3(exec);
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(castedThis-&gt;supplementalStr3(exec));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSValue jsTestInterfaceSupplementalNode(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceSupplementalNode(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(slotBase));
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(TestSupplemental::supplementalNode(&amp;impl)));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-JSValue jsTestInterfaceConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestInterface* domObject = jsCast&lt;JSTestInterface*&gt;(asObject(slotBase));
-    return JSTestInterface::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestInterface* domObject = jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestInterface::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSTestInterface::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)
</span><span class="lines">@@ -538,9 +538,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionImplementsMethod1(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestInterface::info()))
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestInterface::info());
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     impl.implementsMethod1();
</span><span class="lines">@@ -553,9 +553,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionImplementsMethod2(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestInterface::info()))
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestInterface::info());
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 2)
</span><span class="lines">@@ -582,9 +582,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionImplementsMethod3(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestInterface::info()))
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestInterface::info());
</span><span class="cx">     return JSValue::encode(castedThis-&gt;implementsMethod3(exec));
</span><span class="cx"> }
</span><span class="lines">@@ -604,9 +604,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionSupplementalMethod1(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestInterface::info()))
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestInterface::info());
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     TestSupplemental::supplementalMethod1(&amp;impl);
</span><span class="lines">@@ -619,9 +619,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionSupplementalMethod2(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestInterface::info()))
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestInterface::info());
</span><span class="cx">     TestInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 2)
</span><span class="lines">@@ -648,9 +648,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionSupplementalMethod3(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestInterface::info()))
</del><ins>+    JSTestInterface* castedThis = jsDynamicCast&lt;JSTestInterface*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestInterface* castedThis = jsCast&lt;JSTestInterface*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestInterface::info());
</span><span class="cx">     return JSValue::encode(castedThis-&gt;supplementalMethod3(exec));
</span><span class="cx"> }
</span><span class="lines">@@ -669,34 +669,34 @@
</span><span class="cx"> // Constant getters
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSValue jsTestInterfaceIMPLEMENTSCONSTANT1(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceIMPLEMENTSCONSTANT1(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(1));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(1)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSValue jsTestInterfaceIMPLEMENTSCONSTANT2(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceIMPLEMENTSCONSTANT2(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(2));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(2)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSValue jsTestInterfaceSUPPLEMENTALCONSTANT1(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceSUPPLEMENTALCONSTANT1(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(1));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(1)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSValue jsTestInterfaceSUPPLEMENTALCONSTANT2(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestInterfaceSUPPLEMENTALCONSTANT2(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(2));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(2)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="lines">@@ -736,7 +736,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestInterface* toTestInterface(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestInterface::info()) ? &amp;jsCast&lt;JSTestInterface*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestInterface::info()) ? &amp;jsCast&lt;JSTestInterface*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -198,63 +198,63 @@
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::JSValue jsTestInterfaceConstructorImplementsStaticReadOnlyAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceConstructorImplementsStaticReadOnlyAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::JSValue jsTestInterfaceConstructorImplementsStaticAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceConstructorImplementsStaticAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestInterfaceConstructorImplementsStaticAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::JSValue jsTestInterfaceImplementsStr1(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceImplementsStr1(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::JSValue jsTestInterfaceImplementsStr2(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceImplementsStr2(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestInterfaceImplementsStr2(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::JSValue jsTestInterfaceImplementsStr3(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceImplementsStr3(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestInterfaceImplementsStr3(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::JSValue jsTestInterfaceImplementsNode(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceImplementsNode(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestInterfaceImplementsNode(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::JSValue jsTestInterfaceConstructorSupplementalStaticReadOnlyAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceConstructorSupplementalStaticReadOnlyAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::JSValue jsTestInterfaceConstructorSupplementalStaticAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceConstructorSupplementalStaticAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestInterfaceConstructorSupplementalStaticAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::JSValue jsTestInterfaceSupplementalStr1(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceSupplementalStr1(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::JSValue jsTestInterfaceSupplementalStr2(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceSupplementalStr2(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestInterfaceSupplementalStr2(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::JSValue jsTestInterfaceSupplementalStr3(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceSupplementalStr3(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestInterfaceSupplementalStr3(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::JSValue jsTestInterfaceSupplementalNode(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceSupplementalNode(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestInterfaceSupplementalNode(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><del>-JSC::JSValue jsTestInterfaceConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> // Constants
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::JSValue jsTestInterfaceIMPLEMENTSCONSTANT1(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceIMPLEMENTSCONSTANT1(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><del>-JSC::JSValue jsTestInterfaceIMPLEMENTSCONSTANT2(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceIMPLEMENTSCONSTANT2(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::JSValue jsTestInterfaceSUPPLEMENTALCONSTANT1(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceSUPPLEMENTALCONSTANT1(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><del>-JSC::JSValue jsTestInterfaceSUPPLEMENTALCONSTANT2(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestInterfaceSUPPLEMENTALCONSTANT2(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -128,10 +128,10 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestMediaQueryListListener, Base&gt;(exec, JSTestMediaQueryListListenerTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestMediaQueryListListenerConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestMediaQueryListListenerConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestMediaQueryListListener* domObject = jsCast&lt;JSTestMediaQueryListListener*&gt;(asObject(slotBase));
-    return JSTestMediaQueryListListener::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestMediaQueryListListener* domObject = jsDynamicCast&lt;JSTestMediaQueryListListener*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestMediaQueryListListener::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSTestMediaQueryListListener::getConstructor(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -142,9 +142,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestMediaQueryListListenerPrototypeFunctionMethod(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestMediaQueryListListener::info()))
</del><ins>+    JSTestMediaQueryListListener* castedThis = jsDynamicCast&lt;JSTestMediaQueryListListener*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestMediaQueryListListener* castedThis = jsCast&lt;JSTestMediaQueryListListener*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestMediaQueryListListener::info());
</span><span class="cx">     TestMediaQueryListListener&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -210,7 +210,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestMediaQueryListListener* toTestMediaQueryListListener(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestMediaQueryListListener::info()) ? &amp;jsCast&lt;JSTestMediaQueryListListener*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestMediaQueryListListener::info()) ? &amp;jsCast&lt;JSTestMediaQueryListListener*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -143,7 +143,7 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestMediaQueryListListenerPrototypeFunctionMethod(JSC::ExecState*);
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestMediaQueryListListenerConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestMediaQueryListListenerConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -164,10 +164,10 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestNamedConstructor, Base&gt;(exec, JSTestNamedConstructorTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestNamedConstructorConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestNamedConstructorConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestNamedConstructor* domObject = jsCast&lt;JSTestNamedConstructor*&gt;(asObject(slotBase));
-    return JSTestNamedConstructor::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestNamedConstructor* domObject = jsDynamicCast&lt;JSTestNamedConstructor*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestNamedConstructor::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSTestNamedConstructor::getConstructor(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -236,7 +236,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestNamedConstructor* toTestNamedConstructor(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestNamedConstructor::info()) ? &amp;jsCast&lt;JSTestNamedConstructor*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestNamedConstructor::info()) ? &amp;jsCast&lt;JSTestNamedConstructor*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -166,7 +166,7 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestNamedConstructorConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestNamedConstructorConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -121,10 +121,10 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestNode, Base&gt;(exec, JSTestNodeTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestNodeConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestNodeConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestNode* domObject = jsCast&lt;JSTestNode*&gt;(asObject(slotBase));
-    return JSTestNode::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestNode* domObject = jsDynamicCast&lt;JSTestNode*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestNode::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSTestNode::getConstructor(VM&amp; vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestNodeConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestNodeConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -392,725 +392,725 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestObj, Base&gt;(exec, JSTestObjTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReadOnlyLongAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReadOnlyLongAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.readOnlyLongAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReadOnlyStringAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReadOnlyStringAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.readOnlyStringAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReadOnlyTestObjAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReadOnlyTestObjAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.readOnlyTestObjAttr()));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjConstructorStaticReadOnlyLongAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConstructorStaticReadOnlyLongAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(slotBase);
</span><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     JSValue result = jsNumber(TestObj::staticReadOnlyLongAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjConstructorStaticStringAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConstructorStaticStringAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(slotBase);
</span><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     JSValue result = jsStringWithCache(exec, TestObj::staticStringAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjConstructorTestSubObj(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConstructorTestSubObj(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
-    return JSTestSubObj::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject());
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestSubObj::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjTestSubObjEnabledBySettingConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjTestSubObjEnabledBySettingConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     if (!castedThis-&gt;impl().frame())
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx">     Settings&amp; settings = castedThis-&gt;impl().frame()-&gt;settings();
</span><span class="cx">     if (!settings.testSettingEnabled())
</span><del>-        return jsUndefined();
-    return JSTestSubObj::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject());
</del><ins>+        return JSValue::encode(jsUndefined());
+    return JSValue::encode(JSTestSubObj::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjEnumAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjEnumAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.enumAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjByteAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjByteAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.byteAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjOctetAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjOctetAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.octetAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjShortAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjShortAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.shortAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjUnsignedShortAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjUnsignedShortAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.unsignedShortAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjLongAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjLongAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.longAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjLongLongAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjLongLongAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.longLongAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjUnsignedLongLongAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjUnsignedLongLongAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.unsignedLongLongAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjStringAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjStringAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.stringAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjTestObjAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjTestObjAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.testObjAttr()));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjXMLObjAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjXMLObjAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.xmlObjAttr()));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCreate(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCreate(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsBoolean(impl.isCreate());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReflectedStringAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedStringAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.fastGetAttribute(WebCore::HTMLNames::reflectedstringattrAttr));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReflectedIntegralAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedIntegralAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.getIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReflectedUnsignedIntegralAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedUnsignedIntegralAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(std::max(0, impl.getIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr)));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReflectedBooleanAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedBooleanAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsBoolean(impl.fastHasAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReflectedURLAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedURLAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReflectedStringAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedStringAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.fastGetAttribute(WebCore::HTMLNames::customContentStringAttrAttr));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReflectedCustomIntegralAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedCustomIntegralAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.getIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReflectedCustomBooleanAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedCustomBooleanAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsBoolean(impl.fastHasAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReflectedCustomURLAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReflectedCustomURLAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjTypedArrayAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjTypedArrayAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.typedArrayAttr()));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjAttrWithGetterException(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjAttrWithGetterException(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSC::JSValue result = jsNumber(impl.attrWithGetterException(ec));
</span><span class="cx">     setDOMException(exec, ec);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjAttrWithSetterException(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjAttrWithSetterException(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.attrWithSetterException());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjStringAttrWithGetterException(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjStringAttrWithGetterException(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSC::JSValue result = jsStringWithCache(exec, impl.stringAttrWithGetterException(ec));
</span><span class="cx">     setDOMException(exec, ec);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjStringAttrWithSetterException(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjStringAttrWithSetterException(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.stringAttrWithSetterException());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCustomAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCustomAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
-    return castedThis-&gt;customAttr(exec);
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(castedThis-&gt;customAttr(exec));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjWithScriptStateAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptStateAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.withScriptStateAttribute(exec));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjWithScriptExecutionContextAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptExecutionContextAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ScriptExecutionContext* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="cx">     if (!scriptContext)
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.withScriptExecutionContextAttribute(scriptContext)));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjWithScriptStateAttributeRaises(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptStateAttributeRaises(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSC::JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.withScriptStateAttributeRaises(exec, ec)));
</span><span class="cx">     setDOMException(exec, ec);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjWithScriptExecutionContextAttributeRaises(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptExecutionContextAttributeRaises(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     ScriptExecutionContext* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="cx">     if (!scriptContext)
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSC::JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.withScriptExecutionContextAttributeRaises(scriptContext, ec)));
</span><span class="cx">     setDOMException(exec, ec);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ScriptExecutionContext* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="cx">     if (!scriptContext)
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.withScriptExecutionContextAndScriptStateAttribute(exec, scriptContext)));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     ScriptExecutionContext* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="cx">     if (!scriptContext)
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSC::JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.withScriptExecutionContextAndScriptStateAttributeRaises(exec, scriptContext, ec)));
</span><span class="cx">     setDOMException(exec, ec);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ScriptExecutionContext* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="cx">     if (!scriptContext)
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.withScriptExecutionContextAndScriptStateWithSpacesAttribute(exec, scriptContext)));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjWithScriptArgumentsAndCallStackAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjWithScriptArgumentsAndCallStackAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.withScriptArgumentsAndCallStackAttribute()));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-JSValue jsTestObjConditionalAttr1(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConditionalAttr1(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.conditionalAttr1());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) &amp;&amp; ENABLE(Condition2)
</span><del>-JSValue jsTestObjConditionalAttr2(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConditionalAttr2(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.conditionalAttr2());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><del>-JSValue jsTestObjConditionalAttr3(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConditionalAttr3(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.conditionalAttr3());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-JSValue jsTestObjConditionalAttr4Constructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConditionalAttr4Constructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
-    return JSTestObjectA::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject());
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestObjectA::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) &amp;&amp; ENABLE(Condition2)
</span><del>-JSValue jsTestObjConditionalAttr5Constructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConditionalAttr5Constructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
-    return JSTestObjectB::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject());
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestObjectB::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><del>-JSValue jsTestObjConditionalAttr6Constructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConditionalAttr6Constructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
-    return JSTestObjectC::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject());
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestObjectC::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCachedAttribute1(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCachedAttribute1(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     if (JSValue cachedValue = castedThis-&gt;m_cachedAttribute1.get())
</span><del>-        return cachedValue;
</del><ins>+        return JSValue::encode(cachedValue);
</ins><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = (impl.cachedAttribute1().hasNoValue() ? jsNull() : impl.cachedAttribute1().jsValue());
</span><span class="cx">     castedThis-&gt;m_cachedAttribute1.set(exec-&gt;vm(), castedThis, result);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCachedAttribute2(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCachedAttribute2(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     if (JSValue cachedValue = castedThis-&gt;m_cachedAttribute2.get())
</span><del>-        return cachedValue;
</del><ins>+        return JSValue::encode(cachedValue);
</ins><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = (impl.cachedAttribute2().hasNoValue() ? jsNull() : impl.cachedAttribute2().jsValue());
</span><span class="cx">     castedThis-&gt;m_cachedAttribute2.set(exec-&gt;vm(), castedThis, result);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjAnyAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjAnyAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = (impl.anyAttribute().hasNoValue() ? jsNull() : impl.anyAttribute().jsValue());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjContentDocument(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjContentDocument(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><del>-    return shouldAllowAccessToNode(exec, impl.contentDocument()) ? toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.contentDocument())) : jsNull();
</del><ins>+    return JSValue::encode(shouldAllowAccessToNode(exec, impl.contentDocument()) ? toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.contentDocument())) : jsNull());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjMutablePoint(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjMutablePoint(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(SVGStaticPropertyTearOff&lt;TestObj, SVGPoint&gt;::create(impl, impl.mutablePoint(), &amp;TestObj::updateMutablePoint)));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjImmutablePoint(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjImmutablePoint(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(SVGPropertyTearOff&lt;SVGPoint&gt;::create(impl.immutablePoint())));
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjStrawberry(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjStrawberry(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.blueberry());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjStrictFloat(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjStrictFloat(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.strictFloat());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjDescription(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjDescription(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.description());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjId(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjId(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.id());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjHash(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjHash(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.hash());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReplaceableAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReplaceableAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.replaceableAttribute());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjNullableDoubleAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjNullableDoubleAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     bool isNull = false;
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.nullableDoubleAttribute(isNull));
</span><span class="cx">     if (isNull)
</span><del>-        return jsNull();
-    return result;
</del><ins>+        return JSValue::encode(jsNull());
+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjNullableLongAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjNullableLongAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     bool isNull = false;
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.nullableLongAttribute(isNull));
</span><span class="cx">     if (isNull)
</span><del>-        return jsNull();
-    return result;
</del><ins>+        return JSValue::encode(jsNull());
+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjNullableBooleanAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjNullableBooleanAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     bool isNull = false;
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsBoolean(impl.nullableBooleanAttribute(isNull));
</span><span class="cx">     if (isNull)
</span><del>-        return jsNull();
-    return result;
</del><ins>+        return JSValue::encode(jsNull());
+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjNullableStringAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjNullableStringAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     bool isNull = false;
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.nullableStringAttribute(isNull));
</span><span class="cx">     if (isNull)
</span><del>-        return jsNull();
-    return result;
</del><ins>+        return JSValue::encode(jsNull());
+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjNullableLongSettableAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjNullableLongSettableAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     bool isNull = false;
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.nullableLongSettableAttribute(isNull));
</span><span class="cx">     if (isNull)
</span><del>-        return jsNull();
-    return result;
</del><ins>+        return JSValue::encode(jsNull());
+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjNullableStringValue(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjNullableStringValue(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     bool isNull = false;
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSC::JSValue result = jsNumber(impl.nullableStringValue(isNull, ec));
</span><span class="cx">     if (isNull)
</span><del>-        return jsNull();
</del><ins>+        return JSValue::encode(jsNull());
</ins><span class="cx">     setDOMException(exec, ec);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjAttribute(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjAttribute(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.attribute());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjAttributeWithReservedEnumType(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjAttributeWithReservedEnumType(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.attributeWithReservedEnumType());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestObjConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestObjConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestObj* domObject = jsCast&lt;JSTestObj*&gt;(asObject(slotBase));
-    return JSTestObj::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestObj* domObject = jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestObj::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSTestObj::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)
</span><span class="lines">@@ -1772,9 +1772,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethod(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     impl.voidMethod();
</span><span class="lines">@@ -1784,9 +1784,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVoidMethodWithArgs(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 3)
</span><span class="lines">@@ -1807,9 +1807,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionByteMethod(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx"> 
</span><span class="lines">@@ -1820,9 +1820,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionByteMethodWithArgs(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 3)
</span><span class="lines">@@ -1844,9 +1844,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOctetMethod(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx"> 
</span><span class="lines">@@ -1857,9 +1857,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOctetMethodWithArgs(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 3)
</span><span class="lines">@@ -1881,9 +1881,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionLongMethod(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx"> 
</span><span class="lines">@@ -1894,9 +1894,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionLongMethodWithArgs(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 3)
</span><span class="lines">@@ -1918,9 +1918,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethod(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx"> 
</span><span class="lines">@@ -1931,9 +1931,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionObjMethodWithArgs(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 3)
</span><span class="lines">@@ -1955,9 +1955,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithSequenceArg(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -1972,9 +1972,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodReturningSequence(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -1990,9 +1990,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithEnumArg(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2009,9 +2009,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 2)
</span><span class="lines">@@ -2032,9 +2032,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionSerializedValue(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2049,9 +2049,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOptionsObject(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2069,9 +2069,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithException(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="lines">@@ -2083,9 +2083,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethod(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     return JSValue::encode(castedThis-&gt;customMethod(exec));
</span><span class="cx"> }
</span><span class="lines">@@ -2093,9 +2093,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionCustomMethodWithArgs(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     return JSValue::encode(castedThis-&gt;customMethodWithArgs(exec));
</span><span class="cx"> }
</span><span class="lines">@@ -2103,9 +2103,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAddEventListener(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue listener = exec-&gt;argument(1);
</span><span class="lines">@@ -2118,9 +2118,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionRemoveEventListener(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue listener = exec-&gt;argument(1);
</span><span class="lines">@@ -2133,9 +2133,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoid(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     impl.withScriptStateVoid(exec);
</span><span class="lines">@@ -2145,9 +2145,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObj(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx"> 
</span><span class="lines">@@ -2160,9 +2160,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateVoidException(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="lines">@@ -2174,9 +2174,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptStateObjException(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="lines">@@ -2191,9 +2191,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContext(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ScriptExecutionContext* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="lines">@@ -2206,9 +2206,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptState(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ScriptExecutionContext* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="lines">@@ -2221,9 +2221,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateObjException(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="lines">@@ -2241,9 +2241,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateWithSpaces(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ScriptExecutionContext* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="lines">@@ -2259,9 +2259,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionWithScriptArgumentsAndCallStack(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     RefPtr&lt;ScriptArguments&gt; scriptArguments(createScriptArguments(exec, 0));
</span><span class="lines">@@ -2272,9 +2272,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalArg(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx"> 
</span><span class="lines">@@ -2294,9 +2294,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2321,9 +2321,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2356,9 +2356,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalString(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx"> 
</span><span class="lines">@@ -2378,9 +2378,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefined(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     const String&amp; str(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</span><span class="lines">@@ -2393,9 +2393,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithOptionalStringIsNullString(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     const String&amp; str(argumentOrNull(exec, 0).isEmpty() ? String() : argumentOrNull(exec, 0).toString(exec)-&gt;value(exec));
</span><span class="lines">@@ -2408,9 +2408,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackArg(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2425,9 +2425,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 2)
</span><span class="lines">@@ -2445,9 +2445,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     RefPtr&lt;TestCallback&gt; callback;
</span><span class="lines">@@ -2466,7 +2466,7 @@
</span><span class="cx">     if (!exec-&gt;argument(0).isUndefinedOrNull()) {
</span><span class="cx">         if (!exec-&gt;uncheckedArgument(0).isFunction())
</span><span class="cx">             return throwVMTypeError(exec);
</span><del>-        callback = createFunctionOnlyCallback&lt;JSTestCallback&gt;(exec, static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;uncheckedArgument(0));
</del><ins>+        callback = createFunctionOnlyCallback&lt;JSTestCallback&gt;(exec, jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;uncheckedArgument(0));
</ins><span class="cx">     }
</span><span class="cx">     TestObj::staticMethodWithCallbackAndOptionalArg(callback);
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -2478,7 +2478,7 @@
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><span class="cx">     if (!exec-&gt;argument(0).isFunction())
</span><span class="cx">         return throwVMTypeError(exec);
</span><del>-    RefPtr&lt;TestCallback&gt; callback = createFunctionOnlyCallback&lt;JSTestCallback&gt;(exec, static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;uncheckedArgument(0));
</del><ins>+    RefPtr&lt;TestCallback&gt; callback = createFunctionOnlyCallback&lt;JSTestCallback&gt;(exec, jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;uncheckedArgument(0));
</ins><span class="cx">     TestObj::staticMethodWithCallbackArg(callback);
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="lines">@@ -2487,9 +2487,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConditionalMethod1(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx"> 
</span><span class="lines">@@ -2503,9 +2503,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConditionalMethod2(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     impl.conditionalMethod2();
</span><span class="lines">@@ -2518,9 +2518,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConditionalMethod3(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     impl.conditionalMethod3();
</span><span class="lines">@@ -2532,9 +2532,9 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod1(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 2)
</span><span class="lines">@@ -2552,9 +2552,9 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod2(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2579,9 +2579,9 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod3(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2596,9 +2596,9 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod4(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2613,9 +2613,9 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod5(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2630,9 +2630,9 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod6(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2647,9 +2647,9 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod7(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2664,9 +2664,9 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod8(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2681,9 +2681,9 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod9(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2698,9 +2698,9 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod10(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2715,9 +2715,9 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOverloadedMethod11(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2842,9 +2842,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionClassMethodWithClamp(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 2)
</span><span class="lines">@@ -2872,9 +2872,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMethodWithUnsignedLongSequence(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2889,9 +2889,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionStringArrayFunction(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2909,9 +2909,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionDomStringListFunction(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2929,9 +2929,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionGetSVGDocument(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="lines">@@ -2946,9 +2946,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert1(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2963,9 +2963,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert2(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2980,9 +2980,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert4(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -2997,9 +2997,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionConvert5(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -3014,9 +3014,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionMutablePointFunction(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx"> 
</span><span class="lines">@@ -3027,9 +3027,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionImmutablePointFunction(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx"> 
</span><span class="lines">@@ -3040,9 +3040,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionOrange(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     impl.banana();
</span><span class="lines">@@ -3052,9 +3052,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionStrictFunction(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 3)
</span><span class="lines">@@ -3078,9 +3078,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionStrictFunctionWithSequence(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 2)
</span><span class="lines">@@ -3103,9 +3103,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionStrictFunctionWithArray(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 2)
</span><span class="lines">@@ -3128,9 +3128,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVariadicStringMethod(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -3148,9 +3148,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVariadicDoubleMethod(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -3168,9 +3168,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionVariadicNodeMethod(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -3191,9 +3191,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAny(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestObj::info()))
</del><ins>+    JSTestObj* castedThis = jsDynamicCast&lt;JSTestObj*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestObj* castedThis = jsCast&lt;JSTestObj*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     TestObj&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 2)
</span><span class="lines">@@ -3222,88 +3222,88 @@
</span><span class="cx"> // Constant getters
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-JSValue jsTestObjCONDITIONAL_CONST(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONDITIONAL_CONST(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(0));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(0)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><del>-JSValue jsTestObjCONST_VALUE_0(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONST_VALUE_0(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(0));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(0)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCONST_VALUE_1(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONST_VALUE_1(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(1));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(1)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCONST_VALUE_2(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONST_VALUE_2(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(2));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(2)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCONST_VALUE_4(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONST_VALUE_4(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(4));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(4)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCONST_VALUE_8(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONST_VALUE_8(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(8));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(8)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCONST_VALUE_9(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONST_VALUE_9(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(-1));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(-1)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCONST_VALUE_10(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONST_VALUE_10(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    return jsStringOrNull(exec, String(&quot;my constant string&quot;));
</del><ins>+    return JSValue::encode(jsStringOrNull(exec, String(&quot;my constant string&quot;)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCONST_VALUE_11(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONST_VALUE_11(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(0xffffffff));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(0xffffffff)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCONST_VALUE_12(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONST_VALUE_12(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(0x01));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(0x01)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCONST_VALUE_13(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONST_VALUE_13(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(0X20));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(0X20)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCONST_VALUE_14(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONST_VALUE_14(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(0x1abc));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(0x1abc)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjCONST_JAVASCRIPT(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjCONST_JAVASCRIPT(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(15));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(15)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestObjReadonly(ExecState* exec, JSValue, PropertyName)
</del><ins>+EncodedJSValue jsTestObjReadonly(ExecState* exec, EncodedJSValue, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><span class="cx">     UNUSED_PARAM(exec);
</span><del>-    return jsNumber(static_cast&lt;int&gt;(0));
</del><ins>+    return JSValue::encode(jsNumber(static_cast&lt;int&gt;(0)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool JSTestObjOwner::isReachableFromOpaqueRoots(JSC::Handle&lt;JSC::Unknown&gt; handle, void*, SlotVisitor&amp; visitor)
</span><span class="lines">@@ -3360,7 +3360,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestObj* toTestObj(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestObj::info()) ? &amp;jsCast&lt;JSTestObj*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestObj::info()) ? &amp;jsCast&lt;JSTestObj*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -234,158 +234,158 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAny(JSC::ExecState*);
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestObjReadOnlyLongAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjReadOnlyStringAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjReadOnlyTestObjAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjConstructorStaticReadOnlyLongAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjConstructorStaticStringAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjReadOnlyLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjReadOnlyStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjReadOnlyTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjConstructorStaticReadOnlyLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjConstructorStaticStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjConstructorStaticStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjConstructorTestSubObj(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjTestSubObjEnabledBySettingConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjConstructorTestSubObj(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjTestSubObjEnabledBySettingConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjTestSubObjEnabledBySettingConstructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjEnumAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjEnumAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjEnumAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjByteAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjByteAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjByteAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjOctetAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjOctetAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjOctetAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjShortAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjShortAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjShortAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjUnsignedShortAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjUnsignedShortAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjUnsignedShortAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjLongAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjLongLongAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjLongLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjUnsignedLongLongAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjUnsignedLongLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjUnsignedLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjStringAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjTestObjAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjTestObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjTestObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjXMLObjAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjXMLObjAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjXMLObjAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjCreate(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjCreate(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjCreate(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjReflectedIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjReflectedUnsignedIntegralAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjReflectedUnsignedIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjReflectedUnsignedIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjReflectedBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjReflectedURLAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjReflectedURLAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjReflectedURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjReflectedStringAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjReflectedStringAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjReflectedCustomIntegralAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjReflectedCustomBooleanAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjReflectedCustomURLAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjTypedArrayAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjTypedArrayAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjTypedArrayAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjAttrWithGetterException(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjAttrWithGetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjAttrWithSetterException(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjAttrWithSetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjStringAttrWithGetterException(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjStringAttrWithGetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjStringAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjStringAttrWithSetterException(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjStringAttrWithSetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjStringAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjCustomAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjCustomAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjCustomAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjWithScriptStateAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjWithScriptStateAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjWithScriptStateAttribute(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjWithScriptExecutionContextAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjWithScriptExecutionContextAttribute(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjWithScriptStateAttributeRaises(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjWithScriptStateAttributeRaises(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjWithScriptStateAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjWithScriptExecutionContextAttributeRaises(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAttributeRaises(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjWithScriptExecutionContextAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjWithScriptExecutionContextAndScriptStateAttribute(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjWithScriptArgumentsAndCallStackAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjWithScriptArgumentsAndCallStackAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjWithScriptArgumentsAndCallStackAttribute(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-JSC::JSValue jsTestObjConditionalAttr1(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjConditionalAttr1(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjConditionalAttr1(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) &amp;&amp; ENABLE(Condition2)
</span><del>-JSC::JSValue jsTestObjConditionalAttr2(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjConditionalAttr2(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjConditionalAttr2(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><del>-JSC::JSValue jsTestObjConditionalAttr3(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjConditionalAttr3(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjConditionalAttr3(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-JSC::JSValue jsTestObjConditionalAttr4Constructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjConditionalAttr4Constructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjConditionalAttr4Constructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) &amp;&amp; ENABLE(Condition2)
</span><del>-JSC::JSValue jsTestObjConditionalAttr5Constructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjConditionalAttr5Constructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjConditionalAttr5Constructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(Condition1) || ENABLE(Condition2)
</span><del>-JSC::JSValue jsTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><span class="cx"> #endif
</span><del>-JSC::JSValue jsTestObjCachedAttribute1(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjCachedAttribute2(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjAnyAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjCachedAttribute1(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCachedAttribute2(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjAnyAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjAnyAttribute(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjContentDocument(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjMutablePoint(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjContentDocument(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjMutablePoint(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjMutablePoint(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjImmutablePoint(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjImmutablePoint(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjImmutablePoint(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjStrawberry(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjStrawberry(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjStrawberry(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjStrictFloat(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjStrictFloat(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjStrictFloat(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjDescription(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjId(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjDescription(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjId(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjId(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjHash(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjReplaceableAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjHash(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjReplaceableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjReplaceableAttribute(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjNullableDoubleAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjNullableLongAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjNullableBooleanAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjNullableStringAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjNullableLongSettableAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjNullableDoubleAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjNullableLongAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjNullableBooleanAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjNullableStringAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjNullableLongSettableAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjNullableLongSettableAttribute(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjNullableStringValue(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjNullableStringValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjNullableStringValue(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjAttribute(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjAttribute(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestObjAttributeWithReservedEnumType(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestObjConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> // Constants
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition1)
</span><del>-JSC::JSValue jsTestObjCONDITIONAL_CONST(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjCONDITIONAL_CONST(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> #endif
</span><del>-JSC::JSValue jsTestObjCONST_VALUE_0(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjCONST_VALUE_1(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjCONST_VALUE_2(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjCONST_VALUE_4(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjCONST_VALUE_8(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjCONST_VALUE_9(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjCONST_VALUE_10(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjCONST_VALUE_11(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjCONST_VALUE_12(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjCONST_VALUE_13(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjCONST_VALUE_14(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjCONST_JAVASCRIPT(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestObjReadonly(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestObjCONST_VALUE_0(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCONST_VALUE_1(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCONST_VALUE_2(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCONST_VALUE_4(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCONST_VALUE_8(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCONST_VALUE_9(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCONST_VALUE_10(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCONST_VALUE_11(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCONST_VALUE_12(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCONST_VALUE_13(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCONST_VALUE_14(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjCONST_JAVASCRIPT(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestObjReadonly(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -192,10 +192,10 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestOverloadedConstructors, Base&gt;(exec, JSTestOverloadedConstructorsTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestOverloadedConstructorsConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestOverloadedConstructorsConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestOverloadedConstructors* domObject = jsCast&lt;JSTestOverloadedConstructors*&gt;(asObject(slotBase));
-    return JSTestOverloadedConstructors::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestOverloadedConstructors* domObject = jsDynamicCast&lt;JSTestOverloadedConstructors*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestOverloadedConstructors::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSTestOverloadedConstructors::getConstructor(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -257,7 +257,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestOverloadedConstructors* toTestOverloadedConstructors(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestOverloadedConstructors::info()) ? &amp;jsCast&lt;JSTestOverloadedConstructors*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestOverloadedConstructors::info()) ? &amp;jsCast&lt;JSTestOverloadedConstructors*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -145,7 +145,7 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestOverloadedConstructorsConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestOverloadedConstructorsConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -129,66 +129,66 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestSerializedScriptValueInterface, Base&gt;(exec, JSTestSerializedScriptValueInterfaceTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestSerializedScriptValueInterfaceValue(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfaceValue(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestSerializedScriptValueInterface* castedThis = jsCast&lt;JSTestSerializedScriptValueInterface*&gt;(asObject(slotBase));
</del><ins>+    JSTestSerializedScriptValueInterface* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestSerializedScriptValueInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = impl.value() ? impl.value()-&gt;deserialize(exec, castedThis-&gt;globalObject(), 0) : jsNull();
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestSerializedScriptValueInterfaceReadonlyValue(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfaceReadonlyValue(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestSerializedScriptValueInterface* castedThis = jsCast&lt;JSTestSerializedScriptValueInterface*&gt;(asObject(slotBase));
</del><ins>+    JSTestSerializedScriptValueInterface* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestSerializedScriptValueInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = impl.readonlyValue() ? impl.readonlyValue()-&gt;deserialize(exec, castedThis-&gt;globalObject(), 0) : jsNull();
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestSerializedScriptValueInterfaceCachedValue(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfaceCachedValue(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestSerializedScriptValueInterface* castedThis = jsCast&lt;JSTestSerializedScriptValueInterface*&gt;(asObject(slotBase));
</del><ins>+    JSTestSerializedScriptValueInterface* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     if (JSValue cachedValue = castedThis-&gt;m_cachedValue.get())
</span><del>-        return cachedValue;
</del><ins>+        return JSValue::encode(cachedValue);
</ins><span class="cx">     TestSerializedScriptValueInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = impl.cachedValue() ? impl.cachedValue()-&gt;deserialize(exec, castedThis-&gt;globalObject(), 0) : jsNull();
</span><span class="cx">     castedThis-&gt;m_cachedValue.set(exec-&gt;vm(), castedThis, result);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestSerializedScriptValueInterfacePorts(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfacePorts(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestSerializedScriptValueInterface* castedThis = jsCast&lt;JSTestSerializedScriptValueInterface*&gt;(asObject(slotBase));
</del><ins>+    JSTestSerializedScriptValueInterface* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestSerializedScriptValueInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsArray(exec, castedThis-&gt;globalObject(), impl.ports());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValue(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValue(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestSerializedScriptValueInterface* castedThis = jsCast&lt;JSTestSerializedScriptValueInterface*&gt;(asObject(slotBase));
</del><ins>+    JSTestSerializedScriptValueInterface* castedThis = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     if (JSValue cachedValue = castedThis-&gt;m_cachedReadonlyValue.get())
</span><del>-        return cachedValue;
</del><ins>+        return JSValue::encode(cachedValue);
</ins><span class="cx">     TestSerializedScriptValueInterface&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = impl.cachedReadonlyValue() ? impl.cachedReadonlyValue()-&gt;deserialize(exec, castedThis-&gt;globalObject(), 0) : jsNull();
</span><span class="cx">     castedThis-&gt;m_cachedReadonlyValue.set(exec-&gt;vm(), castedThis, result);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestSerializedScriptValueInterfaceConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestSerializedScriptValueInterfaceConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestSerializedScriptValueInterface* domObject = jsCast&lt;JSTestSerializedScriptValueInterface*&gt;(asObject(slotBase));
-    return JSTestSerializedScriptValueInterface::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestSerializedScriptValueInterface* domObject = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestSerializedScriptValueInterface::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSTestSerializedScriptValueInterface::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)
</span><span class="lines">@@ -292,7 +292,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestSerializedScriptValueInterface* toTestSerializedScriptValueInterface(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestSerializedScriptValueInterface::info()) ? &amp;jsCast&lt;JSTestSerializedScriptValueInterface*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestSerializedScriptValueInterface::info()) ? &amp;jsCast&lt;JSTestSerializedScriptValueInterface*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -146,14 +146,14 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestSerializedScriptValueInterfaceValue(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestSerializedScriptValueInterfaceValue(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestSerializedScriptValueInterfaceReadonlyValue(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestSerializedScriptValueInterfaceCachedValue(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceReadonlyValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceCachedValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestSerializedScriptValueInterfaceCachedValue(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestSerializedScriptValueInterfacePorts(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValue(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestSerializedScriptValueInterfaceConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestSerializedScriptValueInterfacePorts(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestSerializedScriptValueInterfaceConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -176,79 +176,79 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSTestTypedefs, Base&gt;(exec, JSTestTypedefsTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsTestTypedefsUnsignedLongLongAttr(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsUnsignedLongLongAttr(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(slotBase));
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.unsignedLongLongAttr());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestTypedefsImmutableSerializedScriptValue(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsImmutableSerializedScriptValue(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(slotBase));
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = impl.immutableSerializedScriptValue() ? impl.immutableSerializedScriptValue()-&gt;deserialize(exec, castedThis-&gt;globalObject(), 0) : jsNull();
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestTypedefsConstructorTestSubObj(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsConstructorTestSubObj(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(slotBase));
-    return JSTestSubObj::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject());
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestSubObj::getConstructor(exec-&gt;vm(), castedThis-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestTypedefsAttrWithGetterException(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsAttrWithGetterException(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(slotBase));
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSC::JSValue result = jsNumber(impl.attrWithGetterException(ec));
</span><span class="cx">     setDOMException(exec, ec);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestTypedefsAttrWithSetterException(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsAttrWithSetterException(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(slotBase));
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsNumber(impl.attrWithSetterException());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestTypedefsStringAttrWithGetterException(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsStringAttrWithGetterException(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(slotBase));
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSC::JSValue result = jsStringWithCache(exec, impl.stringAttrWithGetterException(ec));
</span><span class="cx">     setDOMException(exec, ec);
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestTypedefsStringAttrWithSetterException(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsStringAttrWithSetterException(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(slotBase));
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.stringAttrWithSetterException());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsTestTypedefsConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsTestTypedefsConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSTestTypedefs* domObject = jsCast&lt;JSTestTypedefs*&gt;(asObject(slotBase));
-    return JSTestTypedefs::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSTestTypedefs* domObject = jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSTestTypedefs::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSTestTypedefs::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)
</span><span class="lines">@@ -342,9 +342,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionFunc(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestTypedefs::info()))
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx"> 
</span><span class="lines">@@ -364,9 +364,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionSetShadow(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestTypedefs::info()))
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 3)
</span><span class="lines">@@ -405,9 +405,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionMethodWithSequenceArg(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestTypedefs::info()))
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -423,9 +423,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionNullableArrayArg(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestTypedefs::info()))
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -440,9 +440,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionFuncWithClamp(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestTypedefs::info()))
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -477,9 +477,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionImmutablePointFunction(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestTypedefs::info()))
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx"> 
</span><span class="lines">@@ -490,9 +490,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionStringArrayFunction(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestTypedefs::info()))
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -510,9 +510,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionStringArrayFunction2(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestTypedefs::info()))
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -530,9 +530,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionCallWithSequenceThatRequiresInclude(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestTypedefs::info()))
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (exec-&gt;argumentCount() &lt; 1)
</span><span class="lines">@@ -548,9 +548,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionMethodWithException(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><del>-    if (!thisValue.inherits(JSTestTypedefs::info()))
</del><ins>+    JSTestTypedefs* castedThis = jsDynamicCast&lt;JSTestTypedefs*&gt;(thisValue);
+    if (!castedThis)
</ins><span class="cx">         return throwVMTypeError(exec);
</span><del>-    JSTestTypedefs* castedThis = jsCast&lt;JSTestTypedefs*&gt;(asObject(thisValue));
</del><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestTypedefs::info());
</span><span class="cx">     TestTypedefs&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="lines">@@ -613,7 +613,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestTypedefs* toTestTypedefs(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSTestTypedefs::info()) ? &amp;jsCast&lt;JSTestTypedefs*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSTestTypedefs::info()) ? &amp;jsCast&lt;JSTestTypedefs*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -155,20 +155,20 @@
</span><span class="cx"> JSC::EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionMethodWithException(JSC::ExecState*);
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsTestTypedefsUnsignedLongLongAttr(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestTypedefsUnsignedLongLongAttr(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestTypedefsUnsignedLongLongAttr(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestTypedefsImmutableSerializedScriptValue(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestTypedefsImmutableSerializedScriptValue(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestTypedefsImmutableSerializedScriptValue(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestTypedefsConstructorTestSubObj(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsTestTypedefsAttrWithGetterException(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestTypedefsConstructorTestSubObj(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsTestTypedefsAttrWithGetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestTypedefsAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestTypedefsAttrWithSetterException(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestTypedefsAttrWithSetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestTypedefsAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestTypedefsStringAttrWithGetterException(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestTypedefsStringAttrWithGetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestTypedefsStringAttrWithGetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestTypedefsStringAttrWithSetterException(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestTypedefsStringAttrWithSetterException(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> void setJSTestTypedefsStringAttrWithSetterException(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
</span><del>-JSC::JSValue jsTestTypedefsConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsTestTypedefsConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSattributecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -120,20 +120,20 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSattribute, Base&gt;(exec, JSattributeTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsattributeReadonly(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsattributeReadonly(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSattribute* castedThis = jsCast&lt;JSattribute*&gt;(asObject(slotBase));
</del><ins>+    JSattribute* castedThis = jsDynamicCast&lt;JSattribute*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     attribute&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     JSValue result = jsStringWithCache(exec, impl.readonly());
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-JSValue jsattributeConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsattributeConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSattribute* domObject = jsCast&lt;JSattribute*&gt;(asObject(slotBase));
-    return JSattribute::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSattribute* domObject = jsDynamicCast&lt;JSattribute*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSattribute::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSattribute::getConstructor(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -195,7 +195,7 @@
</span><span class="cx"> 
</span><span class="cx"> attribute* toattribute(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSattribute::info()) ? &amp;jsCast&lt;JSattribute*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSattribute::info()) ? &amp;jsCast&lt;JSattribute*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSattributeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -139,8 +139,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsattributeReadonly(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-JSC::JSValue jsattributeConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsattributeReadonly(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+JSC::EncodedJSValue jsattributeConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSreadonlycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -117,10 +117,10 @@
</span><span class="cx">     return getStaticValueSlot&lt;JSreadonly, Base&gt;(exec, JSreadonlyTable, thisObject, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue jsreadonlyConstructor(ExecState* exec, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue jsreadonlyConstructor(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    JSreadonly* domObject = jsCast&lt;JSreadonly*&gt;(asObject(slotBase));
-    return JSreadonly::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject());
</del><ins>+    JSreadonly* domObject = jsDynamicCast&lt;JSreadonly*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(JSreadonly::getConstructor(exec-&gt;vm(), domObject-&gt;globalObject()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue JSreadonly::getConstructor(VM&amp; vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -162,7 +162,7 @@
</span><span class="cx"> 
</span><span class="cx"> readonly* toreadonly(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    return value.inherits(JSreadonly::info()) ? &amp;jsCast&lt;JSreadonly*&gt;(asObject(value))-&gt;impl() : 0;
</del><ins>+    return value.inherits(JSreadonly::info()) ? &amp;jsCast&lt;JSreadonly*&gt;(value)-&gt;impl() : 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSreadonlyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx"> 
</span><span class="cx"> // Attributes
</span><span class="cx"> 
</span><del>-JSC::JSValue jsreadonlyConstructor(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+JSC::EncodedJSValue jsreadonlyConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_arraycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_array.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_array.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bridge/runtime_array.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -60,16 +60,16 @@
</span><span class="cx">     static_cast&lt;RuntimeArray*&gt;(cell)-&gt;RuntimeArray::~RuntimeArray();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue RuntimeArray::lengthGetter(ExecState*, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue RuntimeArray::lengthGetter(ExecState*, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    RuntimeArray* thisObj = static_cast&lt;RuntimeArray*&gt;(asObject(slotBase));
-    return jsNumber(thisObj-&gt;getLength());
</del><ins>+    RuntimeArray* thisObj = jsCast&lt;RuntimeArray*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(jsNumber(thisObj-&gt;getLength()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue RuntimeArray::indexGetter(ExecState* exec, JSValue slotBase, unsigned index)
</del><ins>+EncodedJSValue RuntimeArray::indexGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, unsigned index)
</ins><span class="cx"> {
</span><del>-    RuntimeArray* thisObj = static_cast&lt;RuntimeArray*&gt;(asObject(slotBase));
-    return thisObj-&gt;getConcreteArray()-&gt;valueAt(exec, index);
</del><ins>+    RuntimeArray* thisObj = jsCast&lt;RuntimeArray*&gt;(JSValue::decode(slotBase));
+    return JSValue::encode(thisObj-&gt;getConcreteArray()-&gt;valueAt(exec, index));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RuntimeArray::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray&amp; propertyNames, EnumerationMode mode)
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_arrayh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_array.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_array.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bridge/runtime_array.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -84,8 +84,8 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     RuntimeArray(ExecState*, Structure*);
</span><del>-    static JSValue lengthGetter(ExecState*, JSValue, PropertyName);
-    static JSValue indexGetter(ExecState*, JSValue, unsigned);
</del><ins>+    static EncodedJSValue lengthGetter(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+    static EncodedJSValue indexGetter(ExecState*, EncodedJSValue, EncodedJSValue, unsigned);
</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 (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_method.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bridge/runtime_method.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -54,11 +54,11 @@
</span><span class="cx">     ASSERT(inherits(info()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue RuntimeMethod::lengthGetter(ExecState*, JSValue slotBase, PropertyName)
</del><ins>+EncodedJSValue RuntimeMethod::lengthGetter(ExecState*, EncodedJSValue slotBase, EncodedJSValue, PropertyName)
</ins><span class="cx"> {
</span><del>-    RuntimeMethod* thisObj = static_cast&lt;RuntimeMethod*&gt;(asObject(slotBase));
</del><ins>+    RuntimeMethod* thisObj = jsCast&lt;RuntimeMethod*&gt;(JSValue::decode(slotBase));
</ins><span class="cx"> 
</span><del>-    return jsNumber(thisObj-&gt;m_method-&gt;numParameters());
</del><ins>+    return JSValue::encode(jsNumber(thisObj-&gt;m_method-&gt;numParameters()));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RuntimeMethod::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot &amp;slot)
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_methodh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_method.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_method.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bridge/runtime_method.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -67,7 +67,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 JSValue lengthGetter(ExecState*, JSValue, PropertyName);
</del><ins>+    static EncodedJSValue lengthGetter(ExecState*, EncodedJSValue, 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 (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_object.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bridge/runtime_object.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -62,13 +62,13 @@
</span><span class="cx">     m_instance = 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue RuntimeObject::fallbackObjectGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue RuntimeObject::fallbackObjectGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    RuntimeObject* thisObj = static_cast&lt;RuntimeObject*&gt;(asObject(slotBase));
</del><ins>+    RuntimeObject* thisObj = jsCast&lt;RuntimeObject*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     RefPtr&lt;Instance&gt; instance = thisObj-&gt;m_instance;
</span><span class="cx"> 
</span><span class="cx">     if (!instance)
</span><del>-        return throwInvalidAccessError(exec);
</del><ins>+        return JSValue::encode(throwInvalidAccessError(exec));
</ins><span class="cx">     
</span><span class="cx">     instance-&gt;begin();
</span><span class="cx"> 
</span><span class="lines">@@ -77,16 +77,16 @@
</span><span class="cx"> 
</span><span class="cx">     instance-&gt;end();
</span><span class="cx">             
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue RuntimeObject::fieldGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue RuntimeObject::fieldGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {    
</span><del>-    RuntimeObject* thisObj = static_cast&lt;RuntimeObject*&gt;(asObject(slotBase));
</del><ins>+    RuntimeObject* thisObj = jsCast&lt;RuntimeObject*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     RefPtr&lt;Instance&gt; instance = thisObj-&gt;m_instance;
</span><span class="cx"> 
</span><span class="cx">     if (!instance)
</span><del>-        return throwInvalidAccessError(exec);
</del><ins>+        return JSValue::encode(throwInvalidAccessError(exec));
</ins><span class="cx">     
</span><span class="cx">     instance-&gt;begin();
</span><span class="cx"> 
</span><span class="lines">@@ -96,16 +96,16 @@
</span><span class="cx">     
</span><span class="cx">     instance-&gt;end();
</span><span class="cx">             
</span><del>-    return result;
</del><ins>+    return JSValue::encode(result);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue RuntimeObject::methodGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue RuntimeObject::methodGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    RuntimeObject* thisObj = static_cast&lt;RuntimeObject*&gt;(asObject(slotBase));
</del><ins>+    RuntimeObject* thisObj = jsCast&lt;RuntimeObject*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     RefPtr&lt;Instance&gt; instance = thisObj-&gt;m_instance;
</span><span class="cx"> 
</span><span class="cx">     if (!instance)
</span><del>-        return throwInvalidAccessError(exec);
</del><ins>+        return JSValue::encode(throwInvalidAccessError(exec));
</ins><span class="cx">     
</span><span class="cx">     instance-&gt;begin();
</span><span class="cx"> 
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx"> 
</span><span class="cx">     instance-&gt;end();
</span><span class="cx">             
</span><del>-    return method;
</del><ins>+    return JSValue::encode(method);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool RuntimeObject::getOwnPropertySlot(JSObject* object, ExecState *exec, PropertyName propertyName, PropertySlot&amp; slot)
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_objecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_object.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_object.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebCore/bridge/runtime_object.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -78,9 +78,9 @@
</span><span class="cx">     static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesGetPropertyNames | Base::StructureFlags;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    static JSValue fallbackObjectGetter(ExecState*, JSValue, PropertyName);
-    static JSValue fieldGetter(ExecState*, JSValue, PropertyName);
-    static JSValue methodGetter(ExecState*, JSValue, PropertyName);
</del><ins>+    static EncodedJSValue fallbackObjectGetter(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+    static EncodedJSValue fieldGetter(ExecState*, EncodedJSValue, EncodedJSValue, PropertyName);
+    static EncodedJSValue methodGetter(ExecState*, EncodedJSValue, 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 (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebKit2/ChangeLog        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -1,3 +1,27 @@
</span><ins>+2013-12-04  Oliver Hunt  &lt;oliver@apple.com&gt;
+
+        Refactor static getter function prototype to include thisValue in addition to the base object
+        https://bugs.webkit.org/show_bug.cgi?id=124461
+
+        Reviewed by Geoffrey Garen.
+
+        Update the WK2 JSC usage to the new static getter API
+
+        * WebProcess/Plugins/Netscape/JSNPMethod.cpp:
+        (WebKit::callMethod):
+        * WebProcess/Plugins/Netscape/JSNPObject.cpp:
+        (WebKit::callNPJSObject):
+        (WebKit::constructWithConstructor):
+        (WebKit::JSNPObject::propertyGetter):
+        (WebKit::JSNPObject::methodGetter):
+        * WebProcess/Plugins/Netscape/JSNPObject.h:
+        * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
+        (WebKit::NPRuntimeObjectMap::getOrCreateNPObject):
+        (WebKit::NPRuntimeObjectMap::finalize):
+        * WebProcess/WebPage/WebFrame.cpp:
+        (WebKit::WebFrame::frameForContext):
+        (WebKit::WebFrame::counterValue):
+
</ins><span class="cx"> 2013-12-05  Commit Queue  &lt;commit-queue@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r160133.
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsNetscapeJSNPMethodcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -59,13 +59,13 @@
</span><span class="cx"> 
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL callMethod(ExecState* exec)
</span><span class="cx"> {
</span><del>-    JSNPMethod* jsNPMethod = static_cast&lt;JSNPMethod*&gt;(exec-&gt;callee());
</del><ins>+    JSNPMethod* jsNPMethod = jsCast&lt;JSNPMethod*&gt;(exec-&gt;callee());
</ins><span class="cx"> 
</span><span class="cx">     JSValue thisValue = exec-&gt;hostThisValue();
</span><span class="cx"> 
</span><span class="cx">     // Check if we're calling a method on the plug-in script object.
</span><span class="cx">     if (thisValue.inherits(JSHTMLElement::info())) {
</span><del>-        JSHTMLElement* element = static_cast&lt;JSHTMLElement*&gt;(asObject(thisValue));
</del><ins>+        JSHTMLElement* element = jsCast&lt;JSHTMLElement*&gt;(asObject(thisValue));
</ins><span class="cx"> 
</span><span class="cx">         // Try to get the script object from the element
</span><span class="cx">         if (JSObject* scriptObject = pluginScriptObject(exec, element))
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (thisValue.inherits(JSNPObject::info())) {
</span><del>-        JSNPObject* jsNPObject = static_cast&lt;JSNPObject*&gt;(asObject(thisValue));
</del><ins>+        JSNPObject* jsNPObject = jsCast&lt;JSNPObject*&gt;(asObject(thisValue));
</ins><span class="cx"> 
</span><span class="cx">         return JSValue::encode(jsNPObject-&gt;callMethod(exec, jsNPMethod-&gt;npIdentifier()));
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsNetscapeJSNPObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -225,7 +225,7 @@
</span><span class="cx">     JSObject* object = exec-&gt;callee();
</span><span class="cx">     ASSERT(object-&gt;inherits(JSNPObject::info()));
</span><span class="cx"> 
</span><del>-    return JSValue::encode(static_cast&lt;JSNPObject*&gt;(object)-&gt;callObject(exec));
</del><ins>+    return JSValue::encode(jsCast&lt;JSNPObject*&gt;(object)-&gt;callObject(exec));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSC::CallType JSNPObject::getCallData(JSC::JSCell* cell, JSC::CallData&amp; callData)
</span><span class="lines">@@ -244,7 +244,7 @@
</span><span class="cx">     JSObject* constructor = exec-&gt;callee();
</span><span class="cx">     ASSERT(constructor-&gt;inherits(JSNPObject::info()));
</span><span class="cx"> 
</span><del>-    return JSValue::encode(static_cast&lt;JSNPObject*&gt;(constructor)-&gt;callConstructor(exec));
</del><ins>+    return JSValue::encode(jsCast&lt;JSNPObject*&gt;(constructor)-&gt;callConstructor(exec));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ConstructType JSNPObject::getConstructData(JSCell* cell, ConstructData&amp; constructData)
</span><span class="lines">@@ -417,16 +417,16 @@
</span><span class="cx">     npnMemFree(identifiers);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSNPObject::propertyGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSNPObject::propertyGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSNPObject* thisObj = static_cast&lt;JSNPObject*&gt;(asObject(slotBase));
</del><ins>+    JSNPObject* thisObj = jsCast&lt;JSNPObject*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ASSERT_GC_OBJECT_INHERITS(thisObj, info());
</span><span class="cx">     
</span><span class="cx">     if (!thisObj-&gt;m_npObject)
</span><del>-        return throwInvalidAccessError(exec);
</del><ins>+        return JSValue::encode(throwInvalidAccessError(exec));
</ins><span class="cx"> 
</span><span class="cx">     if (!thisObj-&gt;m_npObject-&gt;_class-&gt;getProperty)
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx"> 
</span><span class="cx">     NPVariant result;
</span><span class="cx">     VOID_TO_NPVARIANT(result);
</span><span class="lines">@@ -446,23 +446,23 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!returnValue)
</span><del>-        return jsUndefined();
</del><ins>+        return JSValue::encode(jsUndefined());
</ins><span class="cx"> 
</span><span class="cx">     JSValue propertyValue = thisObj-&gt;m_objectMap-&gt;convertNPVariantToJSValue(exec, thisObj-&gt;globalObject(), result);
</span><span class="cx">     releaseNPVariantValue(&amp;result);
</span><del>-    return propertyValue;
</del><ins>+    return JSValue::encode(propertyValue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSValue JSNPObject::methodGetter(ExecState* exec, JSValue slotBase, PropertyName propertyName)
</del><ins>+EncodedJSValue JSNPObject::methodGetter(ExecState* exec, EncodedJSValue slotBase, EncodedJSValue, PropertyName propertyName)
</ins><span class="cx"> {
</span><del>-    JSNPObject* thisObj = static_cast&lt;JSNPObject*&gt;(asObject(slotBase));
</del><ins>+    JSNPObject* thisObj = jsCast&lt;JSNPObject*&gt;(JSValue::decode(slotBase));
</ins><span class="cx">     ASSERT_GC_OBJECT_INHERITS(thisObj, info());
</span><span class="cx">     
</span><span class="cx">     if (!thisObj-&gt;m_npObject)
</span><del>-        return throwInvalidAccessError(exec);
</del><ins>+        return JSValue::encode(throwInvalidAccessError(exec));
</ins><span class="cx"> 
</span><span class="cx">     NPIdentifier npIdentifier = npIdentifierFromIdentifier(propertyName);
</span><del>-    return JSNPMethod::create(exec, thisObj-&gt;globalObject(), propertyName.publicName(), npIdentifier);
</del><ins>+    return JSValue::encode(JSNPMethod::create(exec, thisObj-&gt;globalObject(), propertyName.publicName(), npIdentifier));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSObject* JSNPObject::throwInvalidAccessError(ExecState* exec)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsNetscapeJSNPObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -95,8 +95,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::JSValue propertyGetter(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
-    static JSC::JSValue methodGetter(JSC::ExecState*, JSC::JSValue, JSC::PropertyName);
</del><ins>+    static JSC::EncodedJSValue propertyGetter(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue, JSC::PropertyName);
+    static JSC::EncodedJSValue methodGetter(JSC::ExecState*, JSC::EncodedJSValue, 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>
<a id="trunkSourceWebKit2WebProcessPluginsNetscapeNPRuntimeObjectMapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx"> {
</span><span class="cx">     // If this is a JSNPObject, we can just get its underlying NPObject.
</span><span class="cx">     if (jsObject-&gt;classInfo() == JSNPObject::info()) {
</span><del>-        JSNPObject* jsNPObject = static_cast&lt;JSNPObject*&gt;(jsObject);
</del><ins>+        JSNPObject* jsNPObject = jsCast&lt;JSNPObject*&gt;(jsObject);
</ins><span class="cx">         NPObject* npObject = jsNPObject-&gt;npObject();
</span><span class="cx">         
</span><span class="cx">         retainNPObject(npObject);
</span><span class="lines">@@ -302,7 +302,7 @@
</span><span class="cx"> 
</span><span class="cx"> void NPRuntimeObjectMap::finalize(JSC::Handle&lt;JSC::Unknown&gt; handle, void* context)
</span><span class="cx"> {
</span><del>-    JSNPObject* object = static_cast&lt;JSNPObject*&gt;(handle.get().asCell());
</del><ins>+    JSNPObject* object = jsCast&lt;JSNPObject*&gt;(handle.get().asCell());
</ins><span class="cx">     weakRemove(m_jsNPObjects, static_cast&lt;NPObject*&gt;(context), object);
</span><span class="cx">     addToInvalidationQueue(object-&gt;leakNPObject());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp (160207 => 160208)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp        2013-12-06 02:52:12 UTC (rev 160207)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp        2013-12-06 03:03:24 UTC (rev 160208)
</span><span class="lines">@@ -664,7 +664,7 @@
</span><span class="cx">     if (!toJS(element)-&gt;inherits(JSElement::info()))
</span><span class="cx">         return String();
</span><span class="cx"> 
</span><del>-    return counterValueForElement(&amp;static_cast&lt;JSElement*&gt;(toJS(element))-&gt;impl());
</del><ins>+    return counterValueForElement(&amp;jsCast&lt;JSElement*&gt;(toJS(element))-&gt;impl());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String WebFrame::provisionalURL() const
</span></span></pre>
</div>
</div>

</body>
</html>