<!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>[208124] 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/208124">208124</a></dd>
<dt>Author</dt> <dd>utatane.tea@gmail.com</dd>
<dt>Date</dt> <dd>2016-10-30 03:03:20 -0700 (Sun, 30 Oct 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[DOM] Introduce WebCore::jsDynamicDowncast
https://bugs.webkit.org/show_bug.cgi?id=164137

Reviewed by Darin Adler.

Source/WebCore:

In WebCore, we have several extended JSTypes, like JSElementType.
For these types, WebCore offers the faster casting function compared
to JSC::jsDynamicCast. For example, for JSElementType, we have
jsElementCast.

The problem is that we may fall into the slow code if we choose
JSC::jsDynamicCast by accident. Selecting the appropriate function
requires special care in the IDL code generator when we would like
to use faster casting functions.

This patch implements a new casting function, WebCore::jsDynamicDowncast.
It is a thin wrapper to the JSC::jsDynamicCast. But it selects the
faster casting functions correctly by template specialization.

We do not choose the way specializing JSC::jsDynamicCast directly.
If we forget to include the header that specializes JSC::jsDyanmicCast,
it does not cause any compile errors, but it causes performance regression.
This bug is hard to figure out. To avoid this problem, we add a new function.

Outside JSC, only Tools' DumpRenderTree uses JSC::jsDynamicCast.
This code has FIXME that we should use JSC APIs instead of directly calling
JSC thingy. So this should be solved in the layer of JSC APIs and changing
this jsDynamicCast to WebCore's jsDynamicDowncast and exposing WebCore's thingy
are not good change. So we leave the code as is.

* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSApplePaySessionCustom.cpp:
(WebCore::JSApplePaySession::completeShippingMethodSelection):
(WebCore::JSApplePaySession::completeShippingContactSelection):
(WebCore::JSApplePaySession::completePaymentMethodSelection):
* bindings/js/JSDOMBinding.cpp:
(WebCore::reportException):
* bindings/js/JSDOMBinding.h:
(WebCore::castThisValue):
(WebCore::toArrayBufferView):
* bindings/js/JSDOMIterator.h:
(WebCore::IteratorTraits&gt;::next):
* bindings/js/JSDOMWindowShell.cpp:
(WebCore::JSDOMWindowShell::toWrapped):
* bindings/js/JSDictionary.cpp:
(WebCore::JSDictionary::convertValue):
* bindings/js/JSDocumentCustom.h:
(WebCore::jsDocumentCast):
* bindings/js/JSDynamicDowncast.h: Added.
(WebCore::JSDynamicCastTrait::cast):
(WebCore::JSDynamicCastTrait&lt;JSNode&gt;::cast):
(WebCore::JSDynamicCastTrait&lt;JSElement&gt;::cast):
(WebCore::JSDynamicCastTrait&lt;JSDocument&gt;::cast):
(WebCore::JSDynamicCastTrait&lt;JSEvent&gt;::cast):
(WebCore::jsDynamicDowncast):
* bindings/js/JSElementCustom.h:
(WebCore::jsElementCast):
* bindings/js/JSEventCustom.h:
(WebCore::jsEventCast):
* bindings/js/JSEventListener.cpp:
(WebCore::setDocumentEventHandlerAttribute):
* bindings/js/JSEventTargetCustom.cpp:
(WebCore::jsEventTargetCast):
* bindings/js/JSMediaStreamTrackCustom.cpp:
(WebCore::JSMediaStreamTrack::getSettings):
(WebCore::JSMediaStreamTrack::getCapabilities):
* bindings/js/JSNodeCustom.h:
(WebCore::jsNodeCast):
* bindings/js/JSPluginElementFunctions.cpp:
(WebCore::pluginElementPropertyGetter):
* bindings/js/JSReadableStreamPrivateConstructors.cpp:
(WebCore::constructJSReadableStreamDefaultReader):
* bindings/js/JSReadableStreamSourceCustom.cpp:
(WebCore::startReadableStream):
(WebCore::JSReadableStreamSource::start):
(WebCore::pullReadableStream):
* bindings/js/JSWorkerGlobalScopeBase.cpp:
(WebCore::toJSDedicatedWorkerGlobalScope):
* bindings/js/ScriptModuleLoader.cpp:
(WebCore::ScriptModuleLoader::evaluate):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::serialize):
* bindings/js/StructuredClone.cpp:
(WebCore::structuredCloneArrayBufferView):
* bindings/scripts/CodeGeneratorJS.pm:
(GetCastingHelperForThisObject):
(GenerateImplementation):
* bindings/scripts/test/JS/JSInterfaceName.cpp:
(WebCore::jsInterfaceNameConstructor):
(WebCore::setJSInterfaceNameConstructor):
(WebCore::JSInterfaceName::toWrapped):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::BindingCaller&lt;JSTestActiveDOMObject&gt;::castForAttribute):
(WebCore::BindingCaller&lt;JSTestActiveDOMObject&gt;::castForOperation):
(WebCore::jsTestActiveDOMObjectConstructor):
(WebCore::setJSTestActiveDOMObjectConstructor):
(WebCore::JSTestActiveDOMObject::toWrapped):
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
(WebCore::BindingCaller&lt;JSTestCEReactions&gt;::castForAttribute):
(WebCore::BindingCaller&lt;JSTestCEReactions&gt;::castForOperation):
(WebCore::jsTestCEReactionsConstructor):
(WebCore::setJSTestCEReactionsConstructor):
(WebCore::JSTestCEReactions::toWrapped):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
(WebCore::BindingCaller&lt;JSTestCEReactionsStringifier&gt;::castForAttribute):
(WebCore::BindingCaller&lt;JSTestCEReactionsStringifier&gt;::castForOperation):
(WebCore::jsTestCEReactionsStringifierConstructor):
(WebCore::setJSTestCEReactionsStringifierConstructor):
(WebCore::JSTestCEReactionsStringifier::toWrapped):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::jsTestClassWithJSBuiltinConstructorConstructor):
(WebCore::setJSTestClassWithJSBuiltinConstructorConstructor):
(WebCore::JSTestClassWithJSBuiltinConstructor::toWrapped):
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
(WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor):
(WebCore::setJSTestCustomConstructorWithNoInterfaceObjectConstructor):
(WebCore::JSTestCustomConstructorWithNoInterfaceObject::toWrapped):
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
(WebCore::BindingCaller&lt;JSTestCustomNamedGetter&gt;::castForOperation):
(WebCore::jsTestCustomNamedGetterConstructor):
(WebCore::setJSTestCustomNamedGetterConstructor):
(WebCore::JSTestCustomNamedGetter::toWrapped):
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
(WebCore::BindingCaller&lt;JSTestDOMJIT&gt;::castForAttribute):
(WebCore::jsTestDOMJITConstructor):
(WebCore::setJSTestDOMJITConstructor):
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::BindingCaller&lt;JSTestEventConstructor&gt;::castForAttribute):
(WebCore::jsTestEventConstructorConstructor):
(WebCore::setJSTestEventConstructorConstructor):
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::BindingCaller&lt;JSTestEventTarget&gt;::castForOperation):
(WebCore::jsTestEventTargetConstructor):
(WebCore::setJSTestEventTargetConstructor):
(WebCore::JSTestEventTarget::toWrapped):
* bindings/scripts/test/JS/JSTestException.cpp:
(WebCore::BindingCaller&lt;JSTestException&gt;::castForAttribute):
(WebCore::jsTestExceptionConstructor):
(WebCore::setJSTestExceptionConstructor):
(WebCore::JSTestException::toWrapped):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::jsTestGenerateIsReachableConstructor):
(WebCore::setJSTestGenerateIsReachableConstructor):
(WebCore::JSTestGenerateIsReachable::toWrapped):
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::BindingCaller&lt;JSTestGlobalObject&gt;::castForAttribute):
(WebCore::BindingCaller&lt;JSTestGlobalObject&gt;::castForOperation):
(WebCore::jsTestGlobalObjectConstructor):
(WebCore::setJSTestGlobalObjectConstructor):
(WebCore::JSTestGlobalObject::toWrapped):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::BindingCaller&lt;JSTestInterface&gt;::castForAttribute):
(WebCore::BindingCaller&lt;JSTestInterface&gt;::castForOperation):
(WebCore::jsTestInterfaceConstructor):
(WebCore::setJSTestInterfaceConstructor):
(WebCore::JSTestInterface::toWrapped):
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
(WebCore::BindingCaller&lt;JSTestInterfaceLeadingUnderscore&gt;::castForAttribute):
(WebCore::jsTestInterfaceLeadingUnderscoreConstructor):
(WebCore::setJSTestInterfaceLeadingUnderscoreConstructor):
(WebCore::JSTestInterfaceLeadingUnderscore::toWrapped):
* bindings/scripts/test/JS/JSTestIterable.cpp:
(WebCore::BindingCaller&lt;JSTestIterable&gt;::castForOperation):
(WebCore::jsTestIterableConstructor):
(WebCore::setJSTestIterableConstructor):
(WebCore::JSTestIterable::toWrapped):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::BindingCaller&lt;JSTestJSBuiltinConstructor&gt;::castForAttribute):
(WebCore::BindingCaller&lt;JSTestJSBuiltinConstructor&gt;::castForOperation):
(WebCore::jsTestJSBuiltinConstructorConstructor):
(WebCore::setJSTestJSBuiltinConstructorConstructor):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::BindingCaller&lt;JSTestMediaQueryListListener&gt;::castForOperation):
(WebCore::jsTestMediaQueryListListenerConstructor):
(WebCore::setJSTestMediaQueryListListenerConstructor):
(WebCore::JSTestMediaQueryListListener::toWrapped):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::jsTestNamedConstructorConstructor):
(WebCore::setJSTestNamedConstructorConstructor):
(WebCore::JSTestNamedConstructor::toWrapped):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::BindingCaller&lt;JSTestNode&gt;::castForAttribute):
(WebCore::BindingCaller&lt;JSTestNode&gt;::castForOperation):
(WebCore::jsTestNodeConstructor):
(WebCore::setJSTestNodeConstructor):
* bindings/scripts/test/JS/JSTestNondeterministic.cpp:
(WebCore::BindingCaller&lt;JSTestNondeterministic&gt;::castForAttribute):
(WebCore::BindingCaller&lt;JSTestNondeterministic&gt;::castForOperation):
(WebCore::jsTestNondeterministicConstructor):
(WebCore::setJSTestNondeterministicConstructor):
(WebCore::JSTestNondeterministic::toWrapped):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::BindingCaller&lt;JSTestObj&gt;::castForAttribute):
(WebCore::BindingCaller&lt;JSTestObj&gt;::castForOperation):
(WebCore::jsTestObjConstructor):
(WebCore::setJSTestObjConstructor):
(WebCore::JSTestObj::toWrapped):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::jsTestOverloadedConstructorsConstructor):
(WebCore::setJSTestOverloadedConstructorsConstructor):
(WebCore::JSTestOverloadedConstructors::toWrapped):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::jsTestOverloadedConstructorsWithSequenceConstructor):
(WebCore::setJSTestOverloadedConstructorsWithSequenceConstructor):
(WebCore::JSTestOverloadedConstructorsWithSequence::toWrapped):
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
(WebCore::BindingCaller&lt;JSTestOverrideBuiltins&gt;::castForOperation):
(WebCore::jsTestOverrideBuiltinsConstructor):
(WebCore::setJSTestOverrideBuiltinsConstructor):
(WebCore::JSTestOverrideBuiltins::toWrapped):
* bindings/scripts/test/JS/JSTestSerialization.cpp:
(WebCore::BindingCaller&lt;JSTestSerialization&gt;::castForAttribute):
(WebCore::BindingCaller&lt;JSTestSerialization&gt;::castForOperation):
(WebCore::jsTestSerializationConstructor):
(WebCore::setJSTestSerializationConstructor):
(WebCore::JSTestSerialization::toWrapped):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::BindingCaller&lt;JSTestSerializedScriptValueInterface&gt;::castForAttribute):
(WebCore::jsTestSerializedScriptValueInterfaceConstructor):
(WebCore::setJSTestSerializedScriptValueInterfaceConstructor):
(WebCore::JSTestSerializedScriptValueInterface::toWrapped):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::BindingCaller&lt;JSTestTypedefs&gt;::castForAttribute):
(WebCore::BindingCaller&lt;JSTestTypedefs&gt;::castForOperation):
(WebCore::jsTestTypedefsConstructor):
(WebCore::setJSTestTypedefsConstructor):
(WebCore::JSTestTypedefs::toWrapped):
* bridge/objc/WebScriptObject.mm:
(-[WebScriptObject setValue:forKey:]):
* bridge/runtime_array.cpp:
(JSC::RuntimeArray::lengthGetter):
* bridge/runtime_method.cpp:
(JSC::RuntimeMethod::lengthGetter):
* html/HTMLMediaElement.cpp:
(WebCore::controllerJSValue):
(WebCore::HTMLMediaElement::updateCaptionContainer):
(WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::buildObjectForEventListener):

Source/WebKit2:

* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::WebAutomationSessionProxy::elementForNodeHandle):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSApplePaySessionCustomcpp">trunk/Source/WebCore/bindings/js/JSApplePaySessionCustom.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="#trunkSourceWebCorebindingsjsJSDOMIteratorh">trunk/Source/WebCore/bindings/js/JSDOMIterator.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowShellcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDictionarycpp">trunk/Source/WebCore/bindings/js/JSDictionary.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDocumentCustomh">trunk/Source/WebCore/bindings/js/JSDocumentCustom.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSElementCustomh">trunk/Source/WebCore/bindings/js/JSElementCustom.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventCustomh">trunk/Source/WebCore/bindings/js/JSEventCustom.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventListenercpp">trunk/Source/WebCore/bindings/js/JSEventListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventTargetCustomcpp">trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMediaStreamTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSNodeCustomh">trunk/Source/WebCore/bindings/js/JSNodeCustom.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSPluginElementFunctionscpp">trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSReadableStreamPrivateConstructorscpp">trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSReadableStreamSourceCustomcpp">trunk/Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWorkerGlobalScopeBasecpp">trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptModuleLoadercpp">trunk/Source/WebCore/bindings/js/ScriptModuleLoader.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsSerializedScriptValuecpp">trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsStructuredClonecpp">trunk/Source/WebCore/bindings/js/StructuredClone.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSInterfaceNamecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsStringifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestDOMJITcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGlobalObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceLeadingUnderscorecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestIterablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministiccpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsWithSequencecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializationcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp</a></li>
<li><a href="#trunkSourceWebCorebridgeobjcWebScriptObjectmm">trunk/Source/WebCore/bridge/objc/WebScriptObject.mm</a></li>
<li><a href="#trunkSourceWebCorebridgeruntime_arraycpp">trunk/Source/WebCore/bridge/runtime_array.cpp</a></li>
<li><a href="#trunkSourceWebCorebridgeruntime_methodcpp">trunk/Source/WebCore/bridge/runtime_method.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessAutomationWebAutomationSessionProxycpp">trunk/Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorebindingsjsJSDynamicDowncasth">trunk/Source/WebCore/bindings/js/JSDynamicDowncast.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/ChangeLog        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -1,3 +1,245 @@
</span><ins>+2016-10-30  Yusuke Suzuki  &lt;utatane.tea@gmail.com&gt;
+
+        [DOM] Introduce WebCore::jsDynamicDowncast
+        https://bugs.webkit.org/show_bug.cgi?id=164137
+
+        Reviewed by Darin Adler.
+
+        In WebCore, we have several extended JSTypes, like JSElementType.
+        For these types, WebCore offers the faster casting function compared
+        to JSC::jsDynamicCast. For example, for JSElementType, we have
+        jsElementCast.
+
+        The problem is that we may fall into the slow code if we choose
+        JSC::jsDynamicCast by accident. Selecting the appropriate function
+        requires special care in the IDL code generator when we would like
+        to use faster casting functions.
+
+        This patch implements a new casting function, WebCore::jsDynamicDowncast.
+        It is a thin wrapper to the JSC::jsDynamicCast. But it selects the
+        faster casting functions correctly by template specialization.
+
+        We do not choose the way specializing JSC::jsDynamicCast directly.
+        If we forget to include the header that specializes JSC::jsDyanmicCast,
+        it does not cause any compile errors, but it causes performance regression.
+        This bug is hard to figure out. To avoid this problem, we add a new function.
+
+        Outside JSC, only Tools' DumpRenderTree uses JSC::jsDynamicCast.
+        This code has FIXME that we should use JSC APIs instead of directly calling
+        JSC thingy. So this should be solved in the layer of JSC APIs and changing
+        this jsDynamicCast to WebCore's jsDynamicDowncast and exposing WebCore's thingy
+        are not good change. So we leave the code as is.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/JSApplePaySessionCustom.cpp:
+        (WebCore::JSApplePaySession::completeShippingMethodSelection):
+        (WebCore::JSApplePaySession::completeShippingContactSelection):
+        (WebCore::JSApplePaySession::completePaymentMethodSelection):
+        * bindings/js/JSDOMBinding.cpp:
+        (WebCore::reportException):
+        * bindings/js/JSDOMBinding.h:
+        (WebCore::castThisValue):
+        (WebCore::toArrayBufferView):
+        * bindings/js/JSDOMIterator.h:
+        (WebCore::IteratorTraits&gt;::next):
+        * bindings/js/JSDOMWindowShell.cpp:
+        (WebCore::JSDOMWindowShell::toWrapped):
+        * bindings/js/JSDictionary.cpp:
+        (WebCore::JSDictionary::convertValue):
+        * bindings/js/JSDocumentCustom.h:
+        (WebCore::jsDocumentCast):
+        * bindings/js/JSDynamicDowncast.h: Added.
+        (WebCore::JSDynamicCastTrait::cast):
+        (WebCore::JSDynamicCastTrait&lt;JSNode&gt;::cast):
+        (WebCore::JSDynamicCastTrait&lt;JSElement&gt;::cast):
+        (WebCore::JSDynamicCastTrait&lt;JSDocument&gt;::cast):
+        (WebCore::JSDynamicCastTrait&lt;JSEvent&gt;::cast):
+        (WebCore::jsDynamicDowncast):
+        * bindings/js/JSElementCustom.h:
+        (WebCore::jsElementCast):
+        * bindings/js/JSEventCustom.h:
+        (WebCore::jsEventCast):
+        * bindings/js/JSEventListener.cpp:
+        (WebCore::setDocumentEventHandlerAttribute):
+        * bindings/js/JSEventTargetCustom.cpp:
+        (WebCore::jsEventTargetCast):
+        * bindings/js/JSMediaStreamTrackCustom.cpp:
+        (WebCore::JSMediaStreamTrack::getSettings):
+        (WebCore::JSMediaStreamTrack::getCapabilities):
+        * bindings/js/JSNodeCustom.h:
+        (WebCore::jsNodeCast):
+        * bindings/js/JSPluginElementFunctions.cpp:
+        (WebCore::pluginElementPropertyGetter):
+        * bindings/js/JSReadableStreamPrivateConstructors.cpp:
+        (WebCore::constructJSReadableStreamDefaultReader):
+        * bindings/js/JSReadableStreamSourceCustom.cpp:
+        (WebCore::startReadableStream):
+        (WebCore::JSReadableStreamSource::start):
+        (WebCore::pullReadableStream):
+        * bindings/js/JSWorkerGlobalScopeBase.cpp:
+        (WebCore::toJSDedicatedWorkerGlobalScope):
+        * bindings/js/ScriptModuleLoader.cpp:
+        (WebCore::ScriptModuleLoader::evaluate):
+        * bindings/js/SerializedScriptValue.cpp:
+        (WebCore::CloneSerializer::serialize):
+        * bindings/js/StructuredClone.cpp:
+        (WebCore::structuredCloneArrayBufferView):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GetCastingHelperForThisObject):
+        (GenerateImplementation):
+        * bindings/scripts/test/JS/JSInterfaceName.cpp:
+        (WebCore::jsInterfaceNameConstructor):
+        (WebCore::setJSInterfaceNameConstructor):
+        (WebCore::JSInterfaceName::toWrapped):
+        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
+        (WebCore::BindingCaller&lt;JSTestActiveDOMObject&gt;::castForAttribute):
+        (WebCore::BindingCaller&lt;JSTestActiveDOMObject&gt;::castForOperation):
+        (WebCore::jsTestActiveDOMObjectConstructor):
+        (WebCore::setJSTestActiveDOMObjectConstructor):
+        (WebCore::JSTestActiveDOMObject::toWrapped):
+        * bindings/scripts/test/JS/JSTestCEReactions.cpp:
+        (WebCore::BindingCaller&lt;JSTestCEReactions&gt;::castForAttribute):
+        (WebCore::BindingCaller&lt;JSTestCEReactions&gt;::castForOperation):
+        (WebCore::jsTestCEReactionsConstructor):
+        (WebCore::setJSTestCEReactionsConstructor):
+        (WebCore::JSTestCEReactions::toWrapped):
+        * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
+        (WebCore::BindingCaller&lt;JSTestCEReactionsStringifier&gt;::castForAttribute):
+        (WebCore::BindingCaller&lt;JSTestCEReactionsStringifier&gt;::castForOperation):
+        (WebCore::jsTestCEReactionsStringifierConstructor):
+        (WebCore::setJSTestCEReactionsStringifierConstructor):
+        (WebCore::JSTestCEReactionsStringifier::toWrapped):
+        * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
+        (WebCore::jsTestClassWithJSBuiltinConstructorConstructor):
+        (WebCore::setJSTestClassWithJSBuiltinConstructorConstructor):
+        (WebCore::JSTestClassWithJSBuiltinConstructor::toWrapped):
+        * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
+        (WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor):
+        (WebCore::setJSTestCustomConstructorWithNoInterfaceObjectConstructor):
+        (WebCore::JSTestCustomConstructorWithNoInterfaceObject::toWrapped):
+        * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
+        (WebCore::BindingCaller&lt;JSTestCustomNamedGetter&gt;::castForOperation):
+        (WebCore::jsTestCustomNamedGetterConstructor):
+        (WebCore::setJSTestCustomNamedGetterConstructor):
+        (WebCore::JSTestCustomNamedGetter::toWrapped):
+        * bindings/scripts/test/JS/JSTestDOMJIT.cpp:
+        (WebCore::BindingCaller&lt;JSTestDOMJIT&gt;::castForAttribute):
+        (WebCore::jsTestDOMJITConstructor):
+        (WebCore::setJSTestDOMJITConstructor):
+        * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
+        (WebCore::BindingCaller&lt;JSTestEventConstructor&gt;::castForAttribute):
+        (WebCore::jsTestEventConstructorConstructor):
+        (WebCore::setJSTestEventConstructorConstructor):
+        * bindings/scripts/test/JS/JSTestEventTarget.cpp:
+        (WebCore::BindingCaller&lt;JSTestEventTarget&gt;::castForOperation):
+        (WebCore::jsTestEventTargetConstructor):
+        (WebCore::setJSTestEventTargetConstructor):
+        (WebCore::JSTestEventTarget::toWrapped):
+        * bindings/scripts/test/JS/JSTestException.cpp:
+        (WebCore::BindingCaller&lt;JSTestException&gt;::castForAttribute):
+        (WebCore::jsTestExceptionConstructor):
+        (WebCore::setJSTestExceptionConstructor):
+        (WebCore::JSTestException::toWrapped):
+        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
+        (WebCore::jsTestGenerateIsReachableConstructor):
+        (WebCore::setJSTestGenerateIsReachableConstructor):
+        (WebCore::JSTestGenerateIsReachable::toWrapped):
+        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
+        (WebCore::BindingCaller&lt;JSTestGlobalObject&gt;::castForAttribute):
+        (WebCore::BindingCaller&lt;JSTestGlobalObject&gt;::castForOperation):
+        (WebCore::jsTestGlobalObjectConstructor):
+        (WebCore::setJSTestGlobalObjectConstructor):
+        (WebCore::JSTestGlobalObject::toWrapped):
+        * bindings/scripts/test/JS/JSTestInterface.cpp:
+        (WebCore::BindingCaller&lt;JSTestInterface&gt;::castForAttribute):
+        (WebCore::BindingCaller&lt;JSTestInterface&gt;::castForOperation):
+        (WebCore::jsTestInterfaceConstructor):
+        (WebCore::setJSTestInterfaceConstructor):
+        (WebCore::JSTestInterface::toWrapped):
+        * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
+        (WebCore::BindingCaller&lt;JSTestInterfaceLeadingUnderscore&gt;::castForAttribute):
+        (WebCore::jsTestInterfaceLeadingUnderscoreConstructor):
+        (WebCore::setJSTestInterfaceLeadingUnderscoreConstructor):
+        (WebCore::JSTestInterfaceLeadingUnderscore::toWrapped):
+        * bindings/scripts/test/JS/JSTestIterable.cpp:
+        (WebCore::BindingCaller&lt;JSTestIterable&gt;::castForOperation):
+        (WebCore::jsTestIterableConstructor):
+        (WebCore::setJSTestIterableConstructor):
+        (WebCore::JSTestIterable::toWrapped):
+        * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
+        (WebCore::BindingCaller&lt;JSTestJSBuiltinConstructor&gt;::castForAttribute):
+        (WebCore::BindingCaller&lt;JSTestJSBuiltinConstructor&gt;::castForOperation):
+        (WebCore::jsTestJSBuiltinConstructorConstructor):
+        (WebCore::setJSTestJSBuiltinConstructorConstructor):
+        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
+        (WebCore::BindingCaller&lt;JSTestMediaQueryListListener&gt;::castForOperation):
+        (WebCore::jsTestMediaQueryListListenerConstructor):
+        (WebCore::setJSTestMediaQueryListListenerConstructor):
+        (WebCore::JSTestMediaQueryListListener::toWrapped):
+        * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
+        (WebCore::jsTestNamedConstructorConstructor):
+        (WebCore::setJSTestNamedConstructorConstructor):
+        (WebCore::JSTestNamedConstructor::toWrapped):
+        * bindings/scripts/test/JS/JSTestNode.cpp:
+        (WebCore::BindingCaller&lt;JSTestNode&gt;::castForAttribute):
+        (WebCore::BindingCaller&lt;JSTestNode&gt;::castForOperation):
+        (WebCore::jsTestNodeConstructor):
+        (WebCore::setJSTestNodeConstructor):
+        * bindings/scripts/test/JS/JSTestNondeterministic.cpp:
+        (WebCore::BindingCaller&lt;JSTestNondeterministic&gt;::castForAttribute):
+        (WebCore::BindingCaller&lt;JSTestNondeterministic&gt;::castForOperation):
+        (WebCore::jsTestNondeterministicConstructor):
+        (WebCore::setJSTestNondeterministicConstructor):
+        (WebCore::JSTestNondeterministic::toWrapped):
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        (WebCore::BindingCaller&lt;JSTestObj&gt;::castForAttribute):
+        (WebCore::BindingCaller&lt;JSTestObj&gt;::castForOperation):
+        (WebCore::jsTestObjConstructor):
+        (WebCore::setJSTestObjConstructor):
+        (WebCore::JSTestObj::toWrapped):
+        * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
+        (WebCore::jsTestOverloadedConstructorsConstructor):
+        (WebCore::setJSTestOverloadedConstructorsConstructor):
+        (WebCore::JSTestOverloadedConstructors::toWrapped):
+        * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
+        (WebCore::jsTestOverloadedConstructorsWithSequenceConstructor):
+        (WebCore::setJSTestOverloadedConstructorsWithSequenceConstructor):
+        (WebCore::JSTestOverloadedConstructorsWithSequence::toWrapped):
+        * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
+        (WebCore::BindingCaller&lt;JSTestOverrideBuiltins&gt;::castForOperation):
+        (WebCore::jsTestOverrideBuiltinsConstructor):
+        (WebCore::setJSTestOverrideBuiltinsConstructor):
+        (WebCore::JSTestOverrideBuiltins::toWrapped):
+        * bindings/scripts/test/JS/JSTestSerialization.cpp:
+        (WebCore::BindingCaller&lt;JSTestSerialization&gt;::castForAttribute):
+        (WebCore::BindingCaller&lt;JSTestSerialization&gt;::castForOperation):
+        (WebCore::jsTestSerializationConstructor):
+        (WebCore::setJSTestSerializationConstructor):
+        (WebCore::JSTestSerialization::toWrapped):
+        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
+        (WebCore::BindingCaller&lt;JSTestSerializedScriptValueInterface&gt;::castForAttribute):
+        (WebCore::jsTestSerializedScriptValueInterfaceConstructor):
+        (WebCore::setJSTestSerializedScriptValueInterfaceConstructor):
+        (WebCore::JSTestSerializedScriptValueInterface::toWrapped):
+        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
+        (WebCore::BindingCaller&lt;JSTestTypedefs&gt;::castForAttribute):
+        (WebCore::BindingCaller&lt;JSTestTypedefs&gt;::castForOperation):
+        (WebCore::jsTestTypedefsConstructor):
+        (WebCore::setJSTestTypedefsConstructor):
+        (WebCore::JSTestTypedefs::toWrapped):
+        * bridge/objc/WebScriptObject.mm:
+        (-[WebScriptObject setValue:forKey:]):
+        * bridge/runtime_array.cpp:
+        (JSC::RuntimeArray::lengthGetter):
+        * bridge/runtime_method.cpp:
+        (JSC::RuntimeMethod::lengthGetter):
+        * html/HTMLMediaElement.cpp:
+        (WebCore::controllerJSValue):
+        (WebCore::HTMLMediaElement::updateCaptionContainer):
+        (WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::buildObjectForEventListener):
+
</ins><span class="cx"> 2016-10-29  Dave Hyatt  &lt;hyatt@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [CSS Parser] Add font-variant-* keyword property support
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -6201,6 +6201,7 @@
</span><span class="cx">                 E1FF8F6D180DB5BE00132674 /* CryptoAlgorithmRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = E1FF8F6B180DB5BE00132674 /* CryptoAlgorithmRegistry.h */; };
</span><span class="cx">                 E3150EA61DA7219000194012 /* JSNodeDOMJIT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E3AFA9641DA6E908002861BD /* JSNodeDOMJIT.cpp */; };
</span><span class="cx">                 E3150EA71DA7219300194012 /* DOMJITHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = E3150EA51DA7218D00194012 /* DOMJITHelpers.h */; };
</span><ins>+                E318039D1DC40099009932C2 /* JSDynamicDowncast.h in Headers */ = {isa = PBXBuildFile; fileRef = E3A5872E1DC3F52600F607A6 /* JSDynamicDowncast.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 E3565B7B1DC2D6C900217DBD /* JSEventCustom.h in Headers */ = {isa = PBXBuildFile; fileRef = E34EE49F1DC2D57500EAA9D3 /* JSEventCustom.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 E35CA14D1DBC3A3F00F83516 /* DOMJITAbstractHeapRepository.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E35CA14B1DBC3A3C00F83516 /* DOMJITAbstractHeapRepository.cpp */; };
</span><span class="cx">                 E35CA14E1DBC3A4200F83516 /* DOMJITAbstractHeapRepository.h in Headers */ = {isa = PBXBuildFile; fileRef = E35CA14C1DBC3A3C00F83516 /* DOMJITAbstractHeapRepository.h */; };
</span><span class="lines">@@ -14043,6 +14044,7 @@
</span><span class="cx">                 E38838941BAD145F00D62EE3 /* ScriptModuleLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptModuleLoader.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E38838951BAD145F00D62EE3 /* ScriptModuleLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptModuleLoader.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E398FC231DC32A1B003C4684 /* DOMJITHelpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMJITHelpers.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                E3A5872E1DC3F52600F607A6 /* JSDynamicDowncast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDynamicDowncast.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 E3AFA9641DA6E908002861BD /* JSNodeDOMJIT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeDOMJIT.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E3B2F0E31D7F35EC00B0C9D1 /* LoadableClassicScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadableClassicScript.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E3B2F0E41D7F35EC00B0C9D1 /* LoadableClassicScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoadableClassicScript.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -21619,6 +21621,7 @@
</span><span class="cx">                                 BCBFB53B0DCD29CF0019B3E5 /* JSDOMWindowShell.h */,
</span><span class="cx">                                 4170A2E91D8C0CC000318452 /* JSDOMWrapper.cpp */,
</span><span class="cx">                                 65E0E9431133C89F00B4CB10 /* JSDOMWrapper.h */,
</span><ins>+                                E3A5872E1DC3F52600F607A6 /* JSDynamicDowncast.h */,
</ins><span class="cx">                                 F3D461461161D53200CA0D09 /* JSErrorHandler.cpp */,
</span><span class="cx">                                 F3D461471161D53200CA0D09 /* JSErrorHandler.h */,
</span><span class="cx">                                 E34EE49F1DC2D57500EAA9D3 /* JSEventCustom.h */,
</span><span class="lines">@@ -27608,6 +27611,7 @@
</span><span class="cx">                                 F55B3DDE1251F12D003EF269 /* URLInputType.h in Headers */,
</span><span class="cx">                                 5C6E65431D5CEFBF00F7862E /* URLParser.h in Headers */,
</span><span class="cx">                                 7CC289DF1AA0FE5D009A9CE3 /* URLRegistry.h in Headers */,
</span><ins>+                                E318039D1DC40099009932C2 /* JSDynamicDowncast.h in Headers */,
</ins><span class="cx">                                 93D437A21D57B3FE00AB85EA /* URLUtils.h in Headers */,
</span><span class="cx">                                 A72763BF16689BFB002FCACB /* UserActionElementSet.h in Headers */,
</span><span class="cx">                                 868160D618766A130021E79D /* UserActivity.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSApplePaySessionCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSApplePaySessionCustom.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSApplePaySessionCustom.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSApplePaySessionCustom.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue thisValue = state.thisValue();
</span><del>-    JSApplePaySession* castedThis = jsDynamicCast&lt;JSApplePaySession*&gt;(thisValue);
</del><ins>+    JSApplePaySession* castedThis = jsDynamicDowncast&lt;JSApplePaySession*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return JSValue::decode(throwThisTypeError(state, scope, &quot;ApplePaySession&quot;, &quot;completeShippingMethodSelection&quot;));
</span><span class="cx"> 
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue thisValue = state.thisValue();
</span><del>-    JSApplePaySession* castedThis = jsDynamicCast&lt;JSApplePaySession*&gt;(thisValue);
</del><ins>+    JSApplePaySession* castedThis = jsDynamicDowncast&lt;JSApplePaySession*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return JSValue::decode(throwThisTypeError(state, scope, &quot;ApplePaySession&quot;, &quot;completeShippingContactSelection&quot;));
</span><span class="cx"> 
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue thisValue = state.thisValue();
</span><del>-    JSApplePaySession* castedThis = jsDynamicCast&lt;JSApplePaySession*&gt;(thisValue);
</del><ins>+    JSApplePaySession* castedThis = jsDynamicDowncast&lt;JSApplePaySession*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return JSValue::decode(throwThisTypeError(state, scope, &quot;ApplePaySession&quot;, &quot;completePaymentMethodSelection&quot;));
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -146,7 +146,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     RELEASE_ASSERT(vm.currentThreadIsHoldingAPILock());
</span><del>-    auto* exception = jsDynamicCast&lt;JSC::Exception*&gt;(exceptionValue);
</del><ins>+    auto* exception = jsDynamicDowncast&lt;JSC::Exception*&gt;(exceptionValue);
</ins><span class="cx">     if (!exception) {
</span><span class="cx">         exception = vm.lastException();
</span><span class="cx">         if (!exception)
</span><span class="lines">@@ -172,7 +172,7 @@
</span><span class="cx">     vm.clearLastException();
</span><span class="cx"> 
</span><span class="cx">     JSDOMGlobalObject* globalObject = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject());
</span><del>-    if (JSDOMWindow* window = jsDynamicCast&lt;JSDOMWindow*&gt;(globalObject)) {
</del><ins>+    if (JSDOMWindow* window = jsDynamicDowncast&lt;JSDOMWindow*&gt;(globalObject)) {
</ins><span class="cx">         if (!window-&gt;wrapped().isCurrentlyDisplayedInFrame())
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="lines">@@ -193,7 +193,7 @@
</span><span class="cx">     else {
</span><span class="cx">         // FIXME: &lt;http://webkit.org/b/115087&gt; Web Inspector: WebCore::reportException should not evaluate JavaScript handling exceptions
</span><span class="cx">         // If this is a custom exception object, call toString on it to try and get a nice string representation for the exception.
</span><del>-        if (ErrorInstance* error = jsDynamicCast&lt;ErrorInstance*&gt;(exceptionValue))
</del><ins>+        if (ErrorInstance* error = jsDynamicDowncast&lt;ErrorInstance*&gt;(exceptionValue))
</ins><span class="cx">             errorMessage = error-&gt;sanitizedToString(exec);
</span><span class="cx">         else
</span><span class="cx">             errorMessage = exceptionValue.toString(exec)-&gt;value(exec);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> #include &quot;ExceptionOr.h&quot;
</span><span class="cx"> #include &quot;JSDOMGlobalObject.h&quot;
</span><span class="cx"> #include &quot;JSDOMWrapper.h&quot;
</span><ins>+#include &quot;JSDynamicDowncast.h&quot;
</ins><span class="cx"> #include &quot;ScriptWrappable.h&quot;
</span><span class="cx"> #include &quot;ScriptWrappableInlines.h&quot;
</span><span class="cx"> #include &quot;WebCoreTypedArrayController.h&quot;
</span><span class="lines">@@ -557,7 +558,7 @@
</span><span class="cx"> template&lt;typename JSClass&gt; inline JSClass&amp; castThisValue(JSC::ExecState&amp; state)
</span><span class="cx"> {
</span><span class="cx">     auto thisValue = state.thisValue();
</span><del>-    auto castedThis = JSC::jsDynamicCast&lt;JSClass*&gt;(thisValue);
</del><ins>+    auto castedThis = jsDynamicDowncast&lt;JSClass*&gt;(thisValue);
</ins><span class="cx">     ASSERT(castedThis);
</span><span class="cx">     return *castedThis;
</span><span class="cx"> }
</span><span class="lines">@@ -679,7 +680,7 @@
</span><span class="cx"> 
</span><span class="cx"> inline RefPtr&lt;JSC::ArrayBufferView&gt; toArrayBufferView(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    auto* wrapper = JSC::jsDynamicCast&lt;JSC::JSArrayBufferView*&gt;(value);
</del><ins>+    auto* wrapper = jsDynamicDowncast&lt;JSC::JSArrayBufferView*&gt;(value);
</ins><span class="cx">     if (!wrapper)
</span><span class="cx">         return nullptr;
</span><span class="cx">     return wrapper-&gt;impl();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMIterator.h (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMIterator.h        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSDOMIterator.h        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -247,7 +247,7 @@
</span><span class="cx">     JSC::VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><del>-    auto iterator = JSC::jsDynamicCast&lt;JSDOMIterator&lt;JSWrapper, IteratorTraits&gt;*&gt;(state-&gt;thisValue());
</del><ins>+    auto iterator = jsDynamicDowncast&lt;JSDOMIterator&lt;JSWrapper, IteratorTraits&gt;*&gt;(state-&gt;thisValue());
</ins><span class="cx">     if (!iterator)
</span><span class="cx">         return JSC::JSValue::encode(throwTypeError(state, scope, ASCIILiteral(&quot;Cannot call next() on a non-Iterator object&quot;)));
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowShellcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx"> 
</span><span class="cx"> DOMWindow* JSDOMWindowShell::toWrapped(JSObject* value)
</span><span class="cx"> {
</span><del>-    auto* wrapper = jsDynamicCast&lt;JSDOMWindowShell*&gt;(value);
</del><ins>+    auto* wrapper = jsDynamicDowncast&lt;JSDOMWindowShell*&gt;(value);
</ins><span class="cx">     if (!wrapper)
</span><span class="cx">         return nullptr;
</span><span class="cx">     return &amp;wrapper-&gt;window()-&gt;wrapped();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDictionarycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDictionary.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDictionary.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSDictionary.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -361,7 +361,7 @@
</span><span class="cx"> 
</span><span class="cx"> void JSDictionary::convertValue(JSC::ExecState*, JSC::JSValue value, JSC::JSFunction*&amp; result)
</span><span class="cx"> {
</span><del>-    result = jsDynamicCast&lt;JSC::JSFunction*&gt;(value);
</del><ins>+    result = jsDynamicDowncast&lt;JSC::JSFunction*&gt;(value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool JSDictionary::getWithUndefinedOrNullCheck(const char* propertyName, String&amp; result) const
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDocumentCustomh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDocumentCustom.h (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDocumentCustom.h        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSDocumentCustom.h        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -31,11 +31,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-ALWAYS_INLINE JSDocument* jsDocumentCast(JSC::JSValue value)
</del><ins>+template&lt;typename From&gt;
+ALWAYS_INLINE JSDynamicCastResult&lt;JSDocument, From&gt; jsDocumentCast(From* value)
</ins><span class="cx"> {
</span><del>-    if (UNLIKELY(!value.isCell()))
-        return nullptr;
-    return value.asCell()-&gt;type() == JSDocumentWrapperType ? JSC::jsCast&lt;JSDocument*&gt;(value) : nullptr;
</del><ins>+    return value-&gt;type() == JSDocumentWrapperType ? JSC::jsCast&lt;JSDynamicCastResult&lt;JSDocument, From&gt;&gt;(value) : nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSC::JSObject* cachedDocumentWrapper(JSC::ExecState&amp;, JSDOMGlobalObject&amp;, Document&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDynamicDowncasth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/bindings/js/JSDynamicDowncast.h (0 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDynamicDowncast.h                                (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSDynamicDowncast.h        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -0,0 +1,110 @@
</span><ins>+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include &lt;runtime/JSCJSValueInlines.h&gt;
+#include &lt;runtime/JSCellInlines.h&gt;
+#include &lt;type_traits&gt;
+
+namespace WebCore {
+
+template&lt;typename To, typename From&gt;
+using JSDynamicCastResult = typename std::conditional&lt;std::is_const&lt;From&gt;::value, const To, To&gt;::type*;
+
+class JSNode;
+template&lt;typename From&gt;
+JSDynamicCastResult&lt;JSNode, From&gt; jsNodeCast(From* value);
+class JSElement;
+template&lt;typename From&gt;
+JSDynamicCastResult&lt;JSElement, From&gt; jsElementCast(From* value);
+class JSDocument;
+template&lt;typename From&gt;
+JSDynamicCastResult&lt;JSDocument, From&gt; jsDocumentCast(From* value);
+class JSEvent;
+template&lt;typename From&gt;
+JSDynamicCastResult&lt;JSEvent, From&gt; jsEventCast(From* value);
+
+template&lt;typename Select&gt;
+struct JSDynamicCastTrait {
+    template&lt;typename To, typename From&gt;
+    ALWAYS_INLINE static To cast(From* from)
+    {
+        return JSC::jsDynamicCast&lt;To&gt;(from);
+    }
+};
+
+template&lt;&gt;
+struct JSDynamicCastTrait&lt;JSNode&gt; {
+    template&lt;typename To, typename From&gt;
+    ALWAYS_INLINE static To cast(From* from)
+    {
+        return jsNodeCast(from);
+    }
+};
+
+template&lt;&gt;
+struct JSDynamicCastTrait&lt;JSElement&gt; {
+    template&lt;typename To, typename From&gt;
+    ALWAYS_INLINE static To cast(From* from)
+    {
+        return jsElementCast(from);
+    }
+};
+
+template&lt;&gt;
+struct JSDynamicCastTrait&lt;JSDocument&gt; {
+    template&lt;typename To, typename From&gt;
+    ALWAYS_INLINE static To cast(From* from)
+    {
+        return jsDocumentCast(from);
+    }
+};
+
+template&lt;&gt;
+struct JSDynamicCastTrait&lt;JSEvent&gt; {
+    template&lt;typename To, typename From&gt;
+    ALWAYS_INLINE static To cast(From* from)
+    {
+        return jsEventCast(from);
+    }
+};
+
+template&lt;typename To, typename From&gt;
+ALWAYS_INLINE To jsDynamicDowncast(From* from)
+{
+    typedef JSDynamicCastTrait&lt;typename std::remove_cv&lt;typename std::remove_pointer&lt;To&gt;::type&gt;::type&gt; Dispatcher;
+    return Dispatcher::template cast&lt;To&gt;(from);
+}
+
+template&lt;typename To&gt;
+ALWAYS_INLINE To jsDynamicDowncast(JSC::JSValue from)
+{
+    if (UNLIKELY(!from.isCell()))
+        return nullptr;
+    return jsDynamicDowncast&lt;To&gt;(from.asCell());
+}
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSElementCustomh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSElementCustom.h (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSElementCustom.h        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSElementCustom.h        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -31,11 +31,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-ALWAYS_INLINE JSElement* jsElementCast(JSC::JSValue value)
</del><ins>+template&lt;typename From&gt;
+ALWAYS_INLINE JSDynamicCastResult&lt;JSElement, From&gt; jsElementCast(From* value)
</ins><span class="cx"> {
</span><del>-    if (UNLIKELY(!value.isCell()))
-        return nullptr;
-    return value.asCell()-&gt;type() &gt;= JSElementType ? JSC::jsCast&lt;JSElement*&gt;(value) : nullptr;
</del><ins>+    return value-&gt;type() &gt;= JSElementType ? JSC::jsCast&lt;JSDynamicCastResult&lt;JSElement, From&gt;&gt;(value) : nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventCustomh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventCustom.h (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventCustom.h        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSEventCustom.h        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -29,11 +29,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-ALWAYS_INLINE JSEvent* jsEventCast(JSC::JSValue value)
</del><ins>+template&lt;typename From&gt;
+ALWAYS_INLINE JSDynamicCastResult&lt;JSEvent, From&gt; jsEventCast(From* value)
</ins><span class="cx"> {
</span><del>-    if (UNLIKELY(!value.isCell()))
-        return nullptr;
-    return value.asCell()-&gt;type() == JSEventType ? JSC::jsCast&lt;JSEvent*&gt;(value) : nullptr;
</del><ins>+    return value-&gt;type() == JSEventType ? JSC::jsCast&lt;JSDynamicCastResult&lt;JSEvent, From&gt;&gt;(value) : nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventListener.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventListener.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSEventListener.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -246,7 +246,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(wrapper.globalObject());
</span><span class="cx">     auto&amp; document = element.document();
</span><del>-    auto* documentWrapper = jsDocumentCast(toJS(&amp;state, JSC::jsCast&lt;JSDOMGlobalObject*&gt;(wrapper.globalObject()), document));
</del><ins>+    auto* documentWrapper = JSC::jsCast&lt;JSDocument*&gt;(toJS(&amp;state, JSC::jsCast&lt;JSDOMGlobalObject*&gt;(wrapper.globalObject()), document));
</ins><span class="cx">     ASSERT(documentWrapper);
</span><span class="cx">     document.setAttributeEventListener(eventType, createEventListenerForEventHandlerAttribute(state, value, *documentWrapper));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventTargetCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> 
</span><span class="cx"> std::unique_ptr&lt;JSEventTargetWrapper&gt; jsEventTargetCast(JSValue thisValue)
</span><span class="cx"> {
</span><del>-    if (auto* target = jsDynamicCast&lt;JSEventTarget*&gt;(thisValue))
</del><ins>+    if (auto* target = jsDynamicDowncast&lt;JSEventTarget*&gt;(thisValue))
</ins><span class="cx">         return std::make_unique&lt;JSEventTargetWrapper&gt;(target-&gt;wrapped(), *target);
</span><span class="cx">     if (auto* window = toJSDOMWindow(thisValue))
</span><span class="cx">         return std::make_unique&lt;JSEventTargetWrapper&gt;(window-&gt;wrapped(), *window);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMediaStreamTrackCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSMediaStreamTrackCustom.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue thisValue = state.thisValue();
</span><del>-    JSMediaStreamTrack* castedThis = jsDynamicCast&lt;JSMediaStreamTrack*&gt;(thisValue);
</del><ins>+    JSMediaStreamTrack* castedThis = jsDynamicDowncast&lt;JSMediaStreamTrack*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return JSValue::decode(throwThisTypeError(state, scope, &quot;MediaStreamTrack&quot;, &quot;getSettings&quot;));
</span><span class="cx"> 
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue thisValue = state.thisValue();
</span><del>-    JSMediaStreamTrack* castedThis = jsDynamicCast&lt;JSMediaStreamTrack*&gt;(thisValue);
</del><ins>+    JSMediaStreamTrack* castedThis = jsDynamicDowncast&lt;JSMediaStreamTrack*&gt;(thisValue);
</ins><span class="cx">     if (UNLIKELY(!castedThis))
</span><span class="cx">         return JSValue::decode(throwThisTypeError(state, scope, &quot;MediaStreamTrack&quot;, &quot;getSettings&quot;));
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSNodeCustomh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSNodeCustom.h (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSNodeCustom.h        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSNodeCustom.h        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -78,11 +78,10 @@
</span><span class="cx">     return root(&amp;node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ALWAYS_INLINE JSNode* jsNodeCast(JSC::JSValue value)
</del><ins>+template&lt;typename From&gt;
+ALWAYS_INLINE JSDynamicCastResult&lt;JSNode, From&gt; jsNodeCast(From* value)
</ins><span class="cx"> {
</span><del>-    if (UNLIKELY(!value.isCell()))
-        return nullptr;
-    return value.asCell()-&gt;type() &gt;= JSNodeType ? JSC::jsCast&lt;JSNode*&gt;(value) : nullptr;
</del><ins>+    return value-&gt;type() &gt;= JSNodeType ? JSC::jsCast&lt;JSDynamicCastResult&lt;JSNode, From&gt;&gt;(value) : nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ALWAYS_INLINE JSC::JSValue JSNode::nodeType(JSC::ExecState&amp;) const
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSPluginElementFunctionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -99,7 +99,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><del>-    JSHTMLElement* thisObject = jsDynamicCast&lt;JSHTMLElement*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSHTMLElement* thisObject = jsDynamicDowncast&lt;JSHTMLElement*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!thisObject)
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     JSObject* scriptObject = pluginScriptObject(exec, thisObject);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSReadableStreamPrivateConstructorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx">     VM&amp; vm = exec.vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     
</span><del>-    JSReadableStream* stream = jsDynamicCast&lt;JSReadableStream*&gt;(exec.argument(0));
</del><ins>+    JSReadableStream* stream = jsDynamicDowncast&lt;JSReadableStream*&gt;(exec.argument(0));
</ins><span class="cx">     if (!stream)
</span><span class="cx">         return throwArgumentTypeError(exec, scope, 0, &quot;stream&quot;, &quot;ReadableStreamReader&quot;, nullptr, &quot;ReadableStream&quot;);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSReadableStreamSourceCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -37,11 +37,11 @@
</span><span class="cx"> 
</span><span class="cx"> static void startReadableStream(JSC::ExecState&amp; state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</span><span class="cx"> {
</span><del>-    JSReadableStreamSource* source = jsDynamicCast&lt;JSReadableStreamSource*&gt;(state.thisValue());
</del><ins>+    JSReadableStreamSource* source = jsDynamicDowncast&lt;JSReadableStreamSource*&gt;(state.thisValue());
</ins><span class="cx">     ASSERT(source);
</span><span class="cx"> 
</span><span class="cx">     ASSERT(state.argumentCount());
</span><del>-    JSReadableStreamDefaultController* controller = jsDynamicCast&lt;JSReadableStreamDefaultController*&gt;(state.uncheckedArgument(0));
</del><ins>+    JSReadableStreamDefaultController* controller = jsDynamicDowncast&lt;JSReadableStreamDefaultController*&gt;(state.uncheckedArgument(0));
</ins><span class="cx">     ASSERT(controller);
</span><span class="cx"> 
</span><span class="cx">     source-&gt;wrapped().start(ReadableStreamDefaultController(controller), WTFMove(promise));
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> JSValue JSReadableStreamSource::start(ExecState&amp; state)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(state.argumentCount());
</span><del>-    JSReadableStreamDefaultController* controller = jsDynamicCast&lt;JSReadableStreamDefaultController*&gt;(state.uncheckedArgument(0));
</del><ins>+    JSReadableStreamDefaultController* controller = jsDynamicDowncast&lt;JSReadableStreamDefaultController*&gt;(state.uncheckedArgument(0));
</ins><span class="cx">     ASSERT(controller);
</span><span class="cx"> 
</span><span class="cx">     m_controller.set(state.vm(), this, controller);
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> 
</span><span class="cx"> static void pullReadableStream(JSC::ExecState&amp; state, Ref&lt;DeferredPromise&gt;&amp;&amp; promise)
</span><span class="cx"> {
</span><del>-    JSReadableStreamSource* source = jsDynamicCast&lt;JSReadableStreamSource*&gt;(state.thisValue());
</del><ins>+    JSReadableStreamSource* source = jsDynamicDowncast&lt;JSReadableStreamSource*&gt;(state.thisValue());
</ins><span class="cx">     ASSERT(source);
</span><span class="cx"> 
</span><span class="cx">     source-&gt;wrapped().pull(WTFMove(promise));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWorkerGlobalScopeBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #include &quot;DOMWrapperWorld.h&quot;
</span><span class="cx"> #include &quot;JSDOMGlobalObjectTask.h&quot;
</span><span class="cx"> #include &quot;JSDedicatedWorkerGlobalScope.h&quot;
</span><ins>+#include &quot;JSDynamicDowncast.h&quot;
</ins><span class="cx"> #include &quot;JSWorkerGlobalScope.h&quot;
</span><span class="cx"> #include &quot;Language.h&quot;
</span><span class="cx"> #include &quot;WorkerGlobalScope.h&quot;
</span><span class="lines">@@ -128,7 +129,7 @@
</span><span class="cx">     if (classInfo == JSDedicatedWorkerGlobalScope::info())
</span><span class="cx">         return jsCast&lt;JSDedicatedWorkerGlobalScope*&gt;(asObject(value));
</span><span class="cx">     if (classInfo == JSProxy::info())
</span><del>-        return jsDynamicCast&lt;JSDedicatedWorkerGlobalScope*&gt;(jsCast&lt;JSProxy*&gt;(asObject(value))-&gt;target());
</del><ins>+        return jsDynamicDowncast&lt;JSDedicatedWorkerGlobalScope*&gt;(jsCast&lt;JSProxy*&gt;(asObject(value))-&gt;target());
</ins><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptModuleLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptModuleLoader.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptModuleLoader.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/ScriptModuleLoader.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx">     // FIXME: Currently, we only support JSModuleRecord.
</span><span class="cx">     // Once the reflective part of the module loader is supported, we will handle arbitrary values.
</span><span class="cx">     // https://whatwg.github.io/loader/#registry-prototype-provide
</span><del>-    JSC::JSModuleRecord* moduleRecord = JSC::jsDynamicCast&lt;JSC::JSModuleRecord*&gt;(moduleRecordValue);
</del><ins>+    JSC::JSModuleRecord* moduleRecord = jsDynamicDowncast&lt;JSC::JSModuleRecord*&gt;(moduleRecordValue);
</ins><span class="cx">     if (!moduleRecord)
</span><span class="cx">         return JSC::jsUndefined();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsSerializedScriptValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -1371,7 +1371,7 @@
</span><span class="cx">                 if (!iterator-&gt;nextKeyValue(m_exec, key, value)) {
</span><span class="cx">                     mapIteratorStack.removeLast();
</span><span class="cx">                     JSObject* object = inputObjectStack.last();
</span><del>-                    ASSERT(jsDynamicCast&lt;JSMap*&gt;(object));
</del><ins>+                    ASSERT(jsDynamicDowncast&lt;JSMap*&gt;(object));
</ins><span class="cx">                     propertyStack.append(PropertyNameArray(m_exec, PropertyNameMode::Strings));
</span><span class="cx">                     object-&gt;methodTable()-&gt;getOwnPropertyNames(object, m_exec, propertyStack.last(), EnumerationMode());
</span><span class="cx">                     write(NonMapPropertiesTag);
</span><span class="lines">@@ -1415,7 +1415,7 @@
</span><span class="cx">                 if (!iterator-&gt;next(m_exec, key)) {
</span><span class="cx">                     setIteratorStack.removeLast();
</span><span class="cx">                     JSObject* object = inputObjectStack.last();
</span><del>-                    ASSERT(jsDynamicCast&lt;JSSet*&gt;(object));
</del><ins>+                    ASSERT(jsDynamicDowncast&lt;JSSet*&gt;(object));
</ins><span class="cx">                     propertyStack.append(PropertyNameArray(m_exec, PropertyNameMode::Strings));
</span><span class="cx">                     object-&gt;methodTable()-&gt;getOwnPropertyNames(object, m_exec, propertyStack.last(), EnumerationMode());
</span><span class="cx">                     write(NonSetPropertiesTag);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsStructuredClonecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/StructuredClone.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/StructuredClone.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/js/StructuredClone.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">     ASSERT(execState-&gt;argumentCount());
</span><span class="cx"> 
</span><span class="cx">     JSValue value = execState-&gt;uncheckedArgument(0);
</span><del>-    auto* bufferView = JSC::jsDynamicCast&lt;JSArrayBufferView*&gt;(value);
</del><ins>+    auto* bufferView = jsDynamicDowncast&lt;JSArrayBufferView*&gt;(value);
</ins><span class="cx">     ASSERT(bufferView);
</span><span class="cx"> 
</span><span class="cx">     auto* buffer = bufferView-&gt;buffer();
</span><span class="lines">@@ -66,25 +66,25 @@
</span><span class="cx">     }
</span><span class="cx">     auto bufferClone = ArrayBuffer::tryCreate(buffer-&gt;data(), buffer-&gt;byteLength());
</span><span class="cx"> 
</span><del>-    if (JSC::jsDynamicCast&lt;JSInt8Array*&gt;(value))
</del><ins>+    if (jsDynamicDowncast&lt;JSInt8Array*&gt;(value))
</ins><span class="cx">         return JSValue::encode(JSInt8Array::create(execState, bufferView-&gt;structure(), WTFMove(bufferClone), bufferView-&gt;byteOffset(), bufferView-&gt;length()));
</span><del>-    if (JSC::jsDynamicCast&lt;JSInt16Array*&gt;(value))
</del><ins>+    if (jsDynamicDowncast&lt;JSInt16Array*&gt;(value))
</ins><span class="cx">         return JSValue::encode(JSInt16Array::create(execState, bufferView-&gt;structure(), WTFMove(bufferClone), bufferView-&gt;byteOffset(), bufferView-&gt;length()));
</span><del>-    if (JSC::jsDynamicCast&lt;JSInt32Array*&gt;(value))
</del><ins>+    if (jsDynamicDowncast&lt;JSInt32Array*&gt;(value))
</ins><span class="cx">         return JSValue::encode(JSInt32Array::create(execState, bufferView-&gt;structure(), WTFMove(bufferClone), bufferView-&gt;byteOffset(), bufferView-&gt;length()));
</span><del>-    if (JSC::jsDynamicCast&lt;JSUint8Array*&gt;(value))
</del><ins>+    if (jsDynamicDowncast&lt;JSUint8Array*&gt;(value))
</ins><span class="cx">         return JSValue::encode(JSUint8Array::create(execState, bufferView-&gt;structure(), WTFMove(bufferClone), bufferView-&gt;byteOffset(), bufferView-&gt;length()));
</span><del>-    if (JSC::jsDynamicCast&lt;JSUint8ClampedArray*&gt;(value))
</del><ins>+    if (jsDynamicDowncast&lt;JSUint8ClampedArray*&gt;(value))
</ins><span class="cx">         return JSValue::encode(JSUint8ClampedArray::create(execState, bufferView-&gt;structure(), WTFMove(bufferClone), bufferView-&gt;byteOffset(), bufferView-&gt;length()));
</span><del>-    if (JSC::jsDynamicCast&lt;JSUint16Array*&gt;(value))
</del><ins>+    if (jsDynamicDowncast&lt;JSUint16Array*&gt;(value))
</ins><span class="cx">         return JSValue::encode(JSUint16Array::create(execState, bufferView-&gt;structure(), WTFMove(bufferClone), bufferView-&gt;byteOffset(), bufferView-&gt;length()));
</span><del>-    if (JSC::jsDynamicCast&lt;JSUint32Array*&gt;(value))
</del><ins>+    if (jsDynamicDowncast&lt;JSUint32Array*&gt;(value))
</ins><span class="cx">         return JSValue::encode(JSUint32Array::create(execState, bufferView-&gt;structure(), WTFMove(bufferClone), bufferView-&gt;byteOffset(), bufferView-&gt;length()));
</span><del>-    if (JSC::jsDynamicCast&lt;JSFloat32Array*&gt;(value))
</del><ins>+    if (jsDynamicDowncast&lt;JSFloat32Array*&gt;(value))
</ins><span class="cx">         return JSValue::encode(JSFloat32Array::create(execState, bufferView-&gt;structure(), WTFMove(bufferClone), bufferView-&gt;byteOffset(), bufferView-&gt;length()));
</span><del>-    if (JSC::jsDynamicCast&lt;JSFloat64Array*&gt;(value))
</del><ins>+    if (jsDynamicDowncast&lt;JSFloat64Array*&gt;(value))
</ins><span class="cx">         return JSValue::encode(JSFloat64Array::create(execState, bufferView-&gt;structure(), WTFMove(bufferClone), bufferView-&gt;byteOffset(), bufferView-&gt;length()));
</span><del>-    if (JSC::jsDynamicCast&lt;JSDataView*&gt;(value))
</del><ins>+    if (jsDynamicDowncast&lt;JSDataView*&gt;(value))
</ins><span class="cx">         return JSValue::encode(JSDataView::create(execState, bufferView-&gt;structure(), WTFMove(bufferClone), bufferView-&gt;byteOffset(), bufferView-&gt;length()));
</span><span class="cx"> 
</span><span class="cx">     ASSERT_NOT_REACHED();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -2474,13 +2474,7 @@
</span><span class="cx"> {
</span><span class="cx">     my $interface = shift;
</span><span class="cx">     my $interfaceName = $interface-&gt;type-&gt;name;
</span><del>-
-    return &quot;jsNodeCast&quot; if $interfaceName eq &quot;Node&quot;;
-    return &quot;jsElementCast&quot; if $interfaceName eq &quot;Element&quot;;
-    return &quot;jsDocumentCast&quot; if $interfaceName eq &quot;Document&quot;;
-    return &quot;jsEventTargetCast&quot; if $interfaceName eq &quot;EventTarget&quot;;
-    return &quot;jsEventCast&quot; if $interfaceName eq &quot;Event&quot;;
-    return &quot;jsDynamicCast&lt;JS$interfaceName*&gt;&quot;;
</del><ins>+    return &quot;jsDynamicDowncast&lt;JS$interfaceName*&gt;&quot;;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> sub GetIndexedGetterExpression
</span><span class="lines">@@ -3345,7 +3339,7 @@
</span><span class="cx">             push(@implContent, &quot;{\n&quot;);
</span><span class="cx">             push(@implContent, &quot;    VM&amp; vm = state-&gt;vm();\n&quot;);
</span><span class="cx">             push(@implContent, &quot;    auto throwScope = DECLARE_THROW_SCOPE(vm);\n&quot;);
</span><del>-            push(@implContent, &quot;    ${className}Prototype* domObject = jsDynamicCast&lt;${className}Prototype*&gt;(JSValue::decode(thisValue));\n&quot;);
</del><ins>+            push(@implContent, &quot;    ${className}Prototype* domObject = jsDynamicDowncast&lt;${className}Prototype*&gt;(JSValue::decode(thisValue));\n&quot;);
</ins><span class="cx">             push(@implContent, &quot;    if (UNLIKELY(!domObject))\n&quot;);
</span><span class="cx">             push(@implContent, &quot;        return throwVMTypeError(state, throwScope);\n&quot;);
</span><span class="cx"> 
</span><span class="lines">@@ -3367,7 +3361,7 @@
</span><span class="cx">         push(@implContent, &quot;    VM&amp; vm = state-&gt;vm();\n&quot;);
</span><span class="cx">         push(@implContent, &quot;    auto throwScope = DECLARE_THROW_SCOPE(vm);\n&quot;);
</span><span class="cx">         push(@implContent, &quot;    JSValue value = JSValue::decode(encodedValue);\n&quot;);
</span><del>-        push(@implContent, &quot;    ${className}Prototype* domObject = jsDynamicCast&lt;${className}Prototype*&gt;(JSValue::decode(thisValue));\n&quot;);
</del><ins>+        push(@implContent, &quot;    ${className}Prototype* domObject = jsDynamicDowncast&lt;${className}Prototype*&gt;(JSValue::decode(thisValue));\n&quot;);
</ins><span class="cx">         push(@implContent, &quot;    if (UNLIKELY(!domObject)) {\n&quot;);
</span><span class="cx">         push(@implContent, &quot;        throwVMTypeError(state, throwScope);\n&quot;);
</span><span class="cx">         push(@implContent, &quot;        return false;\n&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSInterfaceNamecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSInterfaceNamePrototype* domObject = jsDynamicCast&lt;JSInterfaceNamePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSInterfaceNamePrototype* domObject = jsDynamicDowncast&lt;JSInterfaceNamePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSInterfaceName::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSInterfaceNamePrototype* domObject = jsDynamicCast&lt;JSInterfaceNamePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSInterfaceNamePrototype* domObject = jsDynamicDowncast&lt;JSInterfaceNamePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -213,7 +213,7 @@
</span><span class="cx"> 
</span><span class="cx"> InterfaceName* JSInterfaceName::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSInterfaceName*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSInterfaceName*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</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 (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -143,12 +143,12 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestActiveDOMObject* BindingCaller&lt;JSTestActiveDOMObject&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestActiveDOMObject*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestActiveDOMObject* BindingCaller&lt;JSTestActiveDOMObject&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestActiveDOMObject*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestActiveDOMObjectExcitingAttrGetter(ExecState&amp;, JSTestActiveDOMObject&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -173,7 +173,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestActiveDOMObjectPrototype* domObject = jsDynamicCast&lt;JSTestActiveDOMObjectPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestActiveDOMObjectPrototype* domObject = jsDynamicDowncast&lt;JSTestActiveDOMObjectPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestActiveDOMObject::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -184,7 +184,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestActiveDOMObjectPrototype* domObject = jsDynamicCast&lt;JSTestActiveDOMObjectPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestActiveDOMObjectPrototype* domObject = jsDynamicDowncast&lt;JSTestActiveDOMObjectPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -295,7 +295,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestActiveDOMObject* JSTestActiveDOMObject::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestActiveDOMObject*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestActiveDOMObject*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -137,12 +137,12 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestCEReactions* BindingCaller&lt;JSTestCEReactions&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestCEReactions*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestCEReactions*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestCEReactions* BindingCaller&lt;JSTestCEReactions&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestCEReactions*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestCEReactions*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestCEReactionsAttributeWithCEReactionsGetter(ExecState&amp;, JSTestCEReactions&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -197,7 +197,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestCEReactionsPrototype* domObject = jsDynamicCast&lt;JSTestCEReactionsPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestCEReactionsPrototype* domObject = jsDynamicDowncast&lt;JSTestCEReactionsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestCEReactions::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -208,7 +208,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestCEReactionsPrototype* domObject = jsDynamicCast&lt;JSTestCEReactionsPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestCEReactionsPrototype* domObject = jsDynamicDowncast&lt;JSTestCEReactionsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -362,7 +362,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestCEReactions* JSTestCEReactions::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestCEReactions*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestCEReactions*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsStringifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -129,12 +129,12 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestCEReactionsStringifier* BindingCaller&lt;JSTestCEReactionsStringifier&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestCEReactionsStringifier*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestCEReactionsStringifier*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestCEReactionsStringifier* BindingCaller&lt;JSTestCEReactionsStringifier&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestCEReactionsStringifier*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestCEReactionsStringifier*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestCEReactionsStringifierValueGetter(ExecState&amp;, JSTestCEReactionsStringifier&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -157,7 +157,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestCEReactionsStringifierPrototype* domObject = jsDynamicCast&lt;JSTestCEReactionsStringifierPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestCEReactionsStringifierPrototype* domObject = jsDynamicDowncast&lt;JSTestCEReactionsStringifierPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestCEReactionsStringifier::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -168,7 +168,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestCEReactionsStringifierPrototype* domObject = jsDynamicCast&lt;JSTestCEReactionsStringifierPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestCEReactionsStringifierPrototype* domObject = jsDynamicDowncast&lt;JSTestCEReactionsStringifierPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -274,7 +274,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestCEReactionsStringifier* JSTestCEReactionsStringifier::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestCEReactionsStringifier*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestCEReactionsStringifier*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -125,7 +125,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestClassWithJSBuiltinConstructorPrototype* domObject = jsDynamicCast&lt;JSTestClassWithJSBuiltinConstructorPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestClassWithJSBuiltinConstructorPrototype* domObject = jsDynamicDowncast&lt;JSTestClassWithJSBuiltinConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestClassWithJSBuiltinConstructor::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -136,7 +136,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestClassWithJSBuiltinConstructorPrototype* domObject = jsDynamicCast&lt;JSTestClassWithJSBuiltinConstructorPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestClassWithJSBuiltinConstructorPrototype* domObject = jsDynamicDowncast&lt;JSTestClassWithJSBuiltinConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -211,7 +211,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestClassWithJSBuiltinConstructor* JSTestClassWithJSBuiltinConstructor::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestClassWithJSBuiltinConstructor*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestClassWithJSBuiltinConstructor*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -125,7 +125,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicCast&lt;JSTestCustomConstructorWithNoInterfaceObjectPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicDowncast&lt;JSTestCustomConstructorWithNoInterfaceObjectPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     JSValue constructor = JSTestCustomConstructorWithNoInterfaceObjectConstructor::create(state-&gt;vm(), JSTestCustomConstructorWithNoInterfaceObjectConstructor::createStructure(state-&gt;vm(), *domObject-&gt;globalObject(), domObject-&gt;globalObject()-&gt;objectPrototype()), *jsCast&lt;JSDOMGlobalObject*&gt;(domObject-&gt;globalObject()));
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicCast&lt;JSTestCustomConstructorWithNoInterfaceObjectPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicDowncast&lt;JSTestCustomConstructorWithNoInterfaceObjectPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -202,7 +202,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestCustomConstructorWithNoInterfaceObject* JSTestCustomConstructorWithNoInterfaceObject::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestCustomConstructorWithNoInterfaceObject*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestCustomConstructorWithNoInterfaceObject*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</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 (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestCustomNamedGetter* BindingCaller&lt;JSTestCustomNamedGetter&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestCustomNamedGetter*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestCustomNamedGetter*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> EncodedJSValue jsTestCustomNamedGetterConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="lines">@@ -168,7 +168,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestCustomNamedGetterPrototype* domObject = jsDynamicCast&lt;JSTestCustomNamedGetterPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestCustomNamedGetterPrototype* domObject = jsDynamicDowncast&lt;JSTestCustomNamedGetterPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestCustomNamedGetter::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -179,7 +179,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestCustomNamedGetterPrototype* domObject = jsDynamicCast&lt;JSTestCustomNamedGetterPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestCustomNamedGetterPrototype* domObject = jsDynamicDowncast&lt;JSTestCustomNamedGetterPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -267,7 +267,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestCustomNamedGetter* JSTestCustomNamedGetter::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestCustomNamedGetter*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestCustomNamedGetter*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestDOMJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -182,7 +182,7 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestDOMJIT* BindingCaller&lt;JSTestDOMJIT&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestDOMJIT*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestDOMJIT*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestDOMJITAnyAttrGetter(ExecState&amp;, JSTestDOMJIT&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -1134,7 +1134,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestDOMJITPrototype* domObject = jsDynamicCast&lt;JSTestDOMJITPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestDOMJITPrototype* domObject = jsDynamicDowncast&lt;JSTestDOMJITPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestDOMJIT::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -1145,7 +1145,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestDOMJITPrototype* domObject = jsDynamicCast&lt;JSTestDOMJITPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestDOMJITPrototype* domObject = jsDynamicDowncast&lt;JSTestDOMJITPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -188,7 +188,7 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestEventConstructor* BindingCaller&lt;JSTestEventConstructor&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestEventConstructor*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestEventConstructor*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestEventConstructorAttr1Getter(ExecState&amp;, JSTestEventConstructor&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -246,7 +246,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestEventConstructorPrototype* domObject = jsDynamicCast&lt;JSTestEventConstructorPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestEventConstructorPrototype* domObject = jsDynamicDowncast&lt;JSTestEventConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestEventConstructor::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -257,7 +257,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestEventConstructorPrototype* domObject = jsDynamicCast&lt;JSTestEventConstructorPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestEventConstructorPrototype* domObject = jsDynamicDowncast&lt;JSTestEventConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -159,7 +159,7 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestEventTarget* BindingCaller&lt;JSTestEventTarget&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestEventTarget*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestEventTarget*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> EncodedJSValue jsTestEventTargetConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="lines">@@ -166,7 +166,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestEventTargetPrototype* domObject = jsDynamicCast&lt;JSTestEventTargetPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestEventTargetPrototype* domObject = jsDynamicDowncast&lt;JSTestEventTargetPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestEventTarget::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestEventTargetPrototype* domObject = jsDynamicCast&lt;JSTestEventTargetPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestEventTargetPrototype* domObject = jsDynamicDowncast&lt;JSTestEventTargetPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -272,7 +272,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestEventTarget* JSTestEventTarget::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestEventTarget*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestEventTarget*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</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 (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -133,7 +133,7 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestException* BindingCaller&lt;JSTestException&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestException*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestException*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestExceptionNameGetter(ExecState&amp;, JSTestException&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestExceptionPrototype* domObject = jsDynamicCast&lt;JSTestExceptionPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestExceptionPrototype* domObject = jsDynamicDowncast&lt;JSTestExceptionPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestException::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -167,7 +167,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestExceptionPrototype* domObject = jsDynamicCast&lt;JSTestExceptionPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestExceptionPrototype* domObject = jsDynamicDowncast&lt;JSTestExceptionPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -235,7 +235,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestException* JSTestException::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestException*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestException*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</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 (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestGenerateIsReachablePrototype* domObject = jsDynamicCast&lt;JSTestGenerateIsReachablePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestGenerateIsReachablePrototype* domObject = jsDynamicDowncast&lt;JSTestGenerateIsReachablePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestGenerateIsReachable::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestGenerateIsReachablePrototype* domObject = jsDynamicCast&lt;JSTestGenerateIsReachablePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestGenerateIsReachablePrototype* domObject = jsDynamicDowncast&lt;JSTestGenerateIsReachablePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -198,7 +198,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestGenerateIsReachable* JSTestGenerateIsReachable::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestGenerateIsReachable*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestGenerateIsReachable*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -177,12 +177,12 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestGlobalObject* BindingCaller&lt;JSTestGlobalObject&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestGlobalObject*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestGlobalObject*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestGlobalObject* BindingCaller&lt;JSTestGlobalObject&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestGlobalObject*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestGlobalObject*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestGlobalObjectRegularAttributeGetter(ExecState&amp;, JSTestGlobalObject&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -259,7 +259,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestGlobalObjectPrototype* domObject = jsDynamicCast&lt;JSTestGlobalObjectPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestGlobalObjectPrototype* domObject = jsDynamicDowncast&lt;JSTestGlobalObjectPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestGlobalObject::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -270,7 +270,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestGlobalObjectPrototype* domObject = jsDynamicCast&lt;JSTestGlobalObjectPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestGlobalObjectPrototype* domObject = jsDynamicDowncast&lt;JSTestGlobalObjectPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -524,7 +524,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestGlobalObject* JSTestGlobalObject::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestGlobalObject*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestGlobalObject*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</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 (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -399,12 +399,12 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestInterface* BindingCaller&lt;JSTestInterface&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestInterface*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestInterface* BindingCaller&lt;JSTestInterface&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestInterface*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestInterface*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="lines">@@ -631,7 +631,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestInterfacePrototype* domObject = jsDynamicCast&lt;JSTestInterfacePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestInterfacePrototype* domObject = jsDynamicDowncast&lt;JSTestInterfacePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestInterface::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -642,7 +642,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestInterfacePrototype* domObject = jsDynamicCast&lt;JSTestInterfacePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestInterfacePrototype* domObject = jsDynamicDowncast&lt;JSTestInterfacePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -1029,7 +1029,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestInterface* JSTestInterface::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestInterface*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestInterface*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceLeadingUnderscorecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -120,7 +120,7 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestInterfaceLeadingUnderscore* BindingCaller&lt;JSTestInterfaceLeadingUnderscore&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestInterfaceLeadingUnderscore*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestInterfaceLeadingUnderscore*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestInterfaceLeadingUnderscoreReadonlyGetter(ExecState&amp;, JSTestInterfaceLeadingUnderscore&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -143,7 +143,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestInterfaceLeadingUnderscorePrototype* domObject = jsDynamicCast&lt;JSTestInterfaceLeadingUnderscorePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestInterfaceLeadingUnderscorePrototype* domObject = jsDynamicDowncast&lt;JSTestInterfaceLeadingUnderscorePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestInterfaceLeadingUnderscore::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -154,7 +154,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestInterfaceLeadingUnderscorePrototype* domObject = jsDynamicCast&lt;JSTestInterfaceLeadingUnderscorePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestInterfaceLeadingUnderscorePrototype* domObject = jsDynamicDowncast&lt;JSTestInterfaceLeadingUnderscorePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -201,7 +201,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestInterfaceLeadingUnderscore* JSTestInterfaceLeadingUnderscore::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestInterfaceLeadingUnderscore*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestInterfaceLeadingUnderscore*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestIterablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestIterable* BindingCaller&lt;JSTestIterable&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestIterable*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestIterable*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> EncodedJSValue jsTestIterableConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="lines">@@ -138,7 +138,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestIterablePrototype* domObject = jsDynamicCast&lt;JSTestIterablePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestIterablePrototype* domObject = jsDynamicDowncast&lt;JSTestIterablePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestIterable::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -149,7 +149,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestIterablePrototype* domObject = jsDynamicCast&lt;JSTestIterablePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestIterablePrototype* domObject = jsDynamicDowncast&lt;JSTestIterablePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -282,7 +282,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestIterable* JSTestIterable::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestIterable*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestIterable*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -134,12 +134,12 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestJSBuiltinConstructor* BindingCaller&lt;JSTestJSBuiltinConstructor&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestJSBuiltinConstructor*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestJSBuiltinConstructor*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestJSBuiltinConstructor* BindingCaller&lt;JSTestJSBuiltinConstructor&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestJSBuiltinConstructor*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestJSBuiltinConstructor*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestJSBuiltinConstructorTestAttributeCustomGetter(ExecState&amp;, JSTestJSBuiltinConstructor&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicCast&lt;JSTestJSBuiltinConstructorPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicDowncast&lt;JSTestJSBuiltinConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestJSBuiltinConstructor::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -185,7 +185,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicCast&lt;JSTestJSBuiltinConstructorPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicDowncast&lt;JSTestJSBuiltinConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -125,7 +125,7 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestMediaQueryListListener* BindingCaller&lt;JSTestMediaQueryListListener&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestMediaQueryListListener*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestMediaQueryListListener*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> EncodedJSValue jsTestMediaQueryListListenerConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="lines">@@ -132,7 +132,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestMediaQueryListListenerPrototype* domObject = jsDynamicCast&lt;JSTestMediaQueryListListenerPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestMediaQueryListListenerPrototype* domObject = jsDynamicDowncast&lt;JSTestMediaQueryListListenerPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestMediaQueryListListener::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -143,7 +143,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestMediaQueryListListenerPrototype* domObject = jsDynamicCast&lt;JSTestMediaQueryListListenerPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestMediaQueryListListenerPrototype* domObject = jsDynamicDowncast&lt;JSTestMediaQueryListListenerPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -232,7 +232,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestMediaQueryListListener* JSTestMediaQueryListListener::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestMediaQueryListListener*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestMediaQueryListListener*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</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 (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -162,7 +162,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestNamedConstructorPrototype* domObject = jsDynamicCast&lt;JSTestNamedConstructorPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestNamedConstructorPrototype* domObject = jsDynamicDowncast&lt;JSTestNamedConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestNamedConstructor::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -173,7 +173,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestNamedConstructorPrototype* domObject = jsDynamicCast&lt;JSTestNamedConstructorPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestNamedConstructorPrototype* domObject = jsDynamicDowncast&lt;JSTestNamedConstructorPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -248,7 +248,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestNamedConstructor* JSTestNamedConstructor::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestNamedConstructor*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestNamedConstructor*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</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 (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -168,12 +168,12 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestNode* BindingCaller&lt;JSTestNode&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestNode*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestNode*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestNode* BindingCaller&lt;JSTestNode&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestNode*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestNode*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestNodeNameGetter(ExecState&amp;, JSTestNode&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -196,7 +196,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestNodePrototype* domObject = jsDynamicCast&lt;JSTestNodePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestNodePrototype* domObject = jsDynamicDowncast&lt;JSTestNodePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestNode::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -207,7 +207,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestNodePrototype* domObject = jsDynamicCast&lt;JSTestNodePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestNodePrototype* domObject = jsDynamicDowncast&lt;JSTestNodePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministiccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -144,12 +144,12 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestNondeterministic* BindingCaller&lt;JSTestNondeterministic&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestNondeterministic*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestNondeterministic*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestNondeterministic* BindingCaller&lt;JSTestNondeterministic&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestNondeterministic*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestNondeterministic*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestNondeterministicNondeterministicReadonlyAttrGetter(ExecState&amp;, JSTestNondeterministic&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -340,7 +340,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestNondeterministicPrototype* domObject = jsDynamicCast&lt;JSTestNondeterministicPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestNondeterministicPrototype* domObject = jsDynamicDowncast&lt;JSTestNondeterministicPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestNondeterministic::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -351,7 +351,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestNondeterministicPrototype* domObject = jsDynamicCast&lt;JSTestNondeterministicPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestNondeterministicPrototype* domObject = jsDynamicDowncast&lt;JSTestNondeterministicPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -532,7 +532,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestNondeterministic* JSTestNondeterministic::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestNondeterministic*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestNondeterministic*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</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 (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -1807,12 +1807,12 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestObj* BindingCaller&lt;JSTestObj&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestObj*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestObj* BindingCaller&lt;JSTestObj&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestObj*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestObj*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestObjReadOnlyLongAttrGetter(ExecState&amp;, JSTestObj&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -3300,7 +3300,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestObjPrototype* domObject = jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestObjPrototype* domObject = jsDynamicDowncast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestObj::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -3311,7 +3311,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestObjPrototype* domObject = jsDynamicCast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestObjPrototype* domObject = jsDynamicDowncast&lt;JSTestObjPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -8352,7 +8352,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestObj* JSTestObj::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestObj*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestObj*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</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 (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -225,7 +225,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestOverloadedConstructorsPrototype* domObject = jsDynamicCast&lt;JSTestOverloadedConstructorsPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestOverloadedConstructorsPrototype* domObject = jsDynamicDowncast&lt;JSTestOverloadedConstructorsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestOverloadedConstructors::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -236,7 +236,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestOverloadedConstructorsPrototype* domObject = jsDynamicCast&lt;JSTestOverloadedConstructorsPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestOverloadedConstructorsPrototype* domObject = jsDynamicDowncast&lt;JSTestOverloadedConstructorsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -304,7 +304,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestOverloadedConstructors* JSTestOverloadedConstructors::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestOverloadedConstructors*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestOverloadedConstructors*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsWithSequencecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -171,7 +171,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestOverloadedConstructorsWithSequencePrototype* domObject = jsDynamicCast&lt;JSTestOverloadedConstructorsWithSequencePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestOverloadedConstructorsWithSequencePrototype* domObject = jsDynamicDowncast&lt;JSTestOverloadedConstructorsWithSequencePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestOverloadedConstructorsWithSequence::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -182,7 +182,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestOverloadedConstructorsWithSequencePrototype* domObject = jsDynamicCast&lt;JSTestOverloadedConstructorsWithSequencePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestOverloadedConstructorsWithSequencePrototype* domObject = jsDynamicDowncast&lt;JSTestOverloadedConstructorsWithSequencePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -250,7 +250,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestOverloadedConstructorsWithSequence* JSTestOverloadedConstructorsWithSequence::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestOverloadedConstructorsWithSequence*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestOverloadedConstructorsWithSequence*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -158,7 +158,7 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestOverrideBuiltins* BindingCaller&lt;JSTestOverrideBuiltins&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestOverrideBuiltins*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestOverrideBuiltins*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> EncodedJSValue jsTestOverrideBuiltinsConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="lines">@@ -165,7 +165,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestOverrideBuiltinsPrototype* domObject = jsDynamicCast&lt;JSTestOverrideBuiltinsPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestOverrideBuiltinsPrototype* domObject = jsDynamicDowncast&lt;JSTestOverrideBuiltinsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestOverrideBuiltins::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -176,7 +176,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestOverrideBuiltinsPrototype* domObject = jsDynamicCast&lt;JSTestOverrideBuiltinsPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestOverrideBuiltinsPrototype* domObject = jsDynamicDowncast&lt;JSTestOverrideBuiltinsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -275,7 +275,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestOverrideBuiltins* JSTestOverrideBuiltins::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestOverrideBuiltins*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestOverrideBuiltins*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -140,12 +140,12 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestSerialization* BindingCaller&lt;JSTestSerialization&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestSerialization*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestSerialization*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestSerialization* BindingCaller&lt;JSTestSerialization&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestSerialization*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestSerialization*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestSerializationFirstStringAttributeGetter(ExecState&amp;, JSTestSerialization&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -232,7 +232,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestSerializationPrototype* domObject = jsDynamicCast&lt;JSTestSerializationPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestSerializationPrototype* domObject = jsDynamicDowncast&lt;JSTestSerializationPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestSerialization::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -243,7 +243,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestSerializationPrototype* domObject = jsDynamicCast&lt;JSTestSerializationPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestSerializationPrototype* domObject = jsDynamicDowncast&lt;JSTestSerializationPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -438,7 +438,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestSerialization* JSTestSerialization::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestSerialization*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestSerialization*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</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 (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -136,7 +136,7 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestSerializedScriptValueInterface* BindingCaller&lt;JSTestSerializedScriptValueInterface&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestSerializedScriptValueInterface*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestSerializedScriptValueInterfaceValueGetter(ExecState&amp;, JSTestSerializedScriptValueInterface&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -229,7 +229,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestSerializedScriptValueInterfacePrototype* domObject = jsDynamicCast&lt;JSTestSerializedScriptValueInterfacePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestSerializedScriptValueInterfacePrototype* domObject = jsDynamicDowncast&lt;JSTestSerializedScriptValueInterfacePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestSerializedScriptValueInterface::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -240,7 +240,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestSerializedScriptValueInterfacePrototype* domObject = jsDynamicCast&lt;JSTestSerializedScriptValueInterfacePrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestSerializedScriptValueInterfacePrototype* domObject = jsDynamicDowncast&lt;JSTestSerializedScriptValueInterfacePrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -355,7 +355,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestSerializedScriptValueInterface* JSTestSerializedScriptValueInterface::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestSerializedScriptValueInterface*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestSerializedScriptValueInterface*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</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 (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -215,12 +215,12 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestTypedefs* BindingCaller&lt;JSTestTypedefs&gt;::castForAttribute(ExecState&amp;, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</del><ins>+    return jsDynamicDowncast&lt;JSTestTypedefs*&gt;(JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;&gt; inline JSTestTypedefs* BindingCaller&lt;JSTestTypedefs&gt;::castForOperation(ExecState&amp; state)
</span><span class="cx"> {
</span><del>-    return jsDynamicCast&lt;JSTestTypedefs*&gt;(state.thisValue());
</del><ins>+    return jsDynamicDowncast&lt;JSTestTypedefs*&gt;(state.thisValue());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline JSValue jsTestTypedefsUnsignedLongLongAttrGetter(ExecState&amp;, JSTestTypedefs&amp;, ThrowScope&amp; throwScope);
</span><span class="lines">@@ -341,7 +341,7 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>-    JSTestTypedefsPrototype* domObject = jsDynamicCast&lt;JSTestTypedefsPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestTypedefsPrototype* domObject = jsDynamicDowncast&lt;JSTestTypedefsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject))
</span><span class="cx">         return throwVMTypeError(state, throwScope);
</span><span class="cx">     return JSValue::encode(JSTestTypedefs::getConstructor(state-&gt;vm(), domObject-&gt;globalObject()));
</span><span class="lines">@@ -352,7 +352,7 @@
</span><span class="cx">     VM&amp; vm = state-&gt;vm();
</span><span class="cx">     auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><del>-    JSTestTypedefsPrototype* domObject = jsDynamicCast&lt;JSTestTypedefsPrototype*&gt;(JSValue::decode(thisValue));
</del><ins>+    JSTestTypedefsPrototype* domObject = jsDynamicDowncast&lt;JSTestTypedefsPrototype*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (UNLIKELY(!domObject)) {
</span><span class="cx">         throwVMTypeError(state, throwScope);
</span><span class="cx">         return false;
</span><span class="lines">@@ -806,7 +806,7 @@
</span><span class="cx"> 
</span><span class="cx"> TestTypedefs* JSTestTypedefs::toWrapped(JSC::JSValue value)
</span><span class="cx"> {
</span><del>-    if (auto* wrapper = jsDynamicCast&lt;JSTestTypedefs*&gt;(value))
</del><ins>+    if (auto* wrapper = jsDynamicDowncast&lt;JSTestTypedefs*&gt;(value))
</ins><span class="cx">         return &amp;wrapper-&gt;wrapped();
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeobjcWebScriptObjectmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/objc/WebScriptObject.mm (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/objc/WebScriptObject.mm        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bridge/objc/WebScriptObject.mm        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -399,7 +399,7 @@
</span><span class="cx">     auto scope = DECLARE_CATCH_SCOPE(vm);
</span><span class="cx">     ExecState* exec = globalObject-&gt;globalExec();
</span><span class="cx"> 
</span><del>-    JSObject* object = JSC::jsDynamicCast&lt;JSObject*&gt;([self _imp]);
</del><ins>+    JSObject* object = jsDynamicDowncast&lt;JSObject*&gt;([self _imp]);
</ins><span class="cx">     PutPropertySlot slot(object);
</span><span class="cx">     object-&gt;methodTable()-&gt;put(object, exec, Identifier::fromString(exec, String(key)), convertObjcValueToValue(exec, &amp;value, ObjcObjectType, [self _rootObject]), slot);
</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 (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_array.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bridge/runtime_array.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><del>-    RuntimeArray* thisObject = jsDynamicCast&lt;RuntimeArray*&gt;(JSValue::decode(thisValue));
</del><ins>+    RuntimeArray* thisObject = jsDynamicDowncast&lt;RuntimeArray*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!thisObject)
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     return JSValue::encode(jsNumber(thisObject-&gt;getLength()));
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_methodcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_method.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_method.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/bridge/runtime_method.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><del>-    RuntimeMethod* thisObject = jsDynamicCast&lt;RuntimeMethod*&gt;(JSValue::decode(thisValue));
</del><ins>+    RuntimeMethod* thisObject = jsDynamicDowncast&lt;RuntimeMethod*&gt;(JSValue::decode(thisValue));
</ins><span class="cx">     if (!thisObject)
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     return JSValue::encode(jsNumber(thisObject-&gt;m_method-&gt;numParameters()));
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -3818,7 +3818,7 @@
</span><span class="cx">     auto mediaJSWrapper = toJS(&amp;exec, &amp;globalObject, media);
</span><span class="cx">     
</span><span class="cx">     // Retrieve the controller through the JS object graph
</span><del>-    JSC::JSObject* mediaJSWrapperObject = JSC::jsDynamicCast&lt;JSC::JSObject*&gt;(mediaJSWrapper);
</del><ins>+    JSC::JSObject* mediaJSWrapperObject = jsDynamicDowncast&lt;JSC::JSObject*&gt;(mediaJSWrapper);
</ins><span class="cx">     if (!mediaJSWrapperObject)
</span><span class="cx">         return JSC::jsNull();
</span><span class="cx">     
</span><span class="lines">@@ -3826,7 +3826,7 @@
</span><span class="cx">     JSC::JSValue controlsHostJSWrapper = mediaJSWrapperObject-&gt;get(&amp;exec, controlsHost);
</span><span class="cx">     RETURN_IF_EXCEPTION(scope, JSC::JSValue());
</span><span class="cx"> 
</span><del>-    JSC::JSObject* controlsHostJSWrapperObject = JSC::jsDynamicCast&lt;JSC::JSObject*&gt;(controlsHostJSWrapper);
</del><ins>+    JSC::JSObject* controlsHostJSWrapperObject = jsDynamicDowncast&lt;JSC::JSObject*&gt;(controlsHostJSWrapper);
</ins><span class="cx">     if (!controlsHostJSWrapperObject)
</span><span class="cx">         return JSC::jsNull();
</span><span class="cx"> 
</span><span class="lines">@@ -3874,7 +3874,7 @@
</span><span class="cx">     JSC::ExecState* exec = globalObject-&gt;globalExec();
</span><span class="cx"> 
</span><span class="cx">     JSC::JSValue controllerValue = controllerJSValue(*exec, *globalObject, *this);
</span><del>-    JSC::JSObject* controllerObject = JSC::jsDynamicCast&lt;JSC::JSObject*&gt;(controllerValue);
</del><ins>+    JSC::JSObject* controllerObject = jsDynamicDowncast&lt;JSC::JSObject*&gt;(controllerValue);
</ins><span class="cx">     if (!controllerObject)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -3885,7 +3885,7 @@
</span><span class="cx">     // Return value:
</span><span class="cx">     //     None
</span><span class="cx">     JSC::JSValue methodValue = controllerObject-&gt;get(exec, JSC::Identifier::fromString(exec, &quot;updateCaptionContainer&quot;));
</span><del>-    JSC::JSObject* methodObject = JSC::jsDynamicCast&lt;JSC::JSObject*&gt;(methodValue);
</del><ins>+    JSC::JSObject* methodObject = jsDynamicDowncast&lt;JSC::JSObject*&gt;(methodValue);
</ins><span class="cx">     if (!methodObject)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -6577,7 +6577,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSC::JSValue controllerValue = JSC::call(exec, function, callType, callData, globalObject, argList);
</span><span class="cx">     scope.clearException();
</span><del>-    JSC::JSObject* controllerObject = JSC::jsDynamicCast&lt;JSC::JSObject*&gt;(controllerValue);
</del><ins>+    JSC::JSObject* controllerObject = jsDynamicDowncast&lt;JSC::JSObject*&gt;(controllerValue);
</ins><span class="cx">     if (!controllerObject)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -6590,7 +6590,7 @@
</span><span class="cx"> 
</span><span class="cx">     mediaJSWrapperObject-&gt;putDirect(exec-&gt;vm(), controlsHost, mediaControlsHostJSWrapper, JSC::DontDelete | JSC::DontEnum | JSC::ReadOnly);
</span><span class="cx"> 
</span><del>-    JSC::JSObject* mediaControlsHostJSWrapperObject = JSC::jsDynamicCast&lt;JSC::JSObject*&gt;(mediaControlsHostJSWrapper);
</del><ins>+    JSC::JSObject* mediaControlsHostJSWrapperObject = jsDynamicDowncast&lt;JSC::JSObject*&gt;(mediaControlsHostJSWrapper);
</ins><span class="cx">     if (!mediaControlsHostJSWrapperObject)
</span><span class="cx">         return;
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -1499,7 +1499,7 @@
</span><span class="cx">         handler = scriptListener-&gt;jsFunction(&amp;node-&gt;document());
</span><span class="cx">         if (handler &amp;&amp; state) {
</span><span class="cx">             body = handler-&gt;toString(state)-&gt;value(state);
</span><del>-            if (auto function = JSC::jsDynamicCast&lt;JSC::JSFunction*&gt;(handler)) {
</del><ins>+            if (auto function = jsDynamicDowncast&lt;JSC::JSFunction*&gt;(handler)) {
</ins><span class="cx">                 if (!function-&gt;isHostOrBuiltinFunction()) {
</span><span class="cx">                     if (auto executable = function-&gt;jsExecutable()) {
</span><span class="cx">                         lineNumber = executable-&gt;firstLine() - 1;
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebKit2/ChangeLog        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2016-10-30  Yusuke Suzuki  &lt;utatane.tea@gmail.com&gt;
+
+        [DOM] Introduce WebCore::jsDynamicDowncast
+        https://bugs.webkit.org/show_bug.cgi?id=164137
+
+        Reviewed by Darin Adler.
+
+        * WebProcess/Automation/WebAutomationSessionProxy.cpp:
+        (WebKit::WebAutomationSessionProxy::elementForNodeHandle):
+
</ins><span class="cx"> 2016-10-29  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Convert more of DOM from ExceptionCode to Exception
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessAutomationWebAutomationSessionProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp (208123 => 208124)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp        2016-10-30 09:14:37 UTC (rev 208123)
+++ trunk/Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp        2016-10-30 10:03:20 UTC (rev 208124)
</span><span class="lines">@@ -205,7 +205,7 @@
</span><span class="cx">     if (!element)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><del>-    auto elementWrapper = JSC::jsDynamicCast&lt;WebCore::JSElement*&gt;(toJS(element));
</del><ins>+    auto elementWrapper = WebCore::jsDynamicDowncast&lt;WebCore::JSElement*&gt;(toJS(element));
</ins><span class="cx">     if (!elementWrapper)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>