<!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>[205422] 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/205422">205422</a></dd>
<dt>Author</dt> <dd>weinig@apple.com</dd>
<dt>Date</dt> <dd>2016-09-04 20:11:55 -0700 (Sun, 04 Sep 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Remove the CREATE_DOM_WRAPPER macro
https://bugs.webkit.org/show_bug.cgi?id=161580

Reviewed by Dan Bernstein.

The CREATE_DOM_WRAPPER has irritated me for too long! Replace it
with direct calls to createWrapper&lt;ImplementationType&gt;, which has
been upgraded to not require specifying both the implementation type
and the wrapper type by way of the new JSDOMWrapperConverterTraits
struct which provides mapping from ImplementationType -&gt; JSWrapper.
createWrapper&lt;ImplementationType&gt; has also been upgraded to have a
specialization for when the object being passed in needs to be casted.

* bindings/js/JSAnimationTimelineCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSBlobCustom.cpp:
(WebCore::toJSNewlyCreated):
(WebCore::constructJSBlob):
* bindings/js/JSCSSRuleCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSCSSValueCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSDataCueCustom.cpp:
(WebCore::constructJSDataCue):
* bindings/js/JSDocumentCustom.cpp:
(WebCore::createNewDocumentWrapper):
* bindings/js/JSDocumentFragmentCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSElementCustom.cpp:
(WebCore::createNewElementWrapper):
* bindings/js/JSEventCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSFileCustom.cpp:
(WebCore::constructJSFile):
* bindings/js/JSHTMLCollectionCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSHTMLDocumentCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSIDBCursorCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSImageDataCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSNodeCustom.cpp:
(WebCore::createWrapperInline):
* bindings/js/JSNodeListCustom.cpp:
(WebCore::createWrapper):
* bindings/js/JSPerformanceEntryCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSSVGPathSegCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSStyleSheetCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSTextCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSTextTrackCueCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSWebGLRenderingContextBaseCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/JSXMLDocumentCustom.cpp:
(WebCore::toJSNewlyCreated):
* dom/make_names.pl:
(printWrapperFunctions):
(printWrapperFactoryCppFile):
Replace CREATE_DOM_WRAPPER with direct calls to createWrapper.

* bindings/js/JSWorkerGlobalScopeBase.h:
Add #include of JSDOMWrapper.h to allow generated subclasses to use 
JSDOMWrapperConverterTraits.

* bindings/js/JSDOMBinding.h:
(WebCore::castDOMObjectForWrapperCreation): Deleted.
Remove CREATE_DOM_WRAPPER and castDOMObjectForWrapperCreation and 
specialize createWrapper.

* bindings/js/JSDOMWrapper.h:
Forward declare JSDOMWrapperConverterTraits.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
Add specialization of JSDOMWrapperConverterTraits for each header.

(GenerateImplementation):
(GenerateConstructorDefinition):
Replace CREATE_DOM_WRAPPER with direct calls to createWrapper.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSAnimationTimelineCustomcpp">trunk/Source/WebCore/bindings/js/JSAnimationTimelineCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSBlobCustomcpp">trunk/Source/WebCore/bindings/js/JSBlobCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCSSRuleCustomcpp">trunk/Source/WebCore/bindings/js/JSCSSRuleCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCSSValueCustomcpp">trunk/Source/WebCore/bindings/js/JSCSSValueCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingh">trunk/Source/WebCore/bindings/js/JSDOMBinding.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWrapperh">trunk/Source/WebCore/bindings/js/JSDOMWrapper.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDataCueCustomcpp">trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDocumentCustomcpp">trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDocumentFragmentCustomcpp">trunk/Source/WebCore/bindings/js/JSDocumentFragmentCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSElementCustomcpp">trunk/Source/WebCore/bindings/js/JSElementCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventCustomcpp">trunk/Source/WebCore/bindings/js/JSEventCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSFileCustomcpp">trunk/Source/WebCore/bindings/js/JSFileCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLCollectionCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLDocumentCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSIDBCursorCustomcpp">trunk/Source/WebCore/bindings/js/JSIDBCursorCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSImageDataCustomcpp">trunk/Source/WebCore/bindings/js/JSImageDataCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSNodeCustomcpp">trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSNodeListCustomcpp">trunk/Source/WebCore/bindings/js/JSNodeListCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSPerformanceEntryCustomcpp">trunk/Source/WebCore/bindings/js/JSPerformanceEntryCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSSVGPathSegCustomcpp">trunk/Source/WebCore/bindings/js/JSSVGPathSegCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSStyleSheetCustomcpp">trunk/Source/WebCore/bindings/js/JSStyleSheetCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSTextCustomcpp">trunk/Source/WebCore/bindings/js/JSTextCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSTextTrackCueCustomcpp">trunk/Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWebGLRenderingContextBaseCustomcpp">trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextBaseCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWorkerGlobalScopeBaseh">trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSXMLDocumentCustomcpp">trunk/Source/WebCore/bindings/js/JSXMLDocumentCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCoredommake_namespl">trunk/Source/WebCore/dom/make_names.pl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/ChangeLog        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -1,3 +1,90 @@
</span><ins>+2016-09-04  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        Remove the CREATE_DOM_WRAPPER macro
+        https://bugs.webkit.org/show_bug.cgi?id=161580
+
+        Reviewed by Dan Bernstein.
+
+        The CREATE_DOM_WRAPPER has irritated me for too long! Replace it
+        with direct calls to createWrapper&lt;ImplementationType&gt;, which has
+        been upgraded to not require specifying both the implementation type
+        and the wrapper type by way of the new JSDOMWrapperConverterTraits
+        struct which provides mapping from ImplementationType -&gt; JSWrapper.
+        createWrapper&lt;ImplementationType&gt; has also been upgraded to have a
+        specialization for when the object being passed in needs to be casted.
+
+        * bindings/js/JSAnimationTimelineCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSBlobCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        (WebCore::constructJSBlob):
+        * bindings/js/JSCSSRuleCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSCSSValueCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSDataCueCustom.cpp:
+        (WebCore::constructJSDataCue):
+        * bindings/js/JSDocumentCustom.cpp:
+        (WebCore::createNewDocumentWrapper):
+        * bindings/js/JSDocumentFragmentCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSElementCustom.cpp:
+        (WebCore::createNewElementWrapper):
+        * bindings/js/JSEventCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSFileCustom.cpp:
+        (WebCore::constructJSFile):
+        * bindings/js/JSHTMLCollectionCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSHTMLDocumentCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSIDBCursorCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSImageDataCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSNodeCustom.cpp:
+        (WebCore::createWrapperInline):
+        * bindings/js/JSNodeListCustom.cpp:
+        (WebCore::createWrapper):
+        * bindings/js/JSPerformanceEntryCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSSVGPathSegCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSStyleSheetCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSTextCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSTextTrackCueCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSWebGLRenderingContextBaseCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * bindings/js/JSXMLDocumentCustom.cpp:
+        (WebCore::toJSNewlyCreated):
+        * dom/make_names.pl:
+        (printWrapperFunctions):
+        (printWrapperFactoryCppFile):
+        Replace CREATE_DOM_WRAPPER with direct calls to createWrapper.
+
+        * bindings/js/JSWorkerGlobalScopeBase.h:
+        Add #include of JSDOMWrapper.h to allow generated subclasses to use 
+        JSDOMWrapperConverterTraits.
+
+        * bindings/js/JSDOMBinding.h:
+        (WebCore::castDOMObjectForWrapperCreation): Deleted.
+        Remove CREATE_DOM_WRAPPER and castDOMObjectForWrapperCreation and 
+        specialize createWrapper.
+
+        * bindings/js/JSDOMWrapper.h:
+        Forward declare JSDOMWrapperConverterTraits.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateHeader):
+        Add specialization of JSDOMWrapperConverterTraits for each header.
+
+        (GenerateImplementation):
+        (GenerateConstructorDefinition):
+        Replace CREATE_DOM_WRAPPER with direct calls to createWrapper.
+
</ins><span class="cx"> 2016-09-04  Antti Koivisto  &lt;antti@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove Style::PendingResources
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSAnimationTimelineCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSAnimationTimelineCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSAnimationTimelineCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSAnimationTimelineCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -42,8 +42,8 @@
</span><span class="cx"> JSValue toJSNewlyCreated(ExecState*, JSDOMGlobalObject* globalObject, Ref&lt;AnimationTimeline&gt;&amp;&amp; value)
</span><span class="cx"> {
</span><span class="cx">     if (value-&gt;isDocumentTimeline())
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, DocumentTimeline, WTFMove(value));
-    return CREATE_DOM_WRAPPER(globalObject, AnimationTimeline, WTFMove(value));
</del><ins>+        return createWrapper&lt;DocumentTimeline&gt;(globalObject, WTFMove(value));
+    return createWrapper&lt;AnimationTimeline&gt;(globalObject, WTFMove(value));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(ExecState* state, JSDOMGlobalObject* globalObject, AnimationTimeline&amp; value)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSBlobCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSBlobCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSBlobCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSBlobCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -53,8 +53,8 @@
</span><span class="cx"> JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject* globalObject, Ref&lt;Blob&gt;&amp;&amp; blob)
</span><span class="cx"> {
</span><span class="cx">     if (is&lt;File&gt;(blob))
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, File, WTFMove(blob));
-    return createWrapper&lt;JSBlob&gt;(globalObject, WTFMove(blob));
</del><ins>+        return createWrapper&lt;File&gt;(globalObject, WTFMove(blob));
+    return createWrapper&lt;Blob&gt;(globalObject, WTFMove(blob));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(ExecState* state, JSDOMGlobalObject* globalObject, Blob&amp; blob)
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx">         return throwConstructorScriptExecutionContextUnavailableError(exec, scope, &quot;Blob&quot;);
</span><span class="cx"> 
</span><span class="cx">     if (!exec.argumentCount()) {
</span><del>-        return JSValue::encode(CREATE_DOM_WRAPPER(jsConstructor-&gt;globalObject(), Blob, Blob::create()));
</del><ins>+        return JSValue::encode(createWrapper&lt;Blob&gt;(jsConstructor-&gt;globalObject(), Blob::create()));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     unsigned blobPartsLength = 0;
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     auto blob = Blob::create(blobBuilder.finalize(), Blob::normalizedContentType(type));
</span><del>-    return JSValue::encode(CREATE_DOM_WRAPPER(jsConstructor-&gt;globalObject(), Blob, WTFMove(blob)));
</del><ins>+    return JSValue::encode(createWrapper&lt;Blob&gt;(jsConstructor-&gt;globalObject(), WTFMove(blob)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCSSRuleCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCSSRuleCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCSSRuleCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSCSSRuleCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -64,33 +64,33 @@
</span><span class="cx"> {
</span><span class="cx">     switch (rule-&gt;type()) {
</span><span class="cx">     case CSSRule::STYLE_RULE:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSStyleRule, WTFMove(rule));
</del><ins>+        return createWrapper&lt;CSSStyleRule&gt;(globalObject, WTFMove(rule));
</ins><span class="cx">     case CSSRule::MEDIA_RULE:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSMediaRule, WTFMove(rule));
</del><ins>+        return createWrapper&lt;CSSMediaRule&gt;(globalObject, WTFMove(rule));
</ins><span class="cx">     case CSSRule::FONT_FACE_RULE:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSFontFaceRule, WTFMove(rule));
</del><ins>+        return createWrapper&lt;CSSFontFaceRule&gt;(globalObject, WTFMove(rule));
</ins><span class="cx">     case CSSRule::PAGE_RULE:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSPageRule, WTFMove(rule));
</del><ins>+        return createWrapper&lt;CSSPageRule&gt;(globalObject, WTFMove(rule));
</ins><span class="cx">     case CSSRule::IMPORT_RULE:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSImportRule, WTFMove(rule));
</del><ins>+        return createWrapper&lt;CSSImportRule&gt;(globalObject, WTFMove(rule));
</ins><span class="cx">     case CSSRule::CHARSET_RULE:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSCharsetRule, WTFMove(rule));
</del><ins>+        return createWrapper&lt;CSSCharsetRule&gt;(globalObject, WTFMove(rule));
</ins><span class="cx">     case CSSRule::KEYFRAME_RULE:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSKeyframeRule, WTFMove(rule));
</del><ins>+        return createWrapper&lt;CSSKeyframeRule&gt;(globalObject, WTFMove(rule));
</ins><span class="cx">     case CSSRule::KEYFRAMES_RULE:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSKeyframesRule, WTFMove(rule));
</del><ins>+        return createWrapper&lt;CSSKeyframesRule&gt;(globalObject, WTFMove(rule));
</ins><span class="cx">     case CSSRule::SUPPORTS_RULE:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSSupportsRule, WTFMove(rule));
</del><ins>+        return createWrapper&lt;CSSSupportsRule&gt;(globalObject, WTFMove(rule));
</ins><span class="cx"> #if ENABLE(CSS_DEVICE_ADAPTATION)
</span><span class="cx">     case CSSRule::WEBKIT_VIEWPORT_RULE:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, WebKitCSSViewportRule, WTFMove(rule));
</del><ins>+        return createWrapper&lt;WebKitCSSViewportRule&gt;(globalObject, WTFMove(rule));
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(CSS_REGIONS)
</span><span class="cx">     case CSSRule::WEBKIT_REGION_RULE:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, WebKitCSSRegionRule, WTFMove(rule));
</del><ins>+        return createWrapper&lt;WebKitCSSRegionRule&gt;(globalObject, WTFMove(rule));
</ins><span class="cx"> #endif
</span><span class="cx">     default:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSRule, WTFMove(rule));
</del><ins>+        return createWrapper&lt;CSSRule&gt;(globalObject, WTFMove(rule));
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCSSValueCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCSSValueCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCSSValueCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSCSSValueCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -67,18 +67,18 @@
</span><span class="cx"> JSValue toJSNewlyCreated(ExecState*, JSDOMGlobalObject* globalObject, Ref&lt;CSSValue&gt;&amp;&amp; value)
</span><span class="cx"> {
</span><span class="cx">     if (value-&gt;isWebKitCSSTransformValue())
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, WebKitCSSTransformValue, WTFMove(value));
</del><ins>+        return createWrapper&lt;WebKitCSSTransformValue&gt;(globalObject, WTFMove(value));
</ins><span class="cx">     if (value-&gt;isWebKitCSSFilterValue())
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, WebKitCSSFilterValue, WTFMove(value));
</del><ins>+        return createWrapper&lt;WebKitCSSFilterValue&gt;(globalObject, WTFMove(value));
</ins><span class="cx">     if (value-&gt;isValueList())
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSValueList, WTFMove(value));
</del><ins>+        return createWrapper&lt;CSSValueList&gt;(globalObject, WTFMove(value));
</ins><span class="cx">     if (value-&gt;isSVGPaint())
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPaint, WTFMove(value));
</del><ins>+        return createWrapper&lt;SVGPaint&gt;(globalObject, WTFMove(value));
</ins><span class="cx">     if (value-&gt;isSVGColor())
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGColor, WTFMove(value));
</del><ins>+        return createWrapper&lt;SVGColor&gt;(globalObject, WTFMove(value));
</ins><span class="cx">     if (value-&gt;isPrimitiveValue())
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSPrimitiveValue, WTFMove(value));
-    return CREATE_DOM_WRAPPER(globalObject, CSSValue, WTFMove(value));
</del><ins>+        return createWrapper&lt;CSSPrimitiveValue&gt;(globalObject, WTFMove(value));
+    return createWrapper&lt;CSSValue&gt;(globalObject, WTFMove(value));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(ExecState* state, JSDOMGlobalObject* globalObject, CSSValue&amp; value)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -162,14 +162,12 @@
</span><span class="cx"> bool clearInlineCachedWrapper(DOMWrapperWorld&amp;, ScriptWrappable*, JSDOMObject* wrapper);
</span><span class="cx"> bool clearInlineCachedWrapper(DOMWrapperWorld&amp;, JSC::ArrayBuffer*, JSC::JSArrayBuffer* wrapper);
</span><span class="cx"> 
</span><del>-template&lt;typename DOMClass, typename T&gt; Ref&lt;DOMClass&gt; inline castDOMObjectForWrapperCreation(Ref&lt;T&gt;&amp;&amp; object) { return static_reference_cast&lt;DOMClass&gt;(WTFMove(object)); }
-#define CREATE_DOM_WRAPPER(globalObject, className, object) createWrapper&lt;JS##className, className&gt;(globalObject, castDOMObjectForWrapperCreation&lt;className&gt;(object))
-
</del><span class="cx"> template&lt;typename DOMClass&gt; JSC::JSObject* getCachedWrapper(DOMWrapperWorld&amp;, DOMClass&amp;);
</span><span class="cx"> template&lt;typename DOMClass&gt; inline JSC::JSObject* getCachedWrapper(DOMWrapperWorld&amp; world, Ref&lt;DOMClass&gt;&amp; object) { return getCachedWrapper(world, object.get()); }
</span><span class="cx"> template&lt;typename DOMClass, typename WrapperClass&gt; void cacheWrapper(DOMWrapperWorld&amp;, DOMClass*, WrapperClass*);
</span><span class="cx"> template&lt;typename DOMClass, typename WrapperClass&gt; void uncacheWrapper(DOMWrapperWorld&amp;, DOMClass*, WrapperClass*);
</span><del>-template&lt;typename WrapperClass, typename DOMClass&gt; WrapperClass* createWrapper(JSDOMGlobalObject*, Ref&lt;DOMClass&gt;&amp;&amp;);
</del><ins>+template&lt;typename DOMClass, typename T&gt; auto createWrapper(JSDOMGlobalObject*, Ref&lt;T&gt;&amp;&amp;) -&gt; typename std::enable_if&lt;std::is_same&lt;DOMClass, T&gt;::value, typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass*&gt;::type;
+template&lt;typename DOMClass, typename T&gt; auto createWrapper(JSDOMGlobalObject*, Ref&lt;T&gt;&amp;&amp;) -&gt; typename std::enable_if&lt;!std::is_same&lt;DOMClass, T&gt;::value, typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass*&gt;::type;
</ins><span class="cx"> 
</span><span class="cx"> template&lt;typename DOMClass&gt; JSC::JSValue wrap(JSC::ExecState*, JSDOMGlobalObject*, DOMClass&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -471,15 +469,22 @@
</span><span class="cx">     weakRemove(world.m_wrappers, wrapperKey(domObject), wrapper);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-template&lt;typename WrapperClass, typename DOMClass&gt; inline WrapperClass* createWrapper(JSDOMGlobalObject* globalObject, Ref&lt;DOMClass&gt;&amp;&amp; node)
</del><ins>+template&lt;typename DOMClass, typename T&gt; inline auto createWrapper(JSDOMGlobalObject* globalObject, Ref&lt;T&gt;&amp;&amp; domObject) -&gt; typename std::enable_if&lt;std::is_same&lt;DOMClass, T&gt;::value, typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass*&gt;::type
</ins><span class="cx"> {
</span><del>-    ASSERT(!getCachedWrapper(globalObject-&gt;world(), node));
-    auto* nodePtr = node.ptr();
-    WrapperClass* wrapper = WrapperClass::create(getDOMStructure&lt;WrapperClass&gt;(globalObject-&gt;vm(), *globalObject), globalObject, WTFMove(node));
-    cacheWrapper(globalObject-&gt;world(), nodePtr, wrapper);
</del><ins>+    using WrapperClass = typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass;
+
+    ASSERT(!getCachedWrapper(globalObject-&gt;world(), domObject));
+    auto* domObjectPtr = domObject.ptr();
+    auto* wrapper = WrapperClass::create(getDOMStructure&lt;WrapperClass&gt;(globalObject-&gt;vm(), *globalObject), globalObject, WTFMove(domObject));
+    cacheWrapper(globalObject-&gt;world(), domObjectPtr, wrapper);
</ins><span class="cx">     return wrapper;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template&lt;typename DOMClass, typename T&gt; inline auto createWrapper(JSDOMGlobalObject* globalObject, Ref&lt;T&gt;&amp;&amp; domObject) -&gt; typename std::enable_if&lt;!std::is_same&lt;DOMClass, T&gt;::value, typename JSDOMWrapperConverterTraits&lt;DOMClass&gt;::WrapperClass*&gt;::type
+{
+    return createWrapper&lt;DOMClass&gt;(globalObject, static_reference_cast&lt;DOMClass&gt;(WTFMove(domObject)));
+}
+
</ins><span class="cx"> template&lt;typename DOMClass&gt; inline JSC::JSValue wrap(JSC::ExecState* state, JSDOMGlobalObject* globalObject, DOMClass&amp; domObject)
</span><span class="cx"> {
</span><span class="cx">     if (auto* wrapper = getCachedWrapper(globalObject-&gt;world(), domObject))
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWrapperh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWrapper.h (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWrapper.h        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSDOMWrapper.h        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -66,6 +66,8 @@
</span><span class="cx">     Ref&lt;ImplementationClass&gt; m_wrapped;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+template&lt;typename ImplementationClass&gt; struct JSDOMWrapperConverterTraits;
+
</ins><span class="cx"> template&lt;typename JSClass, typename Enable = void&gt;
</span><span class="cx"> struct JSDOMObjectInspector {
</span><span class="cx"> public:
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDataCueCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -94,13 +94,13 @@
</span><span class="cx">             setDOMException(&amp;exec, TypeError);
</span><span class="cx">             return JSValue::encode(jsUndefined());
</span><span class="cx">         }
</span><del>-        return JSValue::encode(CREATE_DOM_WRAPPER(castedThis-&gt;globalObject(), DataCue, DataCue::create(*context, MediaTime::createWithDouble(startTime), MediaTime::createWithDouble(endTime), *data, type)));
</del><ins>+        return JSValue::encode(createWrapper&lt;DataCue&gt;(castedThis-&gt;globalObject(), DataCue::create(*context, MediaTime::createWithDouble(startTime), MediaTime::createWithDouble(endTime), *data, type)));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> #if !ENABLE(DATACUE_VALUE)
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> #else
</span><del>-    return JSValue::encode(CREATE_DOM_WRAPPER(castedThis-&gt;globalObject(), DataCue,DataCue::create(*context, MediaTime::createWithDouble(startTime), MediaTime::createWithDouble(endTime), valueArgument, type)));
</del><ins>+    return JSValue::encode(createWrapper&lt;DataCue&gt;(castedThis-&gt;globalObject(), DataCue::create(*context, MediaTime::createWithDouble(startTime), MediaTime::createWithDouble(endTime), valueArgument, type)));
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDocumentCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -57,11 +57,11 @@
</span><span class="cx">     auto&amp; document = passedDocument.get();
</span><span class="cx">     JSObject* wrapper;
</span><span class="cx">     if (document.isHTMLDocument())
</span><del>-        wrapper = CREATE_DOM_WRAPPER(&amp;globalObject, HTMLDocument, WTFMove(passedDocument));
</del><ins>+        wrapper = createWrapper&lt;HTMLDocument&gt;(&amp;globalObject, WTFMove(passedDocument));
</ins><span class="cx">     else if (document.isXMLDocument())
</span><del>-        wrapper = CREATE_DOM_WRAPPER(&amp;globalObject, XMLDocument, WTFMove(passedDocument));
</del><ins>+        wrapper = createWrapper&lt;XMLDocument&gt;(&amp;globalObject, WTFMove(passedDocument));
</ins><span class="cx">     else
</span><del>-        wrapper = CREATE_DOM_WRAPPER(&amp;globalObject, Document, WTFMove(passedDocument));
</del><ins>+        wrapper = createWrapper&lt;Document&gt;(&amp;globalObject, WTFMove(passedDocument));
</ins><span class="cx"> 
</span><span class="cx">     reportMemoryForDocumentIfFrameless(state, document);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDocumentFragmentCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDocumentFragmentCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDocumentFragmentCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSDocumentFragmentCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -55,8 +55,8 @@
</span><span class="cx"> JSValue toJSNewlyCreated(ExecState*, JSDOMGlobalObject* globalObject, Ref&lt;DocumentFragment&gt;&amp;&amp; impl)
</span><span class="cx"> {
</span><span class="cx">     if (impl-&gt;isShadowRoot())
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, ShadowRoot, WTFMove(impl));
-    return createWrapper&lt;JSDocumentFragment&gt;(globalObject, WTFMove(impl));
</del><ins>+        return createWrapper&lt;ShadowRoot&gt;(globalObject, WTFMove(impl));
+    return createWrapper&lt;DocumentFragment&gt;(globalObject, WTFMove(impl));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(ExecState* state, JSDOMGlobalObject* globalObject, DocumentFragment&amp; impl)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSElementCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSElementCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSElementCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSElementCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx">         return createJSHTMLWrapper(globalObject, static_reference_cast&lt;HTMLElement&gt;(WTFMove(element)));
</span><span class="cx">     if (is&lt;SVGElement&gt;(element.get()))
</span><span class="cx">         return createJSSVGWrapper(globalObject, static_reference_cast&lt;SVGElement&gt;(WTFMove(element)));
</span><del>-    return CREATE_DOM_WRAPPER(globalObject, Element, WTFMove(element));
</del><ins>+    return createWrapper&lt;Element&gt;(globalObject, WTFMove(element));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(ExecState*, JSDOMGlobalObject* globalObject, Element&amp; element)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSEventCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> 
</span><span class="cx"> #define TRY_TO_WRAP_WITH_INTERFACE(interfaceName) \
</span><span class="cx">     case interfaceName##InterfaceType: \
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, interfaceName, WTFMove(event));
</del><ins>+        return createWrapper&lt;interfaceName&gt;(globalObject, WTFMove(event));
</ins><span class="cx"> 
</span><span class="cx"> JSValue toJSNewlyCreated(ExecState*, JSDOMGlobalObject* globalObject, Ref&lt;Event&gt;&amp;&amp; event)
</span><span class="cx"> {
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">         DOM_EVENT_INTERFACES_FOR_EACH(TRY_TO_WRAP_WITH_INTERFACE)
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return CREATE_DOM_WRAPPER(globalObject, Event, WTFMove(event));
</del><ins>+    return createWrapper&lt;Event&gt;(globalObject, WTFMove(event));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(ExecState* state, JSDOMGlobalObject* globalObject, Event&amp; event)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSFileCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSFileCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSFileCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSFileCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -125,7 +125,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     auto file = File::create(blobBuilder.finalize(), filename, normalizedType, lastModified.value());
</span><del>-    return JSValue::encode(CREATE_DOM_WRAPPER(constructor-&gt;globalObject(), File, WTFMove(file)));
</del><ins>+    return JSValue::encode(createWrapper&lt;File&gt;(constructor-&gt;globalObject(), WTFMove(file)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLCollectionCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -56,16 +56,16 @@
</span><span class="cx"> {
</span><span class="cx">     switch (collection-&gt;type()) {
</span><span class="cx">     case FormControls:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, HTMLFormControlsCollection, WTFMove(collection));
</del><ins>+        return createWrapper&lt;HTMLFormControlsCollection&gt;(globalObject, WTFMove(collection));
</ins><span class="cx">     case SelectOptions:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, HTMLOptionsCollection, WTFMove(collection));
</del><ins>+        return createWrapper&lt;HTMLOptionsCollection&gt;(globalObject, WTFMove(collection));
</ins><span class="cx">     case DocAll:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, HTMLAllCollection, WTFMove(collection));
</del><ins>+        return createWrapper&lt;HTMLAllCollection&gt;(globalObject, WTFMove(collection));
</ins><span class="cx">     default:
</span><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return CREATE_DOM_WRAPPER(globalObject, HTMLCollection, WTFMove(collection));
</del><ins>+    return createWrapper&lt;HTMLCollection&gt;(globalObject, WTFMove(collection));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(ExecState* state, JSDOMGlobalObject* globalObject, HTMLCollection&amp; collection)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLDocumentCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSHTMLDocumentCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> JSValue toJSNewlyCreated(ExecState* state, JSDOMGlobalObject* globalObject, Ref&lt;HTMLDocument&gt;&amp;&amp; passedDocument)
</span><span class="cx"> {
</span><span class="cx">     auto&amp; document = passedDocument.get();
</span><del>-    JSObject* wrapper = createWrapper&lt;JSHTMLDocument&gt;(globalObject, WTFMove(passedDocument));
</del><ins>+    JSObject* wrapper = createWrapper&lt;HTMLDocument&gt;(globalObject, WTFMove(passedDocument));
</ins><span class="cx"> 
</span><span class="cx">     reportMemoryForDocumentIfFrameless(*state, document);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSIDBCursorCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSIDBCursorCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSIDBCursorCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSIDBCursorCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -55,8 +55,8 @@
</span><span class="cx"> JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject* globalObject, Ref&lt;IDBCursor&gt;&amp;&amp; cursor)
</span><span class="cx"> {
</span><span class="cx">     if (is&lt;IDBCursorWithValue&gt;(cursor))
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, IDBCursorWithValue, WTFMove(cursor));
-    return createWrapper&lt;JSIDBCursor&gt;(globalObject, WTFMove(cursor));
</del><ins>+        return createWrapper&lt;IDBCursorWithValue&gt;(globalObject, WTFMove(cursor));
+    return createWrapper&lt;IDBCursor&gt;(globalObject, WTFMove(cursor));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, IDBCursor&amp; cursor)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSImageDataCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSImageDataCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSImageDataCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSImageDataCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> JSValue toJSNewlyCreated(ExecState* state, JSDOMGlobalObject* globalObject, Ref&lt;ImageData&gt;&amp;&amp; imageData)
</span><span class="cx"> {
</span><span class="cx">     auto* data = imageData-&gt;data();
</span><del>-    auto* wrapper = CREATE_DOM_WRAPPER(globalObject, ImageData, WTFMove(imageData));
</del><ins>+    auto* wrapper = createWrapper&lt;ImageData&gt;(globalObject, WTFMove(imageData));
</ins><span class="cx">     Identifier dataName = Identifier::fromString(state, &quot;data&quot;);
</span><span class="cx">     wrapper-&gt;putDirect(state-&gt;vm(), dataName, toJS(state, globalObject, data), DontDelete | ReadOnly);
</span><span class="cx">     // FIXME: Adopt reportExtraMemoryVisited, and switch to reportExtraMemoryAllocated.
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSNodeCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -224,37 +224,37 @@
</span><span class="cx">             else if (is&lt;SVGElement&gt;(node.get()))
</span><span class="cx">                 wrapper = createJSSVGWrapper(globalObject, static_reference_cast&lt;SVGElement&gt;(WTFMove(node)));
</span><span class="cx">             else
</span><del>-                wrapper = CREATE_DOM_WRAPPER(globalObject, Element, WTFMove(node));
</del><ins>+                wrapper = createWrapper&lt;Element&gt;(globalObject, WTFMove(node));
</ins><span class="cx">             break;
</span><span class="cx">         case Node::ATTRIBUTE_NODE:
</span><del>-            wrapper = CREATE_DOM_WRAPPER(globalObject, Attr, WTFMove(node));
</del><ins>+            wrapper = createWrapper&lt;Attr&gt;(globalObject, WTFMove(node));
</ins><span class="cx">             break;
</span><span class="cx">         case Node::TEXT_NODE:
</span><del>-            wrapper = CREATE_DOM_WRAPPER(globalObject, Text, WTFMove(node));
</del><ins>+            wrapper = createWrapper&lt;Text&gt;(globalObject, WTFMove(node));
</ins><span class="cx">             break;
</span><span class="cx">         case Node::CDATA_SECTION_NODE:
</span><del>-            wrapper = CREATE_DOM_WRAPPER(globalObject, CDATASection, WTFMove(node));
</del><ins>+            wrapper = createWrapper&lt;CDATASection&gt;(globalObject, WTFMove(node));
</ins><span class="cx">             break;
</span><span class="cx">         case Node::PROCESSING_INSTRUCTION_NODE:
</span><del>-            wrapper = CREATE_DOM_WRAPPER(globalObject, ProcessingInstruction, WTFMove(node));
</del><ins>+            wrapper = createWrapper&lt;ProcessingInstruction&gt;(globalObject, WTFMove(node));
</ins><span class="cx">             break;
</span><span class="cx">         case Node::COMMENT_NODE:
</span><del>-            wrapper = CREATE_DOM_WRAPPER(globalObject, Comment, WTFMove(node));
</del><ins>+            wrapper = createWrapper&lt;Comment&gt;(globalObject, WTFMove(node));
</ins><span class="cx">             break;
</span><span class="cx">         case Node::DOCUMENT_NODE:
</span><span class="cx">             // we don't want to cache the document itself in the per-document dictionary
</span><span class="cx">             return toJS(exec, globalObject, downcast&lt;Document&gt;(node.get()));
</span><span class="cx">         case Node::DOCUMENT_TYPE_NODE:
</span><del>-            wrapper = CREATE_DOM_WRAPPER(globalObject, DocumentType, WTFMove(node));
</del><ins>+            wrapper = createWrapper&lt;DocumentType&gt;(globalObject, WTFMove(node));
</ins><span class="cx">             break;
</span><span class="cx">         case Node::DOCUMENT_FRAGMENT_NODE:
</span><span class="cx">             if (node-&gt;isShadowRoot())
</span><del>-                wrapper = CREATE_DOM_WRAPPER(globalObject, ShadowRoot, WTFMove(node));
</del><ins>+                wrapper = createWrapper&lt;ShadowRoot&gt;(globalObject, WTFMove(node));
</ins><span class="cx">             else
</span><del>-                wrapper = CREATE_DOM_WRAPPER(globalObject, DocumentFragment, WTFMove(node));
</del><ins>+                wrapper = createWrapper&lt;DocumentFragment&gt;(globalObject, WTFMove(node));
</ins><span class="cx">             break;
</span><span class="cx">         default:
</span><del>-            wrapper = CREATE_DOM_WRAPPER(globalObject, Node, WTFMove(node));
</del><ins>+            wrapper = createWrapper&lt;Node&gt;(globalObject, WTFMove(node));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return wrapper;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSNodeListCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSNodeListCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSNodeListCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSNodeListCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">     // FIXME: Adopt reportExtraMemoryVisited, and switch to reportExtraMemoryAllocated.
</span><span class="cx">     // https://bugs.webkit.org/show_bug.cgi?id=142595
</span><span class="cx">     globalObject.vm().heap.deprecatedReportExtraMemory(nodeList-&gt;memoryCost());
</span><del>-    return createWrapper&lt;JSNodeList&gt;(&amp;globalObject, WTFMove(nodeList));
</del><ins>+    return createWrapper&lt;NodeList&gt;(&amp;globalObject, WTFMove(nodeList));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(ExecState*, JSDOMGlobalObject* globalObject, Ref&lt;NodeList&gt;&amp;&amp; nodeList)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSPerformanceEntryCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSPerformanceEntryCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSPerformanceEntryCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSPerformanceEntryCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -50,17 +50,17 @@
</span><span class="cx"> JSValue toJSNewlyCreated(ExecState*, JSDOMGlobalObject* globalObject, Ref&lt;PerformanceEntry&gt;&amp;&amp; entry)
</span><span class="cx"> {
</span><span class="cx">     if (is&lt;PerformanceResourceTiming&gt;(entry))
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, PerformanceResourceTiming, WTFMove(entry));
</del><ins>+        return createWrapper&lt;PerformanceResourceTiming&gt;(globalObject, WTFMove(entry));
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(USER_TIMING)
</span><span class="cx">     if (is&lt;PerformanceMark&gt;(entry))
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, PerformanceMark, WTFMove(entry));
</del><ins>+        return createWrapper&lt;PerformanceMark&gt;(globalObject, WTFMove(entry));
</ins><span class="cx"> 
</span><span class="cx">     if (is&lt;PerformanceMeasure&gt;(entry))
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, PerformanceMeasure, WTFMove(entry));
</del><ins>+        return createWrapper&lt;PerformanceMeasure&gt;(globalObject, WTFMove(entry));
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    return createWrapper&lt;JSPerformanceEntry&gt;(globalObject, WTFMove(entry));
</del><ins>+    return createWrapper&lt;PerformanceEntry&gt;(globalObject, WTFMove(entry));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, PerformanceEntry&amp; entry)
</span><span class="lines">@@ -69,4 +69,5 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><ins>+
</ins><span class="cx"> #endif // ENABLE(WEB_TIMING)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSSVGPathSegCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSSVGPathSegCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSSVGPathSegCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSSVGPathSegCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -63,46 +63,46 @@
</span><span class="cx"> {
</span><span class="cx">     switch (object-&gt;pathSegType()) {
</span><span class="cx">     case SVGPathSeg::PATHSEG_CLOSEPATH:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegClosePath, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegClosePath&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_MOVETO_ABS:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegMovetoAbs, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegMovetoAbs&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_MOVETO_REL:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegMovetoRel, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegMovetoRel&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_LINETO_ABS:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegLinetoAbs, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegLinetoAbs&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_LINETO_REL:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegLinetoRel, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegLinetoRel&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_CURVETO_CUBIC_ABS:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegCurvetoCubicAbs, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegCurvetoCubicAbs&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_CURVETO_CUBIC_REL:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegCurvetoCubicRel, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegCurvetoCubicRel&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_ABS:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegCurvetoQuadraticAbs, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegCurvetoQuadraticAbs&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_REL:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegCurvetoQuadraticRel, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegCurvetoQuadraticRel&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_ARC_ABS:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegArcAbs, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegArcAbs&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_ARC_REL:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegArcRel, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegArcRel&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_LINETO_HORIZONTAL_ABS:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegLinetoHorizontalAbs, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegLinetoHorizontalAbs&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_LINETO_HORIZONTAL_REL:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegLinetoHorizontalRel, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegLinetoHorizontalRel&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_LINETO_VERTICAL_ABS:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegLinetoVerticalAbs, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegLinetoVerticalAbs&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_LINETO_VERTICAL_REL:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegLinetoVerticalRel, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegLinetoVerticalRel&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegCurvetoCubicSmoothAbs, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegCurvetoCubicSmoothAbs&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_CURVETO_CUBIC_SMOOTH_REL:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegCurvetoCubicSmoothRel, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegCurvetoCubicSmoothRel&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegCurvetoQuadraticSmoothAbs, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegCurvetoQuadraticSmoothAbs&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSegCurvetoQuadraticSmoothRel, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSegCurvetoQuadraticSmoothRel&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     case SVGPathSeg::PATHSEG_UNKNOWN:
</span><span class="cx">     default:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, SVGPathSeg, WTFMove(object));
</del><ins>+        return createWrapper&lt;SVGPathSeg&gt;(globalObject, WTFMove(object));
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSStyleSheetCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSStyleSheetCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSStyleSheetCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSStyleSheetCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -38,8 +38,8 @@
</span><span class="cx"> JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject* globalObject, Ref&lt;StyleSheet&gt;&amp;&amp; styleSheet)
</span><span class="cx"> {
</span><span class="cx">     if (styleSheet-&gt;isCSSStyleSheet())
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CSSStyleSheet, WTFMove(styleSheet));
-    return CREATE_DOM_WRAPPER(globalObject, StyleSheet, WTFMove(styleSheet));
</del><ins>+        return createWrapper&lt;CSSStyleSheet&gt;(globalObject, WTFMove(styleSheet));
+    return createWrapper&lt;StyleSheet&gt;(globalObject, WTFMove(styleSheet));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, StyleSheet&amp; stylesheet)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSTextCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSTextCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSTextCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSTextCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -35,8 +35,8 @@
</span><span class="cx"> JSValue toJSNewlyCreated(ExecState*, JSDOMGlobalObject* globalObject, Ref&lt;Text&gt;&amp;&amp; text)
</span><span class="cx"> {
</span><span class="cx">     if (is&lt;CDATASection&gt;(text.get()))
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, CDATASection, WTFMove(text));
-    return CREATE_DOM_WRAPPER(globalObject, Text, WTFMove(text));
</del><ins>+        return createWrapper&lt;CDATASection&gt;(globalObject, WTFMove(text));
+    return createWrapper&lt;Text&gt;(globalObject, WTFMove(text));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(ExecState* state, JSDOMGlobalObject* globalObject, Text&amp; text)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSTextTrackCueCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -64,10 +64,10 @@
</span><span class="cx">     // This switch will make more sense once we support DataCue
</span><span class="cx">     switch (cue-&gt;cueType()) {
</span><span class="cx">     case TextTrackCue::Data:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, DataCue, WTFMove(cue));
</del><ins>+        return createWrapper&lt;DataCue&gt;(globalObject, WTFMove(cue));
</ins><span class="cx">     case TextTrackCue::WebVTT:
</span><span class="cx">     case TextTrackCue::Generic:
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, VTTCue, WTFMove(cue));
</del><ins>+        return createWrapper&lt;VTTCue&gt;(globalObject, WTFMove(cue));
</ins><span class="cx">     default:
</span><span class="cx">         ASSERT_NOT_REACHED();
</span><span class="cx">         return jsNull();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWebGLRenderingContextBaseCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextBaseCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextBaseCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextBaseCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -120,9 +120,9 @@
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(WEBGL2)
</span><span class="cx">     if (is&lt;WebGL2RenderingContext&gt;(object))
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, WebGL2RenderingContext, WTFMove(object));
</del><ins>+        return createWrapper&lt;WebGL2RenderingContext&gt;(globalObject, WTFMove(object));
</ins><span class="cx"> #endif
</span><del>-    return CREATE_DOM_WRAPPER(globalObject, WebGLRenderingContext, WTFMove(object));
</del><ins>+    return createWrapper&lt;WebGLRenderingContext&gt;(globalObject, WTFMove(object));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(ExecState* state, JSDOMGlobalObject* globalObject, WebGLRenderingContextBase&amp; object)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWorkerGlobalScopeBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> #define JSWorkerGlobalScopeBase_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSDOMGlobalObject.h&quot;
</span><ins>+#include &quot;JSDOMWrapper.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSXMLDocumentCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSXMLDocumentCustom.cpp (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSXMLDocumentCustom.cpp        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/js/JSXMLDocumentCustom.cpp        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -35,11 +35,11 @@
</span><span class="cx"> 
</span><span class="cx"> using namespace JSC;
</span><span class="cx"> 
</span><del>-JSValue toJSNewlyCreated(ExecState* state, JSDOMGlobalObject* globalObject, Ref&lt;XMLDocument&gt;&amp;&amp; passedDocument)
</del><ins>+JSValue toJSNewlyCreated(ExecState* state, JSDOMGlobalObject* globalObject, Ref&lt;XMLDocument&gt;&amp;&amp; document)
</ins><span class="cx"> {
</span><del>-    reportMemoryForDocumentIfFrameless(*state, passedDocument.get());
</del><ins>+    reportMemoryForDocumentIfFrameless(*state, document.get());
</ins><span class="cx"> 
</span><del>-    return CREATE_DOM_WRAPPER(globalObject, XMLDocument, WTFMove(passedDocument));
</del><ins>+    return createWrapper&lt;XMLDocument&gt;(globalObject, WTFMove(document));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSValue toJS(ExecState* state, JSDOMGlobalObject* globalObject, XMLDocument&amp; document)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -1582,6 +1582,12 @@
</span><span class="cx">         push(@headerContent, &quot;bool fill${interfaceName}Init(${interfaceName}Init&amp;, JSDictionary&amp;);\n\n&quot;);
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    if (NeedsImplementationClass($interface)) {
+        push(@headerContent, &quot;template&lt;&gt; struct JSDOMWrapperConverterTraits&lt;${implType}&gt; {\n&quot;);
+        push(@headerContent, &quot;    using WrapperClass = ${className};\n&quot;);
+        push(@headerContent, &quot;};\n&quot;);
+    }
+
</ins><span class="cx">     my $conditionalString = $codeGenerator-&gt;GenerateConditionalString($interface);
</span><span class="cx">     push(@headerContent, &quot;\n} // namespace WebCore\n&quot;);
</span><span class="cx">     push(@headerContent, &quot;\n#endif // ${conditionalString}\n&quot;) if $conditionalString;
</span><span class="lines">@@ -3708,7 +3714,7 @@
</span><span class="cx">     globalObject-&gt;vm().heap.reportExtraMemoryAllocated(impl-&gt;memoryCost());
</span><span class="cx"> END
</span><span class="cx"> 
</span><del>-        push(@implContent, &quot;    return createWrapper&lt;$className, $implType&gt;(globalObject, WTFMove(impl));\n&quot;);
</del><ins>+        push(@implContent, &quot;    return createWrapper&lt;$implType&gt;(globalObject, WTFMove(impl));\n&quot;);
</ins><span class="cx">         push(@implContent, &quot;}\n\n&quot;);
</span><span class="cx"> 
</span><span class="cx">         push(@implContent, &quot;JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, $implType&amp; impl)\n&quot;);
</span><span class="lines">@@ -5298,7 +5304,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;${interfaceName}&gt; event = ${interfaceName}::createForBindings(eventType, eventInit);
</span><del>-    return JSValue::encode(CREATE_DOM_WRAPPER(jsConstructor-&gt;globalObject(), ${interfaceName}, WTFMove(event)));
</del><ins>+    return JSValue::encode(createWrapper&lt;${interfaceName}&gt;(jsConstructor-&gt;globalObject(), WTFMove(event)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool fill${interfaceName}Init(${interfaceName}Init&amp; eventInit, JSDictionary&amp; dictionary)
</span></span></pre></div>
<a id="trunkSourceWebCoredommake_namespl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/make_names.pl (205421 => 205422)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/make_names.pl        2016-09-04 18:50:21 UTC (rev 205421)
+++ trunk/Source/WebCore/dom/make_names.pl        2016-09-05 03:11:55 UTC (rev 205422)
</span><span class="lines">@@ -1173,8 +1173,8 @@
</span><span class="cx"> static JSDOMObject* create${JSInterfaceName}Wrapper(JSDOMGlobalObject* globalObject, Ref&lt;$parameters{namespace}Element&gt;&amp;&amp; element)
</span><span class="cx"> {
</span><span class="cx">     if (element-&gt;is$parameters{fallbackInterfaceName}())
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, $parameters{fallbackInterfaceName}, WTFMove(element));
-    return CREATE_DOM_WRAPPER(globalObject, ${JSInterfaceName}, WTFMove(element));
</del><ins>+        return createWrapper&lt;$parameters{fallbackInterfaceName}&gt;(globalObject, WTFMove(element));
+    return createWrapper&lt;${JSInterfaceName}&gt;(globalObject, WTFMove(element));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> END
</span><span class="lines">@@ -1184,8 +1184,8 @@
</span><span class="cx"> static JSDOMObject* create$enabledTags{$tagName}{interfaceName}Wrapper(JSDOMGlobalObject* globalObject, Ref&lt;$parameters{namespace}Element&gt;&amp;&amp; element)
</span><span class="cx"> {
</span><span class="cx">     if (element-&gt;is$parameters{fallbackInterfaceName}())
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, $parameters{fallbackInterfaceName}, WTFMove(element));
-    return CREATE_DOM_WRAPPER(globalObject, ${JSInterfaceName}, WTFMove(element));
</del><ins>+        return createWrapper&lt;$parameters{fallbackInterfaceName}&gt;(globalObject, WTFMove(element));
+    return createWrapper&lt;${JSInterfaceName}&gt;(globalObject, WTFMove(element));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> END
</span><span class="lines">@@ -1197,10 +1197,10 @@
</span><span class="cx"> {
</span><span class="cx">     if (!RuntimeEnabledFeatures::sharedFeatures().${runtimeConditional}Enabled()) {
</span><span class="cx">         ASSERT(element-&gt;is$parameters{fallbackInterfaceName}());
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, $parameters{fallbackJSInterfaceName}, WTFMove(element));
</del><ins>+        return createWrapper&lt;$parameters{fallbackJSInterfaceName}&gt;(globalObject, WTFMove(element));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return CREATE_DOM_WRAPPER(globalObject, ${JSInterfaceName}, WTFMove(element));
</del><ins>+    return createWrapper&lt;${JSInterfaceName}&gt;(globalObject, WTFMove(element));
</ins><span class="cx"> }
</span><span class="cx"> END
</span><span class="cx">     ;
</span><span class="lines">@@ -1208,7 +1208,7 @@
</span><span class="cx">             print F &lt;&lt;END
</span><span class="cx"> static JSDOMObject* create${JSInterfaceName}Wrapper(JSDOMGlobalObject* globalObject, Ref&lt;$parameters{namespace}Element&gt;&amp;&amp; element)
</span><span class="cx"> {
</span><del>-    return CREATE_DOM_WRAPPER(globalObject, ${JSInterfaceName}, WTFMove(element));
</del><ins>+    return createWrapper&lt;${JSInterfaceName}&gt;(globalObject, WTFMove(element));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> END
</span><span class="lines">@@ -1324,7 +1324,7 @@
</span><span class="cx">         print F &lt;&lt;END
</span><span class="cx"> #if ENABLE(CUSTOM_ELEMENTS)
</span><span class="cx">     if (element-&gt;isCustomElementUpgradeCandidate())
</span><del>-        return CREATE_DOM_WRAPPER(globalObject, $parameters{customElementInterfaceName}, WTFMove(element));
</del><ins>+        return createWrapper&lt;$parameters{customElementInterfaceName}&gt;(globalObject, WTFMove(element));
</ins><span class="cx"> #endif
</span><span class="cx"> END
</span><span class="cx"> ;
</span><span class="lines">@@ -1331,7 +1331,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     print F &lt;&lt;END
</span><del>-    return CREATE_DOM_WRAPPER(globalObject, $parameters{fallbackJSInterfaceName}, WTFMove(element));
</del><ins>+    return createWrapper&lt;$parameters{fallbackJSInterfaceName}&gt;(globalObject, WTFMove(element));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>