<!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>[185373] trunk/Source/WebCore</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/185373">185373</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2015-06-09 12:55:02 -0700 (Tue, 09 Jun 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>JavaScript bindings are unnecessarily checking for impossible empty JSValue arguments
https://bugs.webkit.org/show_bug.cgi?id=145811

Reviewed by Antti Koivisto.

At some point, someone who didn't understand JSValue very well added checks for
isEmpty (and the function isEmpty itself) in JavaScript bindings. But the engine
never would pass an empty JSValue to a binding; that's used only inside the
engine itself. I think this was done by some Google V8 experts a while back, so
it's not entirely surprising they didn't understand this. But we don't want to
keep all that unneeded code.

* bindings/js/JSAudioTrackCustom.cpp:
(WebCore::JSAudioTrack::setKind): Removed the isEmpty clause here. I presume this
was copied and pasted from script-generated bindings. While I was at it, I used a
slightly more efficient code path that avoids doing a ref/deref on the string by
using auto&amp;. That's trickier to do correctly for functions with more than one
argument, so I didn't do it in the bindings generator yet.
(WebCore::JSAudioTrack::setLanguage): Ditto.
* bindings/js/JSTextTrackCustom.cpp:
(WebCore::JSTextTrack::setKind): Ditto.
(WebCore::JSTextTrack::setLanguage): Ditto.
* bindings/js/JSVideoTrackCustom.cpp:
(WebCore::JSVideoTrack::setKind): Ditto.
(WebCore::JSVideoTrack::setLanguage): Ditto.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation): Use &quot;=&quot; syntax instead of constructor style syntax for
the argument processing. I think this is more readable.
(GenerateParametersCheck): For the enum code path, did the more efficient auto&amp;
idiom to avoid ref/deref on a string. For the toExistingAtomicString path,
restructured so we don't have to check the flag indicating that something is atomic.
Later we could also avoid the ref/deref; added a FIXME about that.
(GetNativeType): Use String, not const String, for local variables. Sure, the
string is const, but so is every other local variable type we use! No need to be
wordy about it.
(JSValueToNative): Removed the uneeded calls to isEmpty. Since the call sites no
longer use construction syntax, used initializer syntax style for a couple classes
that are constructed with multiple arguments.

* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: Updated.
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp: Ditto.
* bindings/scripts/test/JS/JSTestEventTarget.cpp: Ditto.
* bindings/scripts/test/JS/JSTestInterface.cpp: Ditto.
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp: Ditto.
* bindings/scripts/test/JS/JSTestNondeterministic.cpp: Ditto.
* bindings/scripts/test/JS/JSTestObj.cpp: Ditto.
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: Ditto.
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: Ditto.
* bindings/scripts/test/JS/JSTestTypedefs.cpp: Ditto.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSAudioTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSAudioTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSTextTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSTextTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSVideoTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSVideoTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.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="#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>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/ChangeLog        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -1,3 +1,56 @@
</span><ins>+2015-06-09  Darin Adler  &lt;darin@apple.com&gt;
+
+        JavaScript bindings are unnecessarily checking for impossible empty JSValue arguments
+        https://bugs.webkit.org/show_bug.cgi?id=145811
+
+        Reviewed by Antti Koivisto.
+
+        At some point, someone who didn't understand JSValue very well added checks for
+        isEmpty (and the function isEmpty itself) in JavaScript bindings. But the engine
+        never would pass an empty JSValue to a binding; that's used only inside the
+        engine itself. I think this was done by some Google V8 experts a while back, so
+        it's not entirely surprising they didn't understand this. But we don't want to
+        keep all that unneeded code.
+
+        * bindings/js/JSAudioTrackCustom.cpp:
+        (WebCore::JSAudioTrack::setKind): Removed the isEmpty clause here. I presume this
+        was copied and pasted from script-generated bindings. While I was at it, I used a
+        slightly more efficient code path that avoids doing a ref/deref on the string by
+        using auto&amp;. That's trickier to do correctly for functions with more than one
+        argument, so I didn't do it in the bindings generator yet.
+        (WebCore::JSAudioTrack::setLanguage): Ditto.
+        * bindings/js/JSTextTrackCustom.cpp:
+        (WebCore::JSTextTrack::setKind): Ditto.
+        (WebCore::JSTextTrack::setLanguage): Ditto.
+        * bindings/js/JSVideoTrackCustom.cpp:
+        (WebCore::JSVideoTrack::setKind): Ditto.
+        (WebCore::JSVideoTrack::setLanguage): Ditto.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateImplementation): Use &quot;=&quot; syntax instead of constructor style syntax for
+        the argument processing. I think this is more readable.
+        (GenerateParametersCheck): For the enum code path, did the more efficient auto&amp;
+        idiom to avoid ref/deref on a string. For the toExistingAtomicString path,
+        restructured so we don't have to check the flag indicating that something is atomic.
+        Later we could also avoid the ref/deref; added a FIXME about that.
+        (GetNativeType): Use String, not const String, for local variables. Sure, the
+        string is const, but so is every other local variable type we use! No need to be
+        wordy about it.
+        (JSValueToNative): Removed the uneeded calls to isEmpty. Since the call sites no
+        longer use construction syntax, used initializer syntax style for a couple classes
+        that are constructed with multiple arguments.
+
+        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: Updated.
+        * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp: Ditto.
+        * bindings/scripts/test/JS/JSTestEventTarget.cpp: Ditto.
+        * bindings/scripts/test/JS/JSTestInterface.cpp: Ditto.
+        * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: Ditto.
+        * bindings/scripts/test/JS/JSTestNondeterministic.cpp: Ditto.
+        * bindings/scripts/test/JS/JSTestObj.cpp: Ditto.
+        * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: Ditto.
+        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: Ditto.
+        * bindings/scripts/test/JS/JSTestTypedefs.cpp: Ditto.
+
</ins><span class="cx"> 2015-06-09  Csaba Osztrogonác  &lt;ossy@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix unused private field warning in GraphicsLayerUpdater.h
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSAudioTrackCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSAudioTrackCustom.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSAudioTrackCustom.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/js/JSAudioTrackCustom.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -43,10 +43,10 @@
</span><span class="cx"> void JSAudioTrack::setKind(ExecState* exec, JSValue value)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><del>-    const String&amp; nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    auto&amp; string = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (exec-&gt;hadException())
</span><span class="cx">         return;
</span><del>-    impl().setKind(nativeValue);
</del><ins>+    impl().setKind(string);
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     UNUSED_PARAM(value);
</span><span class="lines">@@ -56,10 +56,10 @@
</span><span class="cx"> void JSAudioTrack::setLanguage(ExecState* exec, JSValue value)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><del>-    const String&amp; nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    auto&amp; string = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (exec-&gt;hadException())
</span><span class="cx">         return;
</span><del>-    impl().setLanguage(nativeValue);
</del><ins>+    impl().setLanguage(string);
</ins><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(exec);
</span><span class="cx">     UNUSED_PARAM(value);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSTextTrackCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSTextTrackCustom.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSTextTrackCustom.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/js/JSTextTrackCustom.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -43,29 +43,27 @@
</span><span class="cx"> 
</span><span class="cx"> void JSTextTrack::setKind(ExecState* exec, JSValue value)
</span><span class="cx"> {
</span><del>-    UNUSED_PARAM(exec);
</del><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><del>-    const String&amp; nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    auto&amp; string = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (exec-&gt;hadException())
</span><span class="cx">         return;
</span><del>-    impl().setKind(nativeValue);
</del><ins>+    impl().setKind(string);
</ins><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(exec);
</ins><span class="cx">     UNUSED_PARAM(value);
</span><del>-    return;
</del><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSTextTrack::setLanguage(ExecState* exec, JSValue value)
</span><span class="cx"> {
</span><del>-    UNUSED_PARAM(exec);
</del><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><del>-    const String&amp; nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    auto&amp; string = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (exec-&gt;hadException())
</span><span class="cx">         return;
</span><del>-    impl().setLanguage(nativeValue);
</del><ins>+    impl().setLanguage(string);
</ins><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(exec);
</ins><span class="cx">     UNUSED_PARAM(value);
</span><del>-    return;
</del><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSVideoTrackCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSVideoTrackCustom.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSVideoTrackCustom.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/js/JSVideoTrackCustom.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -42,29 +42,27 @@
</span><span class="cx"> 
</span><span class="cx"> void JSVideoTrack::setKind(ExecState* exec, JSValue value)
</span><span class="cx"> {
</span><del>-    UNUSED_PARAM(exec);
</del><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><del>-    const String&amp; nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    auto&amp; string = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (exec-&gt;hadException())
</span><span class="cx">         return;
</span><del>-    impl().setKind(nativeValue);
</del><ins>+    impl().setKind(string);
</ins><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(exec);
</ins><span class="cx">     UNUSED_PARAM(value);
</span><del>-    return;
</del><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSVideoTrack::setLanguage(ExecState* exec, JSValue value)
</span><span class="cx"> {
</span><del>-    UNUSED_PARAM(exec);
</del><span class="cx"> #if ENABLE(MEDIA_SOURCE)
</span><del>-    const String&amp; nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    auto&amp; string = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (exec-&gt;hadException())
</span><span class="cx">         return;
</span><del>-    impl().setLanguage(nativeValue);
</del><ins>+    impl().setLanguage(string);
</ins><span class="cx"> #else
</span><ins>+    UNUSED_PARAM(exec);
</ins><span class="cx">     UNUSED_PARAM(value);
</span><del>-    return;
</del><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -2638,7 +2638,7 @@
</span><span class="cx">                     }
</span><span class="cx">                 }
</span><span class="cx"> 
</span><del>-                push(@implContent, &quot;    &quot; . GetNativeTypeFromSignature($attribute-&gt;signature) . &quot; nativeValue(&quot; . JSValueToNative($attribute-&gt;signature, &quot;value&quot;, $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;}) . &quot;);\n&quot;);
</del><ins>+                push(@implContent, &quot;    &quot; . GetNativeTypeFromSignature($attribute-&gt;signature) . &quot; nativeValue = &quot; . JSValueToNative($attribute-&gt;signature, &quot;value&quot;, $attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;}) . &quot;;\n&quot;);
</ins><span class="cx">                 push(@implContent, &quot;    if (UNLIKELY(exec-&gt;hadException()))\n&quot;);
</span><span class="cx">                 push(@implContent, &quot;        return;\n&quot;);
</span><span class="cx"> 
</span><span class="lines">@@ -3294,9 +3294,11 @@
</span><span class="cx">             $implIncludes{&quot;&lt;runtime/Error.h&gt;&quot;} = 1;
</span><span class="cx"> 
</span><span class="cx">             my $argValue = &quot;exec-&gt;argument($argsIndex)&quot;;
</span><del>-            push(@$outputArray, &quot;    const String ${name}(${argValue}.isEmpty() ? String() : ${argValue}.toString(exec)-&gt;value(exec));\n&quot;);
</del><ins>+            push(@$outputArray, &quot;    // Keep pointer to the JSString in a local so we don't need to ref the String.\n&quot;);
+            push(@$outputArray, &quot;    auto* ${name}String = ${argValue}.toString(exec);\n&quot;);
</ins><span class="cx">             push(@$outputArray, &quot;    if (UNLIKELY(exec-&gt;hadException()))\n&quot;);
</span><span class="cx">             push(@$outputArray, &quot;        return JSValue::encode(jsUndefined());\n&quot;);
</span><ins>+            push(@$outputArray, &quot;    auto&amp; $name = ${name}String-&gt;value(exec);\n&quot;);
</ins><span class="cx"> 
</span><span class="cx">             my @enumValues = $codeGenerator-&gt;ValidEnumValues($argType);
</span><span class="cx">             my @enumChecks = ();
</span><span class="lines">@@ -3328,12 +3330,12 @@
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             if ($parameter-&gt;extendedAttributes-&gt;{&quot;RequiresExistingAtomicString&quot;}) {
</span><del>-                push(@$outputArray, &quot;    RefPtr&lt;AtomicStringImpl&gt; existing_$name = exec-&gt;argument($argsIndex).isEmpty() ? nullptr : exec-&gt;argument($argsIndex).toString(exec)-&gt;toExistingAtomicString(exec);\n&quot;);
-                push(@$outputArray, &quot;    if (!existing_$name)\n&quot;);
</del><ins>+                # FIXME: This could be made slightly more efficient if we added an AtomicString(RefPtr&lt;AtomicStringImpl&gt;&amp;&amp;) constructor and removed the call to get() here.
+                push(@$outputArray, &quot;    AtomicString $name = exec-&gt;argument($argsIndex).toString(exec)-&gt;toExistingAtomicString(exec).get();\n&quot;);
+                push(@$outputArray, &quot;    if ($name.isNull())\n&quot;);
</ins><span class="cx">                 push(@$outputArray, &quot;        return JSValue::encode(jsNull());\n&quot;);
</span><del>-                push(@$outputArray, &quot;    const AtomicString $name(*existing_$name);\n&quot;);
</del><span class="cx">             } else {
</span><del>-                push(@$outputArray, &quot;    &quot; . GetNativeTypeFromSignature($parameter) . &quot; $name(&quot; . JSValueToNative($parameter, $optional &amp;&amp; $defaultAttribute &amp;&amp; $defaultAttribute eq &quot;NullString&quot; ? &quot;argumentOrNull(exec, $argsIndex)&quot; : &quot;exec-&gt;argument($argsIndex)&quot;, $function-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;}) . &quot;);\n&quot;);
</del><ins>+                push(@$outputArray, &quot;    &quot; . GetNativeTypeFromSignature($parameter) . &quot; $name = &quot; . JSValueToNative($parameter, $optional &amp;&amp; $defaultAttribute &amp;&amp; $defaultAttribute eq &quot;NullString&quot; ? &quot;argumentOrNull(exec, $argsIndex)&quot; : &quot;exec-&gt;argument($argsIndex)&quot;, $function-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Conditional&quot;}) . &quot;;\n&quot;);
</ins><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             # If a parameter is &quot;an index&quot; and it's negative it should throw an INDEX_SIZE_ERR exception.
</span><span class="lines">@@ -3672,7 +3674,7 @@
</span><span class="cx"> 
</span><span class="cx"> my %nativeType = (
</span><span class="cx">     &quot;CompareHow&quot; =&gt; &quot;Range::CompareHow&quot;,
</span><del>-    &quot;DOMString&quot; =&gt; &quot;const String&quot;,
</del><ins>+    &quot;DOMString&quot; =&gt; &quot;String&quot;,
</ins><span class="cx">     &quot;NodeFilter&quot; =&gt; &quot;RefPtr&lt;NodeFilter&gt;&quot;,
</span><span class="cx">     &quot;SerializedScriptValue&quot; =&gt; &quot;RefPtr&lt;SerializedScriptValue&gt;&quot;,
</span><span class="cx">     &quot;Date&quot; =&gt; &quot;double&quot;,
</span><span class="lines">@@ -3711,7 +3713,7 @@
</span><span class="cx">     return &quot;Vector&lt;&quot; . GetNativeVectorInnerType($arrayOrSequenceType) . &quot;&gt;&quot; if $arrayOrSequenceType;
</span><span class="cx"> 
</span><span class="cx">     if ($codeGenerator-&gt;IsEnumType($type)) {
</span><del>-        return &quot;const String&quot;;
</del><ins>+        return &quot;String&quot;;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     # For all other types, the native type is a pointer with same type name as the IDL type.
</span><span class="lines">@@ -3823,14 +3825,14 @@
</span><span class="cx">             return &quot;valueToStringWithNullCheck(exec, $value)&quot;
</span><span class="cx">         }
</span><span class="cx">         if ($signature-&gt;extendedAttributes-&gt;{&quot;AtomicString&quot;}) {
</span><del>-            return &quot;$value.isEmpty() ? AtomicString() : $value.toString(exec)-&gt;toAtomicString(exec)&quot;;
</del><ins>+            return &quot;$value.toString(exec)-&gt;toAtomicString(exec)&quot;;
</ins><span class="cx">         }
</span><span class="cx">         # FIXME: Add the case for 'if ($signature-&gt;extendedAttributes-&gt;{&quot;TreatUndefinedAs&quot;} and $signature-&gt;extendedAttributes-&gt;{&quot;TreatUndefinedAs&quot;} eq &quot;NullString&quot;))'.
</span><del>-        return &quot;$value.isEmpty() ? String() : $value.toString(exec)-&gt;value(exec)&quot;;
</del><ins>+        return &quot;$value.toString(exec)-&gt;value(exec)&quot;;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if ($type eq &quot;any&quot;) {
</span><del>-        return &quot;exec-&gt;vm(), $value&quot;;
</del><ins>+        return &quot;{ exec-&gt;vm(), $value }&quot;;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if ($type eq &quot;NodeFilter&quot;) {
</span><span class="lines">@@ -3845,7 +3847,7 @@
</span><span class="cx"> 
</span><span class="cx">     if ($type eq &quot;Dictionary&quot;) {
</span><span class="cx">         AddToImplIncludes(&quot;Dictionary.h&quot;, $conditional);
</span><del>-        return &quot;exec, $value&quot;;
</del><ins>+        return &quot;{ exec, $value }&quot;;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if ($type eq &quot;DOMStringList&quot; ) {
</span><span class="lines">@@ -3873,7 +3875,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if ($codeGenerator-&gt;IsEnumType($type)) {
</span><del>-        return &quot;$value.isEmpty() ? String() : $value.toString(exec)-&gt;value(exec)&quot;;
</del><ins>+        return &quot;$value.toString(exec)-&gt;value(exec)&quot;;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     # Default, assume autogenerated type conversion routines
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -214,7 +214,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Node* nextChild(JSNode::toWrapped(exec-&gt;argument(0)));
</del><ins>+    Node* nextChild = JSNode::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.excitingFunction(nextChild);
</span><span class="lines">@@ -231,7 +231,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    const String message(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String message = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.postMessage(message);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -205,7 +205,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    const String str(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String str = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.anotherFunction(str);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -243,7 +243,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    int index(toUInt32(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int index = toUInt32(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (index &lt; 0) {
</span><span class="cx">         setDOMException(exec, INDEX_SIZE_ERR);
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -295,7 +295,7 @@
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    Event* evt(JSEvent::toWrapped(exec-&gt;argument(0)));
</del><ins>+    Event* evt = JSEvent::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = jsBoolean(impl.dispatchEvent(evt, ec));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -272,10 +272,10 @@
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    const String str1(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String str1 = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    const String str2(exec-&gt;argument(1).isEmpty() ? String() : exec-&gt;argument(1).toString(exec)-&gt;value(exec));
</del><ins>+    String str2 = exec-&gt;argument(1).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     ScriptExecutionContext* context = castedThis-&gt;scriptExecutionContext();
</span><span class="lines">@@ -663,7 +663,7 @@
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     UNUSED_PARAM(baseObject);
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     TestInterface::setImplementsStaticAttr(nativeValue);
</span><span class="lines">@@ -685,7 +685,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setImplementsStr2(nativeValue);
</span><span class="lines">@@ -721,7 +721,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    Node* nativeValue(JSNode::toWrapped(value));
</del><ins>+    Node* nativeValue = JSNode::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setImplementsNode(nativeValue);
</span><span class="lines">@@ -734,7 +734,7 @@
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     UNUSED_PARAM(baseObject);
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     TestSupplemental::setSupplementalStaticAttr(nativeValue);
</span><span class="lines">@@ -756,7 +756,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     TestSupplemental::setSupplementalStr2(&amp;impl, nativeValue);
</span><span class="lines">@@ -792,7 +792,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    Node* nativeValue(JSNode::toWrapped(value));
</del><ins>+    Node* nativeValue = JSNode::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     TestSupplemental::setSupplementalNode(&amp;impl, nativeValue);
</span><span class="lines">@@ -835,10 +835,10 @@
</span><span class="cx">     auto* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="cx">     if (!scriptContext)
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    const String strArg(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String strArg = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(1)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(1));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.implementsMethod2(scriptContext, strArg, objArg, ec)));
</span><span class="lines">@@ -901,10 +901,10 @@
</span><span class="cx">     auto* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="cx">     if (!scriptContext)
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    const String strArg(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String strArg = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(1)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(1));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(TestSupplemental::supplementalMethod2(&amp;impl, scriptContext, strArg, objArg, ec)));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -128,13 +128,13 @@
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    const String str1(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String str1 = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    const String str2(exec-&gt;argument(1).isEmpty() ? String() : exec-&gt;argument(1).toString(exec)-&gt;value(exec));
</del><ins>+    String str2 = exec-&gt;argument(1).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    const String str3(argumentOrNull(exec, 2).isEmpty() ? String() : argumentOrNull(exec, 2).toString(exec)-&gt;value(exec));
</del><ins>+    String str3 = argumentOrNull(exec, 2).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     RefPtr&lt;TestNamedConstructor&gt; object = TestNamedConstructor::createForJSConstructor(*castedThis-&gt;document(), str1, str2, str3, ec);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministiccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -378,7 +378,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setNondeterministicWriteableAttr(nativeValue);
</span><span class="lines">@@ -398,7 +398,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setNondeterministicExceptionAttr(nativeValue);
</span><span class="lines">@@ -418,7 +418,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setNondeterministicGetterExceptionAttr(nativeValue);
</span><span class="lines">@@ -439,7 +439,7 @@
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setNondeterministicSetterExceptionAttr(nativeValue, ec);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -1894,7 +1894,7 @@
</span><span class="cx"> {
</span><span class="cx">     JSValue value = JSValue::decode(encodedValue);
</span><span class="cx">     UNUSED_PARAM(baseObject);
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     TestObj::setStaticStringAttr(nativeValue);
</span><span class="lines">@@ -1927,7 +1927,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     if (nativeValue != &quot;&quot; &amp;&amp; nativeValue != &quot;EnumValue1&quot; &amp;&amp; nativeValue != &quot;EnumValue2&quot; &amp;&amp; nativeValue != &quot;EnumValue3&quot;)
</span><span class="lines">@@ -1949,7 +1949,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int8_t nativeValue(toInt8(exec, value, NormalConversion));
</del><ins>+    int8_t nativeValue = toInt8(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setByteAttr(nativeValue);
</span><span class="lines">@@ -1969,7 +1969,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    uint8_t nativeValue(toUInt8(exec, value, NormalConversion));
</del><ins>+    uint8_t nativeValue = toUInt8(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setOctetAttr(nativeValue);
</span><span class="lines">@@ -1989,7 +1989,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int16_t nativeValue(toInt16(exec, value, NormalConversion));
</del><ins>+    int16_t nativeValue = toInt16(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setShortAttr(nativeValue);
</span><span class="lines">@@ -2009,7 +2009,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    uint16_t nativeValue(toUInt16(exec, value, NormalConversion));
</del><ins>+    uint16_t nativeValue = toUInt16(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setUnsignedShortAttr(nativeValue);
</span><span class="lines">@@ -2029,7 +2029,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setLongAttr(nativeValue);
</span><span class="lines">@@ -2049,7 +2049,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    long long nativeValue(toInt64(exec, value, NormalConversion));
</del><ins>+    long long nativeValue = toInt64(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setLongLongAttr(nativeValue);
</span><span class="lines">@@ -2069,7 +2069,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    unsigned long long nativeValue(toUInt64(exec, value, NormalConversion));
</del><ins>+    unsigned long long nativeValue = toUInt64(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setUnsignedLongLongAttr(nativeValue);
</span><span class="lines">@@ -2089,7 +2089,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setStringAttr(nativeValue);
</span><span class="lines">@@ -2109,7 +2109,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    TestObj* nativeValue(JSTestObj::toWrapped(value));
</del><ins>+    TestObj* nativeValue = JSTestObj::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setTestObjAttr(nativeValue);
</span><span class="lines">@@ -2129,7 +2129,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    TestObj* nativeValue(JSTestObj::toWrapped(value));
</del><ins>+    TestObj* nativeValue = JSTestObj::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setXMLObjAttr(nativeValue);
</span><span class="lines">@@ -2149,7 +2149,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    bool nativeValue(value.toBoolean(exec));
</del><ins>+    bool nativeValue = value.toBoolean(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setCreate(nativeValue);
</span><span class="lines">@@ -2169,7 +2169,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(valueToStringWithNullCheck(exec, value));
</del><ins>+    String nativeValue = valueToStringWithNullCheck(exec, value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedstringattrAttr, nativeValue);
</span><span class="lines">@@ -2189,7 +2189,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setIntegralAttribute(WebCore::HTMLNames::reflectedintegralattrAttr, nativeValue);
</span><span class="lines">@@ -2209,7 +2209,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    unsigned nativeValue(toUInt32(exec, value, NormalConversion));
</del><ins>+    unsigned nativeValue = toUInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setUnsignedIntegralAttribute(WebCore::HTMLNames::reflectedunsignedintegralattrAttr, nativeValue);
</span><span class="lines">@@ -2229,7 +2229,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    bool nativeValue(value.toBoolean(exec));
</del><ins>+    bool nativeValue = value.toBoolean(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setBooleanAttribute(WebCore::HTMLNames::reflectedbooleanattrAttr, nativeValue);
</span><span class="lines">@@ -2249,7 +2249,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(valueToStringWithNullCheck(exec, value));
</del><ins>+    String nativeValue = valueToStringWithNullCheck(exec, value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::reflectedurlattrAttr, nativeValue);
</span><span class="lines">@@ -2269,7 +2269,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(valueToStringWithNullCheck(exec, value));
</del><ins>+    String nativeValue = valueToStringWithNullCheck(exec, value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::customContentStringAttrAttr, nativeValue);
</span><span class="lines">@@ -2289,7 +2289,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setIntegralAttribute(WebCore::HTMLNames::customContentIntegralAttrAttr, nativeValue);
</span><span class="lines">@@ -2309,7 +2309,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    bool nativeValue(value.toBoolean(exec));
</del><ins>+    bool nativeValue = value.toBoolean(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setBooleanAttribute(WebCore::HTMLNames::customContentBooleanAttrAttr, nativeValue);
</span><span class="lines">@@ -2329,7 +2329,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(valueToStringWithNullCheck(exec, value));
</del><ins>+    String nativeValue = valueToStringWithNullCheck(exec, value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::customContentURLAttrAttr, nativeValue);
</span><span class="lines">@@ -2349,7 +2349,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    RefPtr&lt;Float32Array&gt; nativeValue(toFloat32Array(value));
</del><ins>+    RefPtr&lt;Float32Array&gt; nativeValue = toFloat32Array(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setTypedArrayAttr(nativeValue.get());
</span><span class="lines">@@ -2369,7 +2369,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setAttrWithGetterException(nativeValue);
</span><span class="lines">@@ -2390,7 +2390,7 @@
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setAttrWithSetterException(nativeValue, ec);
</span><span class="lines">@@ -2411,7 +2411,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setStringAttrWithGetterException(nativeValue);
</span><span class="lines">@@ -2432,7 +2432,7 @@
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setStringAttrWithSetterException(nativeValue, ec);
</span><span class="lines">@@ -2481,7 +2481,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setWithScriptStateAttribute(exec, nativeValue);
</span><span class="lines">@@ -2501,7 +2501,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    TestObj* nativeValue(JSTestObj::toWrapped(value));
</del><ins>+    TestObj* nativeValue = JSTestObj::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     auto* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="lines">@@ -2524,7 +2524,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    TestObj* nativeValue(JSTestObj::toWrapped(value));
</del><ins>+    TestObj* nativeValue = JSTestObj::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setWithScriptStateAttributeRaises(exec, nativeValue);
</span><span class="lines">@@ -2544,7 +2544,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    TestObj* nativeValue(JSTestObj::toWrapped(value));
</del><ins>+    TestObj* nativeValue = JSTestObj::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     auto* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="lines">@@ -2567,7 +2567,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    TestObj* nativeValue(JSTestObj::toWrapped(value));
</del><ins>+    TestObj* nativeValue = JSTestObj::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     auto* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="lines">@@ -2590,7 +2590,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    TestObj* nativeValue(JSTestObj::toWrapped(value));
</del><ins>+    TestObj* nativeValue = JSTestObj::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     auto* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="lines">@@ -2613,7 +2613,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    TestObj* nativeValue(JSTestObj::toWrapped(value));
</del><ins>+    TestObj* nativeValue = JSTestObj::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     auto* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
</span><span class="lines">@@ -2636,7 +2636,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    TestObj* nativeValue(JSTestObj::toWrapped(value));
</del><ins>+    TestObj* nativeValue = JSTestObj::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setWithScriptArgumentsAndCallStackAttribute(nativeValue);
</span><span class="lines">@@ -2657,7 +2657,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setConditionalAttr1(nativeValue);
</span><span class="lines">@@ -2679,7 +2679,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setConditionalAttr2(nativeValue);
</span><span class="lines">@@ -2701,7 +2701,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setConditionalAttr3(nativeValue);
</span><span class="lines">@@ -2767,7 +2767,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    Deprecated::ScriptValue nativeValue(exec-&gt;vm(), value);
</del><ins>+    Deprecated::ScriptValue nativeValue = { exec-&gt;vm(), value };
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setAnyAttribute(nativeValue);
</span><span class="lines">@@ -2787,7 +2787,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    SVGPropertyTearOff&lt;SVGPoint&gt;* nativeValue(JSSVGPoint::toWrapped(value));
</del><ins>+    SVGPropertyTearOff&lt;SVGPoint&gt;* nativeValue = JSSVGPoint::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setMutablePoint(nativeValue);
</span><span class="lines">@@ -2807,7 +2807,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    SVGPropertyTearOff&lt;SVGPoint&gt;* nativeValue(JSSVGPoint::toWrapped(value));
</del><ins>+    SVGPropertyTearOff&lt;SVGPoint&gt;* nativeValue = JSSVGPoint::toWrapped(value);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setImmutablePoint(nativeValue);
</span><span class="lines">@@ -2827,7 +2827,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setBlueberry(nativeValue);
</span><span class="lines">@@ -2847,7 +2847,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    float nativeValue(value.toFloat(exec));
</del><ins>+    float nativeValue = value.toFloat(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setStrictFloat(nativeValue);
</span><span class="lines">@@ -2867,7 +2867,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setId(nativeValue);
</span><span class="lines">@@ -2904,7 +2904,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setNullableLongSettableAttribute(nativeValue);
</span><span class="lines">@@ -2924,7 +2924,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setNullableStringValue(nativeValue);
</span><span class="lines">@@ -2944,7 +2944,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     if (nativeValue != &quot;&quot; &amp;&amp; nativeValue != &quot;OptionalValue1&quot; &amp;&amp; nativeValue != &quot;OptionalValue2&quot; &amp;&amp; nativeValue != &quot;OptionalValue3&quot;)
</span><span class="lines">@@ -2980,13 +2980,13 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 3))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    int longArg(toInt32(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int longArg = toInt32(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    const String strArg(exec-&gt;argument(1).isEmpty() ? String() : exec-&gt;argument(1).toString(exec)-&gt;value(exec));
</del><ins>+    String strArg = exec-&gt;argument(1).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(2)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(2));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.voidMethodWithArgs(longArg, strArg, objArg);
</span><span class="lines">@@ -3015,13 +3015,13 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 3))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    int8_t byteArg(toInt8(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int8_t byteArg = toInt8(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    const String strArg(exec-&gt;argument(1).isEmpty() ? String() : exec-&gt;argument(1).toString(exec)-&gt;value(exec));
</del><ins>+    String strArg = exec-&gt;argument(1).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(2)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(2));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = jsNumber(impl.byteMethodWithArgs(byteArg, strArg, objArg));
</span><span class="lines">@@ -3050,13 +3050,13 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 3))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    uint8_t octetArg(toUInt8(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    uint8_t octetArg = toUInt8(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    const String strArg(exec-&gt;argument(1).isEmpty() ? String() : exec-&gt;argument(1).toString(exec)-&gt;value(exec));
</del><ins>+    String strArg = exec-&gt;argument(1).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(2)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(2));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = jsNumber(impl.octetMethodWithArgs(octetArg, strArg, objArg));
</span><span class="lines">@@ -3085,13 +3085,13 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 3))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    int longArg(toInt32(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int longArg = toInt32(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    const String strArg(exec-&gt;argument(1).isEmpty() ? String() : exec-&gt;argument(1).toString(exec)-&gt;value(exec));
</del><ins>+    String strArg = exec-&gt;argument(1).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(2)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(2));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = jsNumber(impl.longMethodWithArgs(longArg, strArg, objArg));
</span><span class="lines">@@ -3120,13 +3120,13 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 3))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    int longArg(toInt32(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int longArg = toInt32(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    const String strArg(exec-&gt;argument(1).isEmpty() ? String() : exec-&gt;argument(1).toString(exec)-&gt;value(exec));
</del><ins>+    String strArg = exec-&gt;argument(1).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(2)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(2));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.objMethodWithArgs(longArg, strArg, objArg)));
</span><span class="lines">@@ -3143,7 +3143,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Vector&lt;RefPtr&lt;ScriptProfile&gt;&gt; sequenceArg((toRefPtrNativeArray&lt;ScriptProfile, JSScriptProfile&gt;(exec, exec-&gt;argument(0), &amp;JSScriptProfile::toWrapped)));
</del><ins>+    Vector&lt;RefPtr&lt;ScriptProfile&gt;&gt; sequenceArg = (toRefPtrNativeArray&lt;ScriptProfile, JSScriptProfile&gt;(exec, exec-&gt;argument(0), &amp;JSScriptProfile::toWrapped));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.methodWithSequenceArg(sequenceArg);
</span><span class="lines">@@ -3160,7 +3160,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    int longArg(toInt32(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int longArg = toInt32(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = jsArray(exec, castedThis-&gt;globalObject(), impl.methodReturningSequence(longArg));
</span><span class="lines">@@ -3177,9 +3177,11 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    const String enumArg(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    // Keep pointer to the JSString in a local so we don't need to ref the String.
+    auto* enumArgString = exec-&gt;argument(0).toString(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><ins>+    auto&amp; enumArg = enumArgString-&gt;value(exec);
</ins><span class="cx">     if (enumArg != &quot;&quot; &amp;&amp; enumArg != &quot;EnumValue1&quot; &amp;&amp; enumArg != &quot;EnumValue2&quot; &amp;&amp; enumArg != &quot;EnumValue3&quot;)
</span><span class="cx">         return throwArgumentMustBeEnumError(*exec, 0, &quot;enumArg&quot;, &quot;TestObj&quot;, &quot;methodWithEnumArg&quot;, &quot;\&quot;\&quot;, \&quot;EnumValue1\&quot;, \&quot;EnumValue2\&quot;, \&quot;EnumValue3\&quot;&quot;);
</span><span class="cx">     impl.methodWithEnumArg(enumArg);
</span><span class="lines">@@ -3197,10 +3199,10 @@
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 2))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    const String strArg(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String strArg = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(1)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(1));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.methodThatRequiresAllArgsAndThrows(strArg, objArg, ec)));
</span><span class="lines">@@ -3219,7 +3221,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    RefPtr&lt;SerializedScriptValue&gt; serializedArg(SerializedScriptValue::create(exec, exec-&gt;argument(0), 0, 0));
</del><ins>+    RefPtr&lt;SerializedScriptValue&gt; serializedArg = SerializedScriptValue::create(exec, exec-&gt;argument(0), 0, 0);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.serializedValue(serializedArg);
</span><span class="lines">@@ -3236,10 +3238,10 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Dictionary oo(exec, exec-&gt;argument(0));
</del><ins>+    Dictionary oo = { exec, exec-&gt;argument(0) };
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    Dictionary ooo(exec, exec-&gt;argument(1));
</del><ins>+    Dictionary ooo = { exec, exec-&gt;argument(1) };
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.optionsObject(oo, ooo);
</span><span class="lines">@@ -3462,7 +3464,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    int opt(toInt32(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int opt = toInt32(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.methodWithOptionalArg(opt);
</span><span class="lines">@@ -3479,7 +3481,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    int nonOpt(toInt32(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int nonOpt = toInt32(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx"> 
</span><span class="lines">@@ -3489,7 +3491,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    int opt(toInt32(exec, exec-&gt;argument(1), NormalConversion));
</del><ins>+    int opt = toInt32(exec, exec-&gt;argument(1), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.methodWithNonOptionalArgAndOptionalArg(nonOpt, opt);
</span><span class="lines">@@ -3506,7 +3508,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    int nonOpt(toInt32(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int nonOpt = toInt32(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx"> 
</span><span class="lines">@@ -3516,7 +3518,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    int opt1(toInt32(exec, exec-&gt;argument(1), NormalConversion));
</del><ins>+    int opt1 = toInt32(exec, exec-&gt;argument(1), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     if (argsCount &lt;= 2) {
</span><span class="lines">@@ -3524,7 +3526,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    int opt2(toInt32(exec, exec-&gt;argument(2), NormalConversion));
</del><ins>+    int opt2 = toInt32(exec, exec-&gt;argument(2), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.methodWithNonOptionalArgAndTwoOptionalArgs(nonOpt, opt1, opt2);
</span><span class="lines">@@ -3546,7 +3548,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    const String str(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String str = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.methodWithOptionalString(str);
</span><span class="lines">@@ -3561,7 +3563,7 @@
</span><span class="cx">         return throwThisTypeError(*exec, &quot;TestObj&quot;, &quot;methodWithOptionalStringIsUndefined&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String str(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String str = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.methodWithOptionalStringIsUndefined(str);
</span><span class="lines">@@ -3576,7 +3578,7 @@
</span><span class="cx">         return throwThisTypeError(*exec, &quot;TestObj&quot;, &quot;methodWithOptionalStringIsNullString&quot;);
</span><span class="cx">     ASSERT_GC_OBJECT_INHERITS(castedThis, JSTestObj::info());
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String str(argumentOrNull(exec, 0).isEmpty() ? String() : argumentOrNull(exec, 0).toString(exec)-&gt;value(exec));
</del><ins>+    String str = argumentOrNull(exec, 0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.methodWithOptionalStringIsNullString(str);
</span><span class="lines">@@ -3610,7 +3612,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 2))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    int nonCallback(toInt32(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int nonCallback = toInt32(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     if (!exec-&gt;argument(1).isFunction())
</span><span class="lines">@@ -3716,10 +3718,10 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 2))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(0)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    const String strArg(exec-&gt;argument(1).isEmpty() ? String() : exec-&gt;argument(1).toString(exec)-&gt;value(exec));
</del><ins>+    String strArg = exec-&gt;argument(1).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.overloadedMethod(objArg, strArg);
</span><span class="lines">@@ -3736,7 +3738,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(0)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx"> 
</span><span class="lines">@@ -3746,7 +3748,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    int longArg(toInt32(exec, exec-&gt;argument(1), NormalConversion));
</del><ins>+    int longArg = toInt32(exec, exec-&gt;argument(1), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.overloadedMethod(objArg, longArg);
</span><span class="lines">@@ -3763,7 +3765,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    const String strArg(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String strArg = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.overloadedMethod(strArg);
</span><span class="lines">@@ -3780,7 +3782,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    int longArg(toInt32(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int longArg = toInt32(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.overloadedMethod(longArg);
</span><span class="lines">@@ -3814,7 +3816,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    RefPtr&lt;DOMStringList&gt; listArg(toDOMStringList(exec, exec-&gt;argument(0)));
</del><ins>+    RefPtr&lt;DOMStringList&gt; listArg = toDOMStringList(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.overloadedMethod(listArg);
</span><span class="lines">@@ -3831,7 +3833,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Vector&lt;String&gt; arrayArg(toNativeArray&lt;String&gt;(exec, exec-&gt;argument(0)));
</del><ins>+    Vector&lt;String&gt; arrayArg = toNativeArray&lt;String&gt;(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.overloadedMethod(arrayArg);
</span><span class="lines">@@ -3848,7 +3850,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(0)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.overloadedMethod(objArg);
</span><span class="lines">@@ -3865,7 +3867,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Vector&lt;String&gt; arrayArg(toNativeArray&lt;String&gt;(exec, exec-&gt;argument(0)));
</del><ins>+    Vector&lt;String&gt; arrayArg = toNativeArray&lt;String&gt;(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.overloadedMethod(arrayArg);
</span><span class="lines">@@ -3882,7 +3884,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Vector&lt;unsigned&gt; arrayArg(toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(0)));
</del><ins>+    Vector&lt;unsigned&gt; arrayArg = toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.overloadedMethod(arrayArg);
</span><span class="lines">@@ -3899,7 +3901,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    const String strArg(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String strArg = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.overloadedMethod(strArg);
</span><span class="lines">@@ -3953,7 +3955,7 @@
</span><span class="cx">         return JSValue::encode(result);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    int arg(toInt32(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int arg = toInt32(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = jsNumber(TestObj::classMethodWithOptional(arg));
</span><span class="lines">@@ -3972,7 +3974,7 @@
</span><span class="cx"> {
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    int arg(toInt32(exec, exec-&gt;argument(0), NormalConversion));
</del><ins>+    int arg = toInt32(exec, exec-&gt;argument(0), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     TestObj::overloadedMethod1(arg);
</span><span class="lines">@@ -3986,7 +3988,7 @@
</span><span class="cx"> {
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    const String type(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String type = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     TestObj::overloadedMethod1(type);
</span><span class="lines">@@ -4054,7 +4056,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Vector&lt;unsigned&gt; unsignedLongSequence(toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(0)));
</del><ins>+    Vector&lt;unsigned&gt; unsignedLongSequence = toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.methodWithUnsignedLongSequence(unsignedLongSequence);
</span><span class="lines">@@ -4072,7 +4074,7 @@
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    Vector&lt;String&gt; values(toNativeArray&lt;String&gt;(exec, exec-&gt;argument(0)));
</del><ins>+    Vector&lt;String&gt; values = toNativeArray&lt;String&gt;(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = jsArray(exec, castedThis-&gt;globalObject(), impl.stringArrayFunction(values, ec));
</span><span class="lines">@@ -4092,7 +4094,7 @@
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    RefPtr&lt;DOMStringList&gt; values(toDOMStringList(exec, exec-&gt;argument(0)));
</del><ins>+    RefPtr&lt;DOMStringList&gt; values = toDOMStringList(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.domStringListFunction(values, ec)));
</span><span class="lines">@@ -4111,10 +4113,10 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 2))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Vector&lt;unsigned&gt; arrayArg(toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(0)));
</del><ins>+    Vector&lt;unsigned&gt; arrayArg = toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    Vector&lt;unsigned&gt; nullableArrayArg(toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(1)));
</del><ins>+    Vector&lt;unsigned&gt; nullableArrayArg = toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(1));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.methodWithAndWithoutNullableSequence(arrayArg, nullableArrayArg);
</span><span class="lines">@@ -4131,10 +4133,10 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 2))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Vector&lt;unsigned&gt; arrayArg(toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(0)));
</del><ins>+    Vector&lt;unsigned&gt; arrayArg = toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    Vector&lt;unsigned&gt; nullableArrayArg(toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(1)));
</del><ins>+    Vector&lt;unsigned&gt; nullableArrayArg = toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(1));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.methodWithAndWithoutNullableSequence2(arrayArg, nullableArrayArg);
</span><span class="lines">@@ -4168,7 +4170,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    TestNode* value(JSTestNode::toWrapped(exec-&gt;argument(0)));
</del><ins>+    TestNode* value = JSTestNode::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.convert1(value);
</span><span class="lines">@@ -4185,7 +4187,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    TestNode* value(JSTestNode::toWrapped(exec-&gt;argument(0)));
</del><ins>+    TestNode* value = JSTestNode::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.convert2(value);
</span><span class="lines">@@ -4202,7 +4204,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    TestNode* value(JSTestNode::toWrapped(exec-&gt;argument(0)));
</del><ins>+    TestNode* value = JSTestNode::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.convert4(value);
</span><span class="lines">@@ -4219,7 +4221,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    TestNode* value(JSTestNode::toWrapped(exec-&gt;argument(0)));
</del><ins>+    TestNode* value = JSTestNode::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.convert5(value);
</span><span class="lines">@@ -4273,13 +4275,13 @@
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 3))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    const String str(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String str = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    float a(exec-&gt;argument(1).toFloat(exec));
</del><ins>+    float a = exec-&gt;argument(1).toFloat(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    int b(toInt32(exec, exec-&gt;argument(2), NormalConversion));
</del><ins>+    int b = toInt32(exec, exec-&gt;argument(2), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.strictFunction(str, a, b, ec)));
</span><span class="lines">@@ -4301,10 +4303,10 @@
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     if (!exec-&gt;argument(0).isUndefinedOrNull() &amp;&amp; !exec-&gt;argument(0).inherits(JSTestObj::info()))
</span><span class="cx">         return throwArgumentTypeError(*exec, 0, &quot;objArg&quot;, &quot;TestObj&quot;, &quot;strictFunctionWithSequence&quot;, &quot;TestObj&quot;);
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(0)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    Vector&lt;unsigned&gt; a(toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(1)));
</del><ins>+    Vector&lt;unsigned&gt; a = toNativeArray&lt;unsigned&gt;(exec, exec-&gt;argument(1));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.strictFunctionWithSequence(objArg, a, ec)));
</span><span class="lines">@@ -4326,10 +4328,10 @@
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     if (!exec-&gt;argument(0).isUndefinedOrNull() &amp;&amp; !exec-&gt;argument(0).inherits(JSTestObj::info()))
</span><span class="cx">         return throwArgumentTypeError(*exec, 0, &quot;objArg&quot;, &quot;TestObj&quot;, &quot;strictFunctionWithArray&quot;, &quot;TestObj&quot;);
</span><del>-    TestObj* objArg(JSTestObj::toWrapped(exec-&gt;argument(0)));
</del><ins>+    TestObj* objArg = JSTestObj::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    Vector&lt;int&gt; array(toNativeArray&lt;int&gt;(exec, exec-&gt;argument(1)));
</del><ins>+    Vector&lt;int&gt; array = toNativeArray&lt;int&gt;(exec, exec-&gt;argument(1));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = toJS(exec, castedThis-&gt;globalObject(), WTF::getPtr(impl.strictFunctionWithArray(objArg, array, ec)));
</span><span class="lines">@@ -4348,7 +4350,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    const String head(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String head = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     Vector&lt;String&gt; tail = toNativeArguments&lt;String&gt;(exec, 1);
</span><span class="lines">@@ -4368,7 +4370,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    double head(exec-&gt;argument(0).toNumber(exec));
</del><ins>+    double head = exec-&gt;argument(0).toNumber(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     Vector&lt;double&gt; tail = toNativeArguments&lt;double&gt;(exec, 1);
</span><span class="lines">@@ -4388,7 +4390,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Node* head(JSNode::toWrapped(exec-&gt;argument(0)));
</del><ins>+    Node* head = JSNode::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     Vector&lt;Node*&gt; tail;
</span><span class="lines">@@ -4411,10 +4413,10 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 2))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    float a(exec-&gt;argument(0).toFloat(exec));
</del><ins>+    float a = exec-&gt;argument(0).toFloat(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    int b(toInt32(exec, exec-&gt;argument(1), NormalConversion));
</del><ins>+    int b = toInt32(exec, exec-&gt;argument(1), NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.any(a, b);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx">     auto* castedThis = jsCast&lt;JSTestOverloadedConstructorsConstructor*&gt;(exec-&gt;callee());
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    ArrayBuffer* arrayBuffer(toArrayBuffer(exec-&gt;argument(0)));
</del><ins>+    ArrayBuffer* arrayBuffer = toArrayBuffer(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     RefPtr&lt;TestOverloadedConstructors&gt; object = TestOverloadedConstructors::create(arrayBuffer);
</span><span class="lines">@@ -106,7 +106,7 @@
</span><span class="cx">     auto* castedThis = jsCast&lt;JSTestOverloadedConstructorsConstructor*&gt;(exec-&gt;callee());
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    RefPtr&lt;ArrayBufferView&gt; arrayBufferView(toArrayBufferView(exec-&gt;argument(0)));
</del><ins>+    RefPtr&lt;ArrayBufferView&gt; arrayBufferView = toArrayBufferView(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     RefPtr&lt;TestOverloadedConstructors&gt; object = TestOverloadedConstructors::create(arrayBufferView);
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx">     auto* castedThis = jsCast&lt;JSTestOverloadedConstructorsConstructor*&gt;(exec-&gt;callee());
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Blob* blob(JSBlob::toWrapped(exec-&gt;argument(0)));
</del><ins>+    Blob* blob = JSBlob::toWrapped(exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     RefPtr&lt;TestOverloadedConstructors&gt; object = TestOverloadedConstructors::create(blob);
</span><span class="lines">@@ -130,7 +130,7 @@
</span><span class="cx">     auto* castedThis = jsCast&lt;JSTestOverloadedConstructorsConstructor*&gt;(exec-&gt;callee());
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    const String string(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String string = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     RefPtr&lt;TestOverloadedConstructors&gt; object = TestOverloadedConstructors::create(string);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -270,7 +270,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    RefPtr&lt;SerializedScriptValue&gt; nativeValue(SerializedScriptValue::create(exec, value, 0, 0));
</del><ins>+    RefPtr&lt;SerializedScriptValue&gt; nativeValue = SerializedScriptValue::create(exec, value, 0, 0);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setValue(nativeValue);
</span><span class="lines">@@ -290,7 +290,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    RefPtr&lt;SerializedScriptValue&gt; nativeValue(SerializedScriptValue::create(exec, value, 0, 0));
</del><ins>+    RefPtr&lt;SerializedScriptValue&gt; nativeValue = SerializedScriptValue::create(exec, value, 0, 0);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setCachedValue(nativeValue);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (185372 => 185373)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2015-06-09 19:29:57 UTC (rev 185372)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2015-06-09 19:55:02 UTC (rev 185373)
</span><span class="lines">@@ -149,7 +149,7 @@
</span><span class="cx">     auto* castedThis = jsCast&lt;JSTestTypedefsConstructor*&gt;(exec-&gt;callee());
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 2))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    const String hello(exec-&gt;argument(0).isEmpty() ? String() : exec-&gt;argument(0).toString(exec)-&gt;value(exec));
</del><ins>+    String hello = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     if (!exec-&gt;argument(1).isFunction())
</span><span class="lines">@@ -385,7 +385,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    unsigned long long nativeValue(toUInt64(exec, value, NormalConversion));
</del><ins>+    unsigned long long nativeValue = toUInt64(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setUnsignedLongLongAttr(nativeValue);
</span><span class="lines">@@ -405,7 +405,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    RefPtr&lt;SerializedScriptValue&gt; nativeValue(SerializedScriptValue::create(exec, value, 0, 0));
</del><ins>+    RefPtr&lt;SerializedScriptValue&gt; nativeValue = SerializedScriptValue::create(exec, value, 0, 0);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setImmutableSerializedScriptValue(nativeValue);
</span><span class="lines">@@ -425,7 +425,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setAttrWithGetterException(nativeValue);
</span><span class="lines">@@ -446,7 +446,7 @@
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    int nativeValue(toInt32(exec, value, NormalConversion));
</del><ins>+    int nativeValue = toInt32(exec, value, NormalConversion);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setAttrWithSetterException(nativeValue, ec);
</span><span class="lines">@@ -467,7 +467,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setStringAttrWithGetterException(nativeValue);
</span><span class="lines">@@ -488,7 +488,7 @@
</span><span class="cx">     }
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    const String nativeValue(value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec));
</del><ins>+    String nativeValue = value.toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return;
</span><span class="cx">     impl.setStringAttrWithSetterException(nativeValue, ec);
</span><span class="lines">@@ -516,7 +516,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    Vector&lt;int&gt; x(toNativeArray&lt;int&gt;(exec, exec-&gt;argument(0)));
</del><ins>+    Vector&lt;int&gt; x = toNativeArray&lt;int&gt;(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.func(x);
</span><span class="lines">@@ -533,13 +533,13 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 3))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    float width(exec-&gt;argument(0).toFloat(exec));
</del><ins>+    float width = exec-&gt;argument(0).toFloat(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    float height(exec-&gt;argument(1).toFloat(exec));
</del><ins>+    float height = exec-&gt;argument(1).toFloat(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><del>-    float blur(exec-&gt;argument(2).toFloat(exec));
</del><ins>+    float blur = exec-&gt;argument(2).toFloat(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx"> 
</span><span class="lines">@@ -549,7 +549,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    const String color(exec-&gt;argument(3).isEmpty() ? String() : exec-&gt;argument(3).toString(exec)-&gt;value(exec));
</del><ins>+    String color = exec-&gt;argument(3).toString(exec)-&gt;value(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     if (argsCount &lt;= 4) {
</span><span class="lines">@@ -557,7 +557,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    float alpha(exec-&gt;argument(4).toFloat(exec));
</del><ins>+    float alpha = exec-&gt;argument(4).toFloat(exec);
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.setShadow(width, height, blur, color, alpha);
</span><span class="lines">@@ -574,7 +574,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Vector&lt;RefPtr&lt;SerializedScriptValue&gt;&gt; sequenceArg((toRefPtrNativeArray&lt;SerializedScriptValue, JSSerializedScriptValue&gt;(exec, exec-&gt;argument(0), &amp;JSSerializedScriptValue::toWrapped)));
</del><ins>+    Vector&lt;RefPtr&lt;SerializedScriptValue&gt;&gt; sequenceArg = (toRefPtrNativeArray&lt;SerializedScriptValue, JSSerializedScriptValue&gt;(exec, exec-&gt;argument(0), &amp;JSSerializedScriptValue::toWrapped));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = jsNumber(impl.methodWithSequenceArg(sequenceArg));
</span><span class="lines">@@ -591,7 +591,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Vector&lt;String&gt; arrayArg(toNativeArray&lt;String&gt;(exec, exec-&gt;argument(0)));
</del><ins>+    Vector&lt;String&gt; arrayArg = toNativeArray&lt;String&gt;(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     impl.nullableArrayArg(arrayArg);
</span><span class="lines">@@ -658,7 +658,7 @@
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    Vector&lt;String&gt; values(toNativeArray&lt;String&gt;(exec, exec-&gt;argument(0)));
</del><ins>+    Vector&lt;String&gt; values = toNativeArray&lt;String&gt;(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = jsArray(exec, castedThis-&gt;globalObject(), impl.stringArrayFunction(values, ec));
</span><span class="lines">@@ -678,7 +678,7 @@
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    Vector&lt;String&gt; values(toNativeArray&lt;String&gt;(exec, exec-&gt;argument(0)));
</del><ins>+    Vector&lt;String&gt; values = toNativeArray&lt;String&gt;(exec, exec-&gt;argument(0));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = jsArray(exec, castedThis-&gt;globalObject(), impl.stringArrayFunction2(values, ec));
</span><span class="lines">@@ -697,7 +697,7 @@
</span><span class="cx">     auto&amp; impl = castedThis-&gt;impl();
</span><span class="cx">     if (UNLIKELY(exec-&gt;argumentCount() &lt; 1))
</span><span class="cx">         return throwVMError(exec, createNotEnoughArgumentsError(exec));
</span><del>-    Vector&lt;RefPtr&lt;TestEventTarget&gt;&gt; sequenceArg((toRefPtrNativeArray&lt;TestEventTarget, JSTestEventTarget&gt;(exec, exec-&gt;argument(0), &amp;JSTestEventTarget::toWrapped)));
</del><ins>+    Vector&lt;RefPtr&lt;TestEventTarget&gt;&gt; sequenceArg = (toRefPtrNativeArray&lt;TestEventTarget, JSTestEventTarget&gt;(exec, exec-&gt;argument(0), &amp;JSTestEventTarget::toWrapped));
</ins><span class="cx">     if (UNLIKELY(exec-&gt;hadException()))
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     JSValue result = jsBoolean(impl.callWithSequenceThatRequiresInclude(sequenceArg));
</span></span></pre>
</div>
</div>

</body>
</html>