<!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>[190403] 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/190403">190403</a></dd>
<dt>Author</dt> <dd>youenn.fablet@crf.canon.fr</dd>
<dt>Date</dt> <dd>2015-10-01 06:07:55 -0700 (Thu, 01 Oct 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>Refactor binding generator to factor JS DOM class m_impl handling
https://bugs.webkit.org/show_bug.cgi?id=149660
Reviewed by Darin Adler.
Added JSDOMWrapperWithImplementation template class to move m_impl out of the binding generator.
Updated custom bindings to use impl() instead of m_impl directly.
Updated binding generator accordingly.
Covered by existing tests and binding tests.
* bindings/js/JSDOMStringMapCustom.cpp:
(WebCore::JSDOMStringMap::getOwnPropertyNames):
(WebCore::JSDOMStringMap::deleteProperty):
* bindings/js/JSDOMWrapper.h:
(WebCore::JSDOMWrapperWithImplementation::impl):
(WebCore::JSDOMWrapperWithImplementation::~JSDOMWrapperWithImplementation):
(WebCore::JSDOMWrapperWithImplementation::JSDOMWrapperWithImplementation):
(WebCore::JSDOMWrapperWithImplementation::releaseImpl):
* bindings/js/JSGeolocationCustom.cpp:
(WebCore::JSGeolocation::getCurrentPosition):
(WebCore::JSGeolocation::watchPosition):
* bindings/js/JSSQLResultSetRowListCustom.cpp:
(WebCore::JSSQLResultSetRowList::item):
* bindings/js/JSSQLTransactionCustom.cpp:
(WebCore::JSSQLTransaction::executeSql):
* bindings/js/JSStorageCustom.cpp:
(WebCore::JSStorage::deleteProperty):
(WebCore::JSStorage::getOwnPropertyNames):
* bindings/js/JSSubtleCryptoCustom.cpp:
(WebCore::JSSubtleCrypto::encrypt):
(WebCore::JSSubtleCrypto::decrypt):
(WebCore::JSSubtleCrypto::sign):
(WebCore::JSSubtleCrypto::verify):
(WebCore::JSSubtleCrypto::wrapKey):
(WebCore::JSSubtleCrypto::unwrapKey):
* bindings/scripts/CodeGeneratorJS.pm:
(GetParentClassName):
(GetImplClassName):
(GenerateHeader):
(GenerateImplementation):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::JSTestActiveDOMObject::JSTestActiveDOMObject):
(WebCore::JSTestActiveDOMObject::getOwnPropertySlot): Deleted.
* bindings/scripts/test/JS/JSTestActiveDOMObject.h:
(WebCore::JSTestActiveDOMObject::~JSTestActiveDOMObject):
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
(WebCore::JSTestCustomConstructorWithNoInterfaceObject::JSTestCustomConstructorWithNoInterfaceObject):
(WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor): Deleted.
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:
(WebCore::JSTestCustomConstructorWithNoInterfaceObject::~JSTestCustomConstructorWithNoInterfaceObject):
(WebCore::JSTestCustomConstructorWithNoInterfaceObject::finishCreation): Deleted.
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
(WebCore::JSTestCustomNamedGetter::JSTestCustomNamedGetter):
(WebCore::JSTestCustomNamedGetter::getOwnPropertySlot): Deleted.
* bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
(WebCore::JSTestCustomNamedGetter::~JSTestCustomNamedGetter):
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::JSTestEventConstructor::JSTestEventConstructor):
(WebCore::jsTestEventConstructorAttr1): Deleted.
* bindings/scripts/test/JS/JSTestEventConstructor.h:
(WebCore::JSTestEventConstructor::~JSTestEventConstructor):
(WebCore::JSTestEventConstructor::finishCreation): Deleted.
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::JSTestEventTarget::JSTestEventTarget):
(WebCore::JSTestEventTarget::getOwnPropertySlot): Deleted.
* bindings/scripts/test/JS/JSTestEventTarget.h:
(WebCore::JSTestEventTarget::~JSTestEventTarget):
* bindings/scripts/test/JS/JSTestException.cpp:
(WebCore::JSTestException::JSTestException):
(WebCore::JSTestException::getOwnPropertySlot): Deleted.
* bindings/scripts/test/JS/JSTestException.h:
(WebCore::JSTestException::~JSTestException):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::JSTestGenerateIsReachable::JSTestGenerateIsReachable):
(WebCore::jsTestGenerateIsReachableConstructor): Deleted.
* bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
(WebCore::JSTestGenerateIsReachable::~JSTestGenerateIsReachable):
(WebCore::JSTestGenerateIsReachable::finishCreation): Deleted.
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterface::JSTestInterface):
(WebCore::JSTestInterface::getOwnPropertySlot): Deleted.
* bindings/scripts/test/JS/JSTestInterface.h:
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::jsTestJSBuiltinConstructorConstructor): Deleted.
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:
(WebCore::JSTestJSBuiltinConstructor::~JSTestJSBuiltinConstructor):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::JSTestMediaQueryListListener::JSTestMediaQueryListListener):
(WebCore::jsTestMediaQueryListListenerConstructor): Deleted.
* bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
(WebCore::JSTestMediaQueryListListener::~JSTestMediaQueryListListener):
(WebCore::JSTestMediaQueryListListener::finishCreation): Deleted.
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructor::JSTestNamedConstructor):
(WebCore::jsTestNamedConstructorConstructor): Deleted.
* bindings/scripts/test/JS/JSTestNamedConstructor.h:
(WebCore::JSTestNamedConstructor::~JSTestNamedConstructor):
(WebCore::JSTestNamedConstructor::finishCreation): Deleted.
* bindings/scripts/test/JS/JSTestNondeterministic.cpp:
(WebCore::JSTestNondeterministic::JSTestNondeterministic):
(WebCore::jsTestNondeterministicNondeterministicReadonlyAttr): Deleted.
* bindings/scripts/test/JS/JSTestNondeterministic.h:
(WebCore::JSTestNondeterministic::~JSTestNondeterministic):
(WebCore::JSTestNondeterministic::finishCreation): Deleted.
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObj::JSTestObj):
(WebCore::JSTestObj::getOwnPropertySlot): Deleted.
* bindings/scripts/test/JS/JSTestObj.h:
(WebCore::JSTestObj::~JSTestObj):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::JSTestOverloadedConstructors::JSTestOverloadedConstructors):
(WebCore::jsTestOverloadedConstructorsConstructor): Deleted.
* bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
(WebCore::JSTestOverloadedConstructors::~JSTestOverloadedConstructors):
(WebCore::JSTestOverloadedConstructors::finishCreation): Deleted.
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
(WebCore::JSTestOverrideBuiltins::JSTestOverrideBuiltins):
(WebCore::JSTestOverrideBuiltins::getOwnPropertySlot): Deleted.
* bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
(WebCore::JSTestOverrideBuiltins::~JSTestOverrideBuiltins):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::JSTestSerializedScriptValueInterface::JSTestSerializedScriptValueInterface):
(WebCore::jsTestSerializedScriptValueInterfaceValue): Deleted.
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
(WebCore::JSTestSerializedScriptValueInterface::~JSTestSerializedScriptValueInterface):
(WebCore::JSTestSerializedScriptValueInterface::finishCreation): Deleted.
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefs::JSTestTypedefs):
(WebCore::JSTestTypedefs::getOwnPropertySlot): Deleted.
* bindings/scripts/test/JS/JSTestTypedefs.h:
(WebCore::JSTestTypedefs::~JSTestTypedefs):
* bindings/scripts/test/JS/JSattribute.cpp:
(WebCore::JSattribute::JSattribute):
(WebCore::jsattributeReadonly): Deleted.
* bindings/scripts/test/JS/JSattribute.h:
(WebCore::JSattribute::~JSattribute):
(WebCore::JSattribute::finishCreation): Deleted.
* bindings/scripts/test/JS/JSreadonly.cpp:
(WebCore::JSreadonly::JSreadonly):
(WebCore::jsreadonlyConstructor): Deleted.
* bindings/scripts/test/JS/JSreadonly.h:
(WebCore::JSreadonly::~JSreadonly):
(WebCore::JSreadonly::finishCreation): Deleted.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMStringMapCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWrapperh">trunk/Source/WebCore/bindings/js/JSDOMWrapper.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSGeolocationCustomcpp">trunk/Source/WebCore/bindings/js/JSGeolocationCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSSQLResultSetRowListCustomcpp">trunk/Source/WebCore/bindings/js/JSSQLResultSetRowListCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSSQLTransactionCustomcpp">trunk/Source/WebCore/bindings/js/JSSQLTransactionCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSStorageCustomcpp">trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSSubtleCryptoCustomcpp">trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjecth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjecth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGetterh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargeth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestExceptionh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachableh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenerh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministiccpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministich">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinsh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfaceh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefsh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSattributecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSattributeh">trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSreadonlycpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSreadonlyh">trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/ChangeLog        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -1,3 +1,150 @@
</span><ins>+2015-10-01 Youenn Fablet <youenn.fablet@crf.canon.fr>
+
+ Refactor binding generator to factor JS DOM class m_impl handling
+ https://bugs.webkit.org/show_bug.cgi?id=149660
+
+ Reviewed by Darin Adler.
+
+ Added JSDOMWrapperWithImplementation template class to move m_impl out of the binding generator.
+ Updated custom bindings to use impl() instead of m_impl directly.
+ Updated binding generator accordingly.
+
+ Covered by existing tests and binding tests.
+
+ * bindings/js/JSDOMStringMapCustom.cpp:
+ (WebCore::JSDOMStringMap::getOwnPropertyNames):
+ (WebCore::JSDOMStringMap::deleteProperty):
+ * bindings/js/JSDOMWrapper.h:
+ (WebCore::JSDOMWrapperWithImplementation::impl):
+ (WebCore::JSDOMWrapperWithImplementation::~JSDOMWrapperWithImplementation):
+ (WebCore::JSDOMWrapperWithImplementation::JSDOMWrapperWithImplementation):
+ (WebCore::JSDOMWrapperWithImplementation::releaseImpl):
+ * bindings/js/JSGeolocationCustom.cpp:
+ (WebCore::JSGeolocation::getCurrentPosition):
+ (WebCore::JSGeolocation::watchPosition):
+ * bindings/js/JSSQLResultSetRowListCustom.cpp:
+ (WebCore::JSSQLResultSetRowList::item):
+ * bindings/js/JSSQLTransactionCustom.cpp:
+ (WebCore::JSSQLTransaction::executeSql):
+ * bindings/js/JSStorageCustom.cpp:
+ (WebCore::JSStorage::deleteProperty):
+ (WebCore::JSStorage::getOwnPropertyNames):
+ * bindings/js/JSSubtleCryptoCustom.cpp:
+ (WebCore::JSSubtleCrypto::encrypt):
+ (WebCore::JSSubtleCrypto::decrypt):
+ (WebCore::JSSubtleCrypto::sign):
+ (WebCore::JSSubtleCrypto::verify):
+ (WebCore::JSSubtleCrypto::wrapKey):
+ (WebCore::JSSubtleCrypto::unwrapKey):
+ * bindings/scripts/CodeGeneratorJS.pm:
+ (GetParentClassName):
+ (GetImplClassName):
+ (GenerateHeader):
+ (GenerateImplementation):
+ * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
+ (WebCore::JSTestActiveDOMObject::JSTestActiveDOMObject):
+ (WebCore::JSTestActiveDOMObject::getOwnPropertySlot): Deleted.
+ * bindings/scripts/test/JS/JSTestActiveDOMObject.h:
+ (WebCore::JSTestActiveDOMObject::~JSTestActiveDOMObject):
+ * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
+ (WebCore::JSTestCustomConstructorWithNoInterfaceObject::JSTestCustomConstructorWithNoInterfaceObject):
+ (WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor): Deleted.
+ * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:
+ (WebCore::JSTestCustomConstructorWithNoInterfaceObject::~JSTestCustomConstructorWithNoInterfaceObject):
+ (WebCore::JSTestCustomConstructorWithNoInterfaceObject::finishCreation): Deleted.
+ * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
+ (WebCore::JSTestCustomNamedGetter::JSTestCustomNamedGetter):
+ (WebCore::JSTestCustomNamedGetter::getOwnPropertySlot): Deleted.
+ * bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
+ (WebCore::JSTestCustomNamedGetter::~JSTestCustomNamedGetter):
+ * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
+ (WebCore::JSTestEventConstructor::JSTestEventConstructor):
+ (WebCore::jsTestEventConstructorAttr1): Deleted.
+ * bindings/scripts/test/JS/JSTestEventConstructor.h:
+ (WebCore::JSTestEventConstructor::~JSTestEventConstructor):
+ (WebCore::JSTestEventConstructor::finishCreation): Deleted.
+ * bindings/scripts/test/JS/JSTestEventTarget.cpp:
+ (WebCore::JSTestEventTarget::JSTestEventTarget):
+ (WebCore::JSTestEventTarget::getOwnPropertySlot): Deleted.
+ * bindings/scripts/test/JS/JSTestEventTarget.h:
+ (WebCore::JSTestEventTarget::~JSTestEventTarget):
+ * bindings/scripts/test/JS/JSTestException.cpp:
+ (WebCore::JSTestException::JSTestException):
+ (WebCore::JSTestException::getOwnPropertySlot): Deleted.
+ * bindings/scripts/test/JS/JSTestException.h:
+ (WebCore::JSTestException::~JSTestException):
+ * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
+ (WebCore::JSTestGenerateIsReachable::JSTestGenerateIsReachable):
+ (WebCore::jsTestGenerateIsReachableConstructor): Deleted.
+ * bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
+ (WebCore::JSTestGenerateIsReachable::~JSTestGenerateIsReachable):
+ (WebCore::JSTestGenerateIsReachable::finishCreation): Deleted.
+ * bindings/scripts/test/JS/JSTestInterface.cpp:
+ (WebCore::JSTestInterface::JSTestInterface):
+ (WebCore::JSTestInterface::getOwnPropertySlot): Deleted.
+ * bindings/scripts/test/JS/JSTestInterface.h:
+ * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
+ (WebCore::jsTestJSBuiltinConstructorConstructor): Deleted.
+ * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:
+ (WebCore::JSTestJSBuiltinConstructor::~JSTestJSBuiltinConstructor):
+ * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
+ (WebCore::JSTestMediaQueryListListener::JSTestMediaQueryListListener):
+ (WebCore::jsTestMediaQueryListListenerConstructor): Deleted.
+ * bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
+ (WebCore::JSTestMediaQueryListListener::~JSTestMediaQueryListListener):
+ (WebCore::JSTestMediaQueryListListener::finishCreation): Deleted.
+ * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
+ (WebCore::JSTestNamedConstructor::JSTestNamedConstructor):
+ (WebCore::jsTestNamedConstructorConstructor): Deleted.
+ * bindings/scripts/test/JS/JSTestNamedConstructor.h:
+ (WebCore::JSTestNamedConstructor::~JSTestNamedConstructor):
+ (WebCore::JSTestNamedConstructor::finishCreation): Deleted.
+ * bindings/scripts/test/JS/JSTestNondeterministic.cpp:
+ (WebCore::JSTestNondeterministic::JSTestNondeterministic):
+ (WebCore::jsTestNondeterministicNondeterministicReadonlyAttr): Deleted.
+ * bindings/scripts/test/JS/JSTestNondeterministic.h:
+ (WebCore::JSTestNondeterministic::~JSTestNondeterministic):
+ (WebCore::JSTestNondeterministic::finishCreation): Deleted.
+ * bindings/scripts/test/JS/JSTestObj.cpp:
+ (WebCore::JSTestObj::JSTestObj):
+ (WebCore::JSTestObj::getOwnPropertySlot): Deleted.
+ * bindings/scripts/test/JS/JSTestObj.h:
+ (WebCore::JSTestObj::~JSTestObj):
+ * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
+ (WebCore::JSTestOverloadedConstructors::JSTestOverloadedConstructors):
+ (WebCore::jsTestOverloadedConstructorsConstructor): Deleted.
+ * bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
+ (WebCore::JSTestOverloadedConstructors::~JSTestOverloadedConstructors):
+ (WebCore::JSTestOverloadedConstructors::finishCreation): Deleted.
+ * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
+ (WebCore::JSTestOverrideBuiltins::JSTestOverrideBuiltins):
+ (WebCore::JSTestOverrideBuiltins::getOwnPropertySlot): Deleted.
+ * bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
+ (WebCore::JSTestOverrideBuiltins::~JSTestOverrideBuiltins):
+ * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
+ (WebCore::JSTestSerializedScriptValueInterface::JSTestSerializedScriptValueInterface):
+ (WebCore::jsTestSerializedScriptValueInterfaceValue): Deleted.
+ * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
+ (WebCore::JSTestSerializedScriptValueInterface::~JSTestSerializedScriptValueInterface):
+ (WebCore::JSTestSerializedScriptValueInterface::finishCreation): Deleted.
+ * bindings/scripts/test/JS/JSTestTypedefs.cpp:
+ (WebCore::JSTestTypedefs::JSTestTypedefs):
+ (WebCore::JSTestTypedefs::getOwnPropertySlot): Deleted.
+ * bindings/scripts/test/JS/JSTestTypedefs.h:
+ (WebCore::JSTestTypedefs::~JSTestTypedefs):
+ * bindings/scripts/test/JS/JSattribute.cpp:
+ (WebCore::JSattribute::JSattribute):
+ (WebCore::jsattributeReadonly): Deleted.
+ * bindings/scripts/test/JS/JSattribute.h:
+ (WebCore::JSattribute::~JSattribute):
+ (WebCore::JSattribute::finishCreation): Deleted.
+ * bindings/scripts/test/JS/JSreadonly.cpp:
+ (WebCore::JSreadonly::JSreadonly):
+ (WebCore::jsreadonlyConstructor): Deleted.
+ * bindings/scripts/test/JS/JSreadonly.h:
+ (WebCore::JSreadonly::~JSreadonly):
+ (WebCore::JSreadonly::finishCreation): Deleted.
+
</ins><span class="cx"> 2015-10-01 Csaba Osztrogonác <ossy@webkit.org>
</span><span class="cx">
</span><span class="cx"> Fix the ARM build after r190192
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMStringMapCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx"> {
</span><span class="cx"> JSDOMStringMap* thisObject = jsCast<JSDOMStringMap*>(object);
</span><span class="cx"> Vector<String> names;
</span><del>- thisObject->m_impl->getNames(names);
</del><ins>+ thisObject->impl().getNames(names);
</ins><span class="cx"> size_t length = names.size();
</span><span class="cx"> for (size_t i = 0; i < length; ++i)
</span><span class="cx"> propertyNames.add(Identifier::fromString(exec, names[i]));
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx"> JSDOMStringMap* thisObject = jsCast<JSDOMStringMap*>(cell);
</span><span class="cx"> if (propertyName.isSymbol())
</span><span class="cx"> return Base::deleteProperty(thisObject, exec, propertyName);
</span><del>- return thisObject->m_impl->deleteItem(propertyNameToString(propertyName));
</del><ins>+ return thisObject->impl().deleteItem(propertyNameToString(propertyName));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool JSDOMStringMap::deletePropertyByIndex(JSCell* cell, ExecState* exec, unsigned index)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWrapperh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWrapper.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWrapper.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/js/JSDOMWrapper.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -42,12 +42,28 @@
</span><span class="cx">
</span><span class="cx"> protected:
</span><span class="cx"> JSDOMWrapper(JSC::Structure* structure, JSC::JSGlobalObject* globalObject)
</span><del>- : JSDestructibleObject(globalObject->vm(), structure)
</del><ins>+ : Base(globalObject->vm(), structure)
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(scriptExecutionContext());
</span><span class="cx"> }
</span><span class="cx"> };
</span><span class="cx">
</span><ins>+template<typename ImplementationClass> class JSDOMWrapperWithImplementation : public JSDOMWrapper {
+public:
+ typedef JSDOMWrapper Base;
+
+ ImplementationClass& impl() const { return *m_impl; }
+ ~JSDOMWrapperWithImplementation() { std::exchange(m_impl, nullptr)->deref(); }
+
+protected:
+ JSDOMWrapperWithImplementation(JSC::Structure* structure, JSC::JSGlobalObject* globalObject, Ref<ImplementationClass>&& impl)
+ : Base(structure, globalObject)
+ , m_impl(&impl.leakRef()) { }
+
+private:
+ ImplementationClass* m_impl;
+};
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><span class="cx"> #endif // JSDOMWrapper_h
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSGeolocationCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSGeolocationCustom.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSGeolocationCustom.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/js/JSGeolocationCustom.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -114,7 +114,7 @@
</span><span class="cx"> return jsUndefined();
</span><span class="cx"> ASSERT(positionOptions);
</span><span class="cx">
</span><del>- m_impl->getCurrentPosition(positionCallback.release(), positionErrorCallback.release(), positionOptions.release());
</del><ins>+ impl().getCurrentPosition(positionCallback.release(), positionErrorCallback.release(), positionOptions.release());
</ins><span class="cx"> return jsUndefined();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -136,7 +136,7 @@
</span><span class="cx"> return jsUndefined();
</span><span class="cx"> ASSERT(positionOptions);
</span><span class="cx">
</span><del>- int watchID = m_impl->watchPosition(positionCallback.release(), positionErrorCallback.release(), positionOptions.release());
</del><ins>+ int watchID = impl().watchPosition(positionCallback.release(), positionErrorCallback.release(), positionOptions.release());
</ins><span class="cx"> return jsNumber(watchID);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSSQLResultSetRowListCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSSQLResultSetRowListCustom.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSSQLResultSetRowListCustom.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/js/JSSQLResultSetRowListCustom.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -47,17 +47,17 @@
</span><span class="cx"> setDOMException(&state, TYPE_MISMATCH_ERR);
</span><span class="cx"> return jsUndefined();
</span><span class="cx"> }
</span><del>- if (index < 0 || (unsigned)index >= m_impl->length()) {
</del><ins>+ if (index < 0 || (unsigned)index >= impl().length()) {
</ins><span class="cx"> setDOMException(&state, INDEX_SIZE_ERR);
</span><span class="cx"> return jsUndefined();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSObject* object = constructEmptyObject(&state);
</span><span class="cx">
</span><del>- unsigned numColumns = m_impl->columnNames().size();
</del><ins>+ unsigned numColumns = impl().columnNames().size();
</ins><span class="cx"> unsigned valuesIndex = index * numColumns;
</span><span class="cx"> for (unsigned i = 0; i < numColumns; i++) {
</span><del>- const SQLValue& value = m_impl->values()[valuesIndex + i];
</del><ins>+ const SQLValue& value = impl().values()[valuesIndex + i];
</ins><span class="cx"> JSValue jsValue;
</span><span class="cx">
</span><span class="cx"> switch (value.type()) {
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx"> ASSERT_NOT_REACHED();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- object->putDirect(state.vm(), Identifier::fromString(&state, m_impl->columnNames()[i]), jsValue, DontDelete | ReadOnly);
</del><ins>+ object->putDirect(state.vm(), Identifier::fromString(&state, impl().columnNames()[i]), jsValue, DontDelete | ReadOnly);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> return object;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSSQLTransactionCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSSQLTransactionCustom.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSSQLTransactionCustom.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/js/JSSQLTransactionCustom.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ExceptionCode ec = 0;
</span><del>- m_impl->executeSQL(sqlStatement, sqlValues, callback.release(), errorCallback.release(), ec);
</del><ins>+ impl().executeSQL(sqlStatement, sqlValues, callback.release(), errorCallback.release(), ec);
</ins><span class="cx"> setDOMException(&state, ec);
</span><span class="cx">
</span><span class="cx"> return jsUndefined();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSStorageCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx"> return Base::deleteProperty(thisObject, exec, propertyName);
</span><span class="cx">
</span><span class="cx"> ExceptionCode ec = 0;
</span><del>- thisObject->m_impl->removeItem(propertyNameToString(propertyName), ec);
</del><ins>+ thisObject->impl().removeItem(propertyNameToString(propertyName), ec);
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="lines">@@ -83,12 +83,12 @@
</span><span class="cx"> {
</span><span class="cx"> JSStorage* thisObject = jsCast<JSStorage*>(object);
</span><span class="cx"> ExceptionCode ec = 0;
</span><del>- unsigned length = thisObject->m_impl->length(ec);
</del><ins>+ unsigned length = thisObject->impl().length(ec);
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> if (exec->hadException())
</span><span class="cx"> return;
</span><span class="cx"> for (unsigned i = 0; i < length; ++i) {
</span><del>- propertyNames.add(Identifier::fromString(exec, thisObject->m_impl->key(i, ec)));
</del><ins>+ propertyNames.add(Identifier::fromString(exec, thisObject->impl().key(i, ec)));
</ins><span class="cx"> setDOMException(exec, ec);
</span><span class="cx"> if (exec->hadException())
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSSubtleCryptoCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -152,7 +152,7 @@
</span><span class="cx"> return throwTypeError(&state);
</span><span class="cx">
</span><span class="cx"> if (!key->allows(CryptoKeyUsageEncrypt)) {
</span><del>- m_impl->document()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, ASCIILiteral("Key usages do not include 'encrypt'"));
</del><ins>+ impl().document()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, ASCIILiteral("Key usages do not include 'encrypt'"));
</ins><span class="cx"> setDOMException(&state, NOT_SUPPORTED_ERR);
</span><span class="cx"> return jsUndefined();
</span><span class="cx"> }
</span><span class="lines">@@ -205,7 +205,7 @@
</span><span class="cx"> return throwTypeError(&state);
</span><span class="cx">
</span><span class="cx"> if (!key->allows(CryptoKeyUsageDecrypt)) {
</span><del>- m_impl->document()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, ASCIILiteral("Key usages do not include 'decrypt'"));
</del><ins>+ impl().document()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, ASCIILiteral("Key usages do not include 'decrypt'"));
</ins><span class="cx"> setDOMException(&state, NOT_SUPPORTED_ERR);
</span><span class="cx"> return jsUndefined();
</span><span class="cx"> }
</span><span class="lines">@@ -257,7 +257,7 @@
</span><span class="cx"> return throwTypeError(&state);
</span><span class="cx">
</span><span class="cx"> if (!key->allows(CryptoKeyUsageSign)) {
</span><del>- m_impl->document()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, ASCIILiteral("Key usages do not include 'sign'"));
</del><ins>+ impl().document()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, ASCIILiteral("Key usages do not include 'sign'"));
</ins><span class="cx"> setDOMException(&state, NOT_SUPPORTED_ERR);
</span><span class="cx"> return jsUndefined();
</span><span class="cx"> }
</span><span class="lines">@@ -309,7 +309,7 @@
</span><span class="cx"> return throwTypeError(&state);
</span><span class="cx">
</span><span class="cx"> if (!key->allows(CryptoKeyUsageVerify)) {
</span><del>- m_impl->document()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, ASCIILiteral("Key usages do not include 'verify'"));
</del><ins>+ impl().document()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, ASCIILiteral("Key usages do not include 'verify'"));
</ins><span class="cx"> setDOMException(&state, NOT_SUPPORTED_ERR);
</span><span class="cx"> return jsUndefined();
</span><span class="cx"> }
</span><span class="lines">@@ -646,7 +646,7 @@
</span><span class="cx"> return throwTypeError(&state);
</span><span class="cx">
</span><span class="cx"> if (!wrappingKey->allows(CryptoKeyUsageWrapKey)) {
</span><del>- m_impl->document()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, ASCIILiteral("Key usages do not include 'wrapKey'"));
</del><ins>+ impl().document()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, ASCIILiteral("Key usages do not include 'wrapKey'"));
</ins><span class="cx"> setDOMException(&state, NOT_SUPPORTED_ERR);
</span><span class="cx"> return jsUndefined();
</span><span class="cx"> }
</span><span class="lines">@@ -728,7 +728,7 @@
</span><span class="cx"> return throwTypeError(&state);
</span><span class="cx">
</span><span class="cx"> if (!unwrappingKey->allows(CryptoKeyUsageUnwrapKey)) {
</span><del>- m_impl->document()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, ASCIILiteral("Key usages do not include 'unwrapKey'"));
</del><ins>+ impl().document()->addConsoleMessage(MessageSource::JS, MessageLevel::Error, ASCIILiteral("Key usages do not include 'unwrapKey'"));
</ins><span class="cx"> setDOMException(&state, NOT_SUPPORTED_ERR);
</span><span class="cx"> return jsUndefined();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -180,7 +180,8 @@
</span><span class="cx"> my $interface = shift;
</span><span class="cx">
</span><span class="cx"> return $interface->extendedAttributes->{"JSLegacyParent"} if $interface->extendedAttributes->{"JSLegacyParent"};
</span><del>- return "JSDOMWrapper" unless $interface->parent;
</del><ins>+ return "JSDOMWrapper" unless NeedsImplementationClass($interface);
+ return "JSDOMWrapperWithImplementation<" . GetImplClassName($interface->name) . ">" unless $interface->parent;
</ins><span class="cx"> return "JS" . $interface->parent;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -840,6 +841,10 @@
</span><span class="cx"> my $name = shift;
</span><span class="cx">
</span><span class="cx"> return "DOMWindow" if $name eq "AbstractView";
</span><ins>+
+ my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($name);
+ return $svgNativeType if $svgNativeType;
+
</ins><span class="cx"> return $name;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -881,9 +886,7 @@
</span><span class="cx"> $headerIncludes{"SVGElement.h"} = 1 if $className =~ /^JSSVG/;
</span><span class="cx">
</span><span class="cx"> my $implType = GetImplClassName($interfaceName);
</span><del>- my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($implType);
- $implType = $svgNativeType if $svgNativeType;
-
</del><ins>+ my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($interfaceName);
</ins><span class="cx"> my $svgPropertyOrListPropertyType;
</span><span class="cx"> $svgPropertyOrListPropertyType = $svgPropertyType if $svgPropertyType;
</span><span class="cx"> $svgPropertyOrListPropertyType = $svgListPropertyType if $svgListPropertyType;
</span><span class="lines">@@ -1027,7 +1030,6 @@
</span><span class="cx">
</span><span class="cx"> if (!$hasParent) {
</span><span class="cx"> push(@headerContent, " static void destroy(JSC::JSCell*);\n");
</span><del>- push(@headerContent, " ~${className}();\n");
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> # Class info
</span><span class="lines">@@ -1188,12 +1190,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (NeedsImplementationClass($interface)) {
</span><del>- if (!$hasParent) {
- push(@headerContent, " $implType& impl() const { return *m_impl; }\n");
- push(@headerContent, " void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }\n\n");
- push(@headerContent, "private:\n");
- push(@headerContent, " $implType* m_impl;\n");
- } else {
</del><ins>+ if ($hasParent) {
</ins><span class="cx"> push(@headerContent, " $interfaceName& impl() const\n");
</span><span class="cx"> push(@headerContent, " {\n");
</span><span class="cx"> push(@headerContent, " return static_cast<$interfaceName&>(Base::impl());\n");
</span><span class="lines">@@ -2138,9 +2135,7 @@
</span><span class="cx"> }
</span><span class="cx"> push(@implContent, ", CREATE_METHOD_TABLE($className) };\n\n");
</span><span class="cx">
</span><del>- my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($implType);
- $implType = $svgNativeType if $svgNativeType;
-
</del><ins>+ my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($interfaceName);
</ins><span class="cx"> my $svgPropertyOrListPropertyType;
</span><span class="cx"> $svgPropertyOrListPropertyType = $svgPropertyType if $svgPropertyType;
</span><span class="cx"> $svgPropertyOrListPropertyType = $svgListPropertyType if $svgListPropertyType;
</span><span class="lines">@@ -2163,12 +2158,7 @@
</span><span class="cx"> push(@implContent, " : $parentClassName(structure, globalObject) { }\n\n");
</span><span class="cx"> }else {
</span><span class="cx"> push(@implContent, "${className}::$className(Structure* structure, JSDOMGlobalObject* globalObject, Ref<$implType>&& impl)\n");
</span><del>- if ($hasParent) {
- push(@implContent, " : $parentClassName(structure, globalObject, WTF::move(impl))\n");
- } else {
- push(@implContent, " : $parentClassName(structure, globalObject)\n");
- push(@implContent, " , m_impl(&impl.leakRef())\n");
- }
</del><ins>+ push(@implContent, " : $parentClassName(structure, globalObject, WTF::move(impl))\n");
</ins><span class="cx"> push(@implContent, "{\n");
</span><span class="cx"> push(@implContent, "}\n\n");
</span><span class="cx"> }
</span><span class="lines">@@ -2196,13 +2186,6 @@
</span><span class="cx"> push(@implContent, " ${className}* thisObject = static_cast<${className}*>(cell);\n");
</span><span class="cx"> push(@implContent, " thisObject->${className}::~${className}();\n");
</span><span class="cx"> push(@implContent, "}\n\n");
</span><del>-
- push(@implContent, "${className}::~${className}()\n");
- push(@implContent, "{\n");
- if (NeedsImplementationClass($interface)) {
- push(@implContent, " releaseImpl();\n");
- }
- push(@implContent, "}\n\n");
</del><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> my $hasGetter = InstanceOverridesGetOwnPropertySlot($interface);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -139,8 +139,7 @@
</span><span class="cx"> const ClassInfo JSTestActiveDOMObject::s_info = { "TestActiveDOMObject", &Base::s_info, &JSTestActiveDOMObjectTable, CREATE_METHOD_TABLE(JSTestActiveDOMObject) };
</span><span class="cx">
</span><span class="cx"> JSTestActiveDOMObject::JSTestActiveDOMObject(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestActiveDOMObject>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestActiveDOMObject>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -160,11 +159,6 @@
</span><span class="cx"> thisObject->JSTestActiveDOMObject::~JSTestActiveDOMObject();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestActiveDOMObject::~JSTestActiveDOMObject()
-{
- releaseImpl();
-}
-
</del><span class="cx"> bool JSTestActiveDOMObject::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot& slot)
</span><span class="cx"> {
</span><span class="cx"> auto* thisObject = jsCast<JSTestActiveDOMObject*>(object);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestActiveDOMObject : public JSDOMWrapper {
</del><ins>+class JSTestActiveDOMObject : public JSDOMWrapperWithImplementation<TestActiveDOMObject> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestActiveDOMObject> Base;
</ins><span class="cx"> static JSTestActiveDOMObject* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestActiveDOMObject>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestActiveDOMObject* ptr = new (NotNull, JSC::allocateCell<JSTestActiveDOMObject>(globalObject->vm().heap)) JSTestActiveDOMObject(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx"> static TestActiveDOMObject* toWrapped(JSC::JSValue);
</span><span class="cx"> static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestActiveDOMObject();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -52,11 +51,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- TestActiveDOMObject& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestActiveDOMObject* m_impl;
</del><span class="cx"> public:
</span><span class="cx"> static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
</span><span class="cx"> protected:
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -119,8 +119,7 @@
</span><span class="cx"> const ClassInfo JSTestCustomConstructorWithNoInterfaceObject::s_info = { "TestCustomConstructorWithNoInterfaceObject", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestCustomConstructorWithNoInterfaceObject) };
</span><span class="cx">
</span><span class="cx"> JSTestCustomConstructorWithNoInterfaceObject::JSTestCustomConstructorWithNoInterfaceObject(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestCustomConstructorWithNoInterfaceObject>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestCustomConstructorWithNoInterfaceObject>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -140,11 +139,6 @@
</span><span class="cx"> thisObject->JSTestCustomConstructorWithNoInterfaceObject::~JSTestCustomConstructorWithNoInterfaceObject();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestCustomConstructorWithNoInterfaceObject::~JSTestCustomConstructorWithNoInterfaceObject()
-{
- releaseImpl();
-}
-
</del><span class="cx"> EncodedJSValue jsTestCustomConstructorWithNoInterfaceObjectConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicCast<JSTestCustomConstructorWithNoInterfaceObjectPrototype*>(baseValue);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestCustomConstructorWithNoInterfaceObject : public JSDOMWrapper {
</del><ins>+class JSTestCustomConstructorWithNoInterfaceObject : public JSDOMWrapperWithImplementation<TestCustomConstructorWithNoInterfaceObject> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestCustomConstructorWithNoInterfaceObject> Base;
</ins><span class="cx"> static JSTestCustomConstructorWithNoInterfaceObject* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestCustomConstructorWithNoInterfaceObject>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestCustomConstructorWithNoInterfaceObject* ptr = new (NotNull, JSC::allocateCell<JSTestCustomConstructorWithNoInterfaceObject>(globalObject->vm().heap)) JSTestCustomConstructorWithNoInterfaceObject(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> static JSC::JSObject* getPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static TestCustomConstructorWithNoInterfaceObject* toWrapped(JSC::JSValue);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestCustomConstructorWithNoInterfaceObject();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -50,11 +49,6 @@
</span><span class="cx"> return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
</span><span class="cx"> }
</span><span class="cx">
</span><del>- TestCustomConstructorWithNoInterfaceObject& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestCustomConstructorWithNoInterfaceObject* m_impl;
</del><span class="cx"> protected:
</span><span class="cx"> JSTestCustomConstructorWithNoInterfaceObject(JSC::Structure*, JSDOMGlobalObject*, Ref<TestCustomConstructorWithNoInterfaceObject>&&);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -133,8 +133,7 @@
</span><span class="cx"> const ClassInfo JSTestCustomNamedGetter::s_info = { "TestCustomNamedGetter", &Base::s_info, &JSTestCustomNamedGetterTable, CREATE_METHOD_TABLE(JSTestCustomNamedGetter) };
</span><span class="cx">
</span><span class="cx"> JSTestCustomNamedGetter::JSTestCustomNamedGetter(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestCustomNamedGetter>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestCustomNamedGetter>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -154,11 +153,6 @@
</span><span class="cx"> thisObject->JSTestCustomNamedGetter::~JSTestCustomNamedGetter();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestCustomNamedGetter::~JSTestCustomNamedGetter()
-{
- releaseImpl();
-}
-
</del><span class="cx"> bool JSTestCustomNamedGetter::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot& slot)
</span><span class="cx"> {
</span><span class="cx"> auto* thisObject = jsCast<JSTestCustomNamedGetter*>(object);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGetterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestCustomNamedGetter : public JSDOMWrapper {
</del><ins>+class JSTestCustomNamedGetter : public JSDOMWrapperWithImplementation<TestCustomNamedGetter> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestCustomNamedGetter> Base;
</ins><span class="cx"> static JSTestCustomNamedGetter* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestCustomNamedGetter>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestCustomNamedGetter* ptr = new (NotNull, JSC::allocateCell<JSTestCustomNamedGetter>(globalObject->vm().heap)) JSTestCustomNamedGetter(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx"> static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);
</span><span class="cx"> static bool getOwnPropertySlotByIndex(JSC::JSObject*, JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestCustomNamedGetter();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -53,11 +52,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- TestCustomNamedGetter& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestCustomNamedGetter* m_impl;
</del><span class="cx"> public:
</span><span class="cx"> static const unsigned StructureFlags = JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
</span><span class="cx"> protected:
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -170,8 +170,7 @@
</span><span class="cx"> const ClassInfo JSTestEventConstructor::s_info = { "TestEventConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestEventConstructor) };
</span><span class="cx">
</span><span class="cx"> JSTestEventConstructor::JSTestEventConstructor(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestEventConstructor>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestEventConstructor>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -191,11 +190,6 @@
</span><span class="cx"> thisObject->JSTestEventConstructor::~JSTestEventConstructor();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestEventConstructor::~JSTestEventConstructor()
-{
- releaseImpl();
-}
-
</del><span class="cx"> EncodedJSValue jsTestEventConstructorAttr1(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> UNUSED_PARAM(state);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -29,9 +29,9 @@
</span><span class="cx">
</span><span class="cx"> class JSDictionary;
</span><span class="cx">
</span><del>-class JSTestEventConstructor : public JSDOMWrapper {
</del><ins>+class JSTestEventConstructor : public JSDOMWrapperWithImplementation<TestEventConstructor> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestEventConstructor> Base;
</ins><span class="cx"> static JSTestEventConstructor* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestEventConstructor>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestEventConstructor* ptr = new (NotNull, JSC::allocateCell<JSTestEventConstructor>(globalObject->vm().heap)) JSTestEventConstructor(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx"> static JSC::JSObject* getPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static TestEventConstructor* toWrapped(JSC::JSValue);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestEventConstructor();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -53,11 +52,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- TestEventConstructor& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestEventConstructor* m_impl;
</del><span class="cx"> protected:
</span><span class="cx"> JSTestEventConstructor(JSC::Structure*, JSDOMGlobalObject*, Ref<TestEventConstructor>&&);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -145,8 +145,7 @@
</span><span class="cx"> const ClassInfo JSTestEventTarget::s_info = { "TestEventTarget", &Base::s_info, &JSTestEventTargetTable, CREATE_METHOD_TABLE(JSTestEventTarget) };
</span><span class="cx">
</span><span class="cx"> JSTestEventTarget::JSTestEventTarget(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestEventTarget>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestEventTarget>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -166,11 +165,6 @@
</span><span class="cx"> thisObject->JSTestEventTarget::~JSTestEventTarget();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestEventTarget::~JSTestEventTarget()
-{
- releaseImpl();
-}
-
</del><span class="cx"> bool JSTestEventTarget::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot& slot)
</span><span class="cx"> {
</span><span class="cx"> auto* thisObject = jsCast<JSTestEventTarget*>(object);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestEventTarget : public JSDOMWrapper {
</del><ins>+class JSTestEventTarget : public JSDOMWrapperWithImplementation<TestEventTarget> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestEventTarget> Base;
</ins><span class="cx"> static JSTestEventTarget* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestEventTarget>&& impl)
</span><span class="cx"> {
</span><span class="cx"> globalObject->masqueradesAsUndefinedWatchpoint()->fireAll("Allocated masquerading object");
</span><span class="lines">@@ -44,7 +44,6 @@
</span><span class="cx"> static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);
</span><span class="cx"> static bool getOwnPropertySlotByIndex(JSC::JSObject*, JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestEventTarget();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -57,11 +56,6 @@
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static void visitChildren(JSCell*, JSC::SlotVisitor&);
</span><span class="cx">
</span><del>- TestEventTarget& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestEventTarget* m_impl;
</del><span class="cx"> public:
</span><span class="cx"> static const unsigned StructureFlags = JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::MasqueradesAsUndefined | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | Base::StructureFlags;
</span><span class="cx"> protected:
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -129,8 +129,7 @@
</span><span class="cx"> const ClassInfo JSTestException::s_info = { "TestException", &Base::s_info, &JSTestExceptionTable, CREATE_METHOD_TABLE(JSTestException) };
</span><span class="cx">
</span><span class="cx"> JSTestException::JSTestException(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestException>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestException>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -150,11 +149,6 @@
</span><span class="cx"> thisObject->JSTestException::~JSTestException();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestException::~JSTestException()
-{
- releaseImpl();
-}
-
</del><span class="cx"> bool JSTestException::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot& slot)
</span><span class="cx"> {
</span><span class="cx"> auto* thisObject = jsCast<JSTestException*>(object);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestExceptionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -28,9 +28,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestException : public JSDOMWrapper {
</del><ins>+class JSTestException : public JSDOMWrapperWithImplementation<TestException> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestException> Base;
</ins><span class="cx"> static JSTestException* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestException>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestException* ptr = new (NotNull, JSC::allocateCell<JSTestException>(globalObject->vm().heap)) JSTestException(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx"> static TestException* toWrapped(JSC::JSValue);
</span><span class="cx"> static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestException();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -53,11 +52,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- TestException& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestException* m_impl;
</del><span class="cx"> public:
</span><span class="cx"> static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
</span><span class="cx"> protected:
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -112,8 +112,7 @@
</span><span class="cx"> const ClassInfo JSTestGenerateIsReachable::s_info = { "TestGenerateIsReachable", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestGenerateIsReachable) };
</span><span class="cx">
</span><span class="cx"> JSTestGenerateIsReachable::JSTestGenerateIsReachable(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestGenerateIsReachable>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestGenerateIsReachable>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -133,11 +132,6 @@
</span><span class="cx"> thisObject->JSTestGenerateIsReachable::~JSTestGenerateIsReachable();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestGenerateIsReachable::~JSTestGenerateIsReachable()
-{
- releaseImpl();
-}
-
</del><span class="cx"> EncodedJSValue jsTestGenerateIsReachableConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> JSTestGenerateIsReachablePrototype* domObject = jsDynamicCast<JSTestGenerateIsReachablePrototype*>(baseValue);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestGenerateIsReachable : public JSDOMWrapper {
</del><ins>+class JSTestGenerateIsReachable : public JSDOMWrapperWithImplementation<TestGenerateIsReachable> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestGenerateIsReachable> Base;
</ins><span class="cx"> static JSTestGenerateIsReachable* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestGenerateIsReachable>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestGenerateIsReachable* ptr = new (NotNull, JSC::allocateCell<JSTestGenerateIsReachable>(globalObject->vm().heap)) JSTestGenerateIsReachable(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> static JSC::JSObject* getPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static TestGenerateIsReachable* toWrapped(JSC::JSValue);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestGenerateIsReachable();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -51,11 +50,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- TestGenerateIsReachable& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestGenerateIsReachable* m_impl;
</del><span class="cx"> protected:
</span><span class="cx"> JSTestGenerateIsReachable(JSC::Structure*, JSDOMGlobalObject*, Ref<TestGenerateIsReachable>&&);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -410,8 +410,7 @@
</span><span class="cx"> const ClassInfo JSTestInterface::s_info = { "TestInterface", &Base::s_info, &JSTestInterfaceTable, CREATE_METHOD_TABLE(JSTestInterface) };
</span><span class="cx">
</span><span class="cx"> JSTestInterface::JSTestInterface(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestInterface>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestInterface>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -431,11 +430,6 @@
</span><span class="cx"> thisObject->JSTestInterface::~JSTestInterface();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestInterface::~JSTestInterface()
-{
- releaseImpl();
-}
-
</del><span class="cx"> bool JSTestInterface::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot& slot)
</span><span class="cx"> {
</span><span class="cx"> auto* thisObject = jsCast<JSTestInterface*>(object);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -29,9 +29,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class WEBCORE_EXPORT JSTestInterface : public JSDOMWrapper {
</del><ins>+class WEBCORE_EXPORT JSTestInterface : public JSDOMWrapperWithImplementation<TestInterface> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestInterface> Base;
</ins><span class="cx"> static JSTestInterface* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestInterface>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestInterface* ptr = new (NotNull, JSC::allocateCell<JSTestInterface>(globalObject->vm().heap)) JSTestInterface(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -47,7 +47,6 @@
</span><span class="cx"> static void putByIndex(JSC::JSCell*, JSC::ExecState*, unsigned propertyName, JSC::JSValue, bool shouldThrow);
</span><span class="cx"> bool putDelegate(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestInterface();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -79,11 +78,6 @@
</span><span class="cx"> #if ENABLE(Condition11) || ENABLE(Condition12)
</span><span class="cx"> JSC::JSValue supplementalMethod3(JSC::ExecState&);
</span><span class="cx"> #endif
</span><del>- TestInterface& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestInterface* m_impl;
</del><span class="cx"> public:
</span><span class="cx"> static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
</span><span class="cx"> protected:
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -146,10 +146,6 @@
</span><span class="cx"> thisObject->JSTestJSBuiltinConstructor::~JSTestJSBuiltinConstructor();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestJSBuiltinConstructor::~JSTestJSBuiltinConstructor()
-{
-}
-
</del><span class="cx"> EncodedJSValue jsTestJSBuiltinConstructorConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicCast<JSTestJSBuiltinConstructorPrototype*>(baseValue);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -38,7 +38,6 @@
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* getPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestJSBuiltinConstructor();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -120,8 +120,7 @@
</span><span class="cx"> const ClassInfo JSTestMediaQueryListListener::s_info = { "TestMediaQueryListListener", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestMediaQueryListListener) };
</span><span class="cx">
</span><span class="cx"> JSTestMediaQueryListListener::JSTestMediaQueryListListener(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestMediaQueryListListener>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestMediaQueryListListener>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -141,11 +140,6 @@
</span><span class="cx"> thisObject->JSTestMediaQueryListListener::~JSTestMediaQueryListListener();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestMediaQueryListListener::~JSTestMediaQueryListListener()
-{
- releaseImpl();
-}
-
</del><span class="cx"> EncodedJSValue jsTestMediaQueryListListenerConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> JSTestMediaQueryListListenerPrototype* domObject = jsDynamicCast<JSTestMediaQueryListListenerPrototype*>(baseValue);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestMediaQueryListListener : public JSDOMWrapper {
</del><ins>+class JSTestMediaQueryListListener : public JSDOMWrapperWithImplementation<TestMediaQueryListListener> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestMediaQueryListListener> Base;
</ins><span class="cx"> static JSTestMediaQueryListListener* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestMediaQueryListListener>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestMediaQueryListListener* ptr = new (NotNull, JSC::allocateCell<JSTestMediaQueryListListener>(globalObject->vm().heap)) JSTestMediaQueryListListener(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> static JSC::JSObject* getPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static TestMediaQueryListListener* toWrapped(JSC::JSValue);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestMediaQueryListListener();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -51,11 +50,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- TestMediaQueryListListener& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestMediaQueryListListener* m_impl;
</del><span class="cx"> protected:
</span><span class="cx"> JSTestMediaQueryListListener(JSC::Structure*, JSDOMGlobalObject*, Ref<TestMediaQueryListListener>&&);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -185,8 +185,7 @@
</span><span class="cx"> const ClassInfo JSTestNamedConstructor::s_info = { "TestNamedConstructor", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestNamedConstructor) };
</span><span class="cx">
</span><span class="cx"> JSTestNamedConstructor::JSTestNamedConstructor(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestNamedConstructor>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestNamedConstructor>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -206,11 +205,6 @@
</span><span class="cx"> thisObject->JSTestNamedConstructor::~JSTestNamedConstructor();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestNamedConstructor::~JSTestNamedConstructor()
-{
- releaseImpl();
-}
-
</del><span class="cx"> EncodedJSValue jsTestNamedConstructorConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> JSTestNamedConstructorPrototype* domObject = jsDynamicCast<JSTestNamedConstructorPrototype*>(baseValue);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestNamedConstructor : public JSDOMWrapper {
</del><ins>+class JSTestNamedConstructor : public JSDOMWrapperWithImplementation<TestNamedConstructor> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestNamedConstructor> Base;
</ins><span class="cx"> static JSTestNamedConstructor* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestNamedConstructor>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestNamedConstructor* ptr = new (NotNull, JSC::allocateCell<JSTestNamedConstructor>(globalObject->vm().heap)) JSTestNamedConstructor(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> static JSC::JSObject* getPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static TestNamedConstructor* toWrapped(JSC::JSValue);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestNamedConstructor();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -52,11 +51,6 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSValue getNamedConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- TestNamedConstructor& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestNamedConstructor* m_impl;
</del><span class="cx"> protected:
</span><span class="cx"> JSTestNamedConstructor(JSC::Structure*, JSDOMGlobalObject*, Ref<TestNamedConstructor>&&);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministiccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -141,8 +141,7 @@
</span><span class="cx"> const ClassInfo JSTestNondeterministic::s_info = { "TestNondeterministic", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestNondeterministic) };
</span><span class="cx">
</span><span class="cx"> JSTestNondeterministic::JSTestNondeterministic(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestNondeterministic>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestNondeterministic>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -162,11 +161,6 @@
</span><span class="cx"> thisObject->JSTestNondeterministic::~JSTestNondeterministic();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestNondeterministic::~JSTestNondeterministic()
-{
- releaseImpl();
-}
-
</del><span class="cx"> EncodedJSValue jsTestNondeterministicNondeterministicReadonlyAttr(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> UNUSED_PARAM(state);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNondeterministich"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestNondeterministic : public JSDOMWrapper {
</del><ins>+class JSTestNondeterministic : public JSDOMWrapperWithImplementation<TestNondeterministic> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestNondeterministic> Base;
</ins><span class="cx"> static JSTestNondeterministic* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestNondeterministic>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestNondeterministic* ptr = new (NotNull, JSC::allocateCell<JSTestNondeterministic>(globalObject->vm().heap)) JSTestNondeterministic(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> static JSC::JSObject* getPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static TestNondeterministic* toWrapped(JSC::JSValue);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestNondeterministic();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -51,11 +50,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- TestNondeterministic& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestNondeterministic* m_impl;
</del><span class="cx"> protected:
</span><span class="cx"> JSTestNondeterministic(JSC::Structure*, JSDOMGlobalObject*, Ref<TestNondeterministic>&&);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -707,8 +707,7 @@
</span><span class="cx"> const ClassInfo JSTestObj::s_info = { "TestObject", &Base::s_info, &JSTestObjTable, CREATE_METHOD_TABLE(JSTestObj) };
</span><span class="cx">
</span><span class="cx"> JSTestObj::JSTestObj(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestObj>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestObj>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -728,11 +727,6 @@
</span><span class="cx"> thisObject->JSTestObj::~JSTestObj();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestObj::~JSTestObj()
-{
- releaseImpl();
-}
-
</del><span class="cx"> bool JSTestObj::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot& slot)
</span><span class="cx"> {
</span><span class="cx"> auto* thisObject = jsCast<JSTestObj*>(object);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestObj : public JSDOMWrapper {
</del><ins>+class JSTestObj : public JSDOMWrapperWithImplementation<TestObj> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestObj> Base;
</ins><span class="cx"> static JSTestObj* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestObj>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestObj* ptr = new (NotNull, JSC::allocateCell<JSTestObj>(globalObject->vm().heap)) JSTestObj(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx"> static TestObj* toWrapped(JSC::JSValue);
</span><span class="cx"> static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestObj();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -65,11 +64,6 @@
</span><span class="cx"> JSC::JSValue customMethod(JSC::ExecState&);
</span><span class="cx"> JSC::JSValue customMethodWithArgs(JSC::ExecState&);
</span><span class="cx"> static JSC::JSValue classMethod2(JSC::ExecState&);
</span><del>- TestObj& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestObj* m_impl;
</del><span class="cx"> public:
</span><span class="cx"> static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
</span><span class="cx"> protected:
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -206,8 +206,7 @@
</span><span class="cx"> const ClassInfo JSTestOverloadedConstructors::s_info = { "TestOverloadedConstructors", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestOverloadedConstructors) };
</span><span class="cx">
</span><span class="cx"> JSTestOverloadedConstructors::JSTestOverloadedConstructors(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestOverloadedConstructors>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestOverloadedConstructors>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -227,11 +226,6 @@
</span><span class="cx"> thisObject->JSTestOverloadedConstructors::~JSTestOverloadedConstructors();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestOverloadedConstructors::~JSTestOverloadedConstructors()
-{
- releaseImpl();
-}
-
</del><span class="cx"> EncodedJSValue jsTestOverloadedConstructorsConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> JSTestOverloadedConstructorsPrototype* domObject = jsDynamicCast<JSTestOverloadedConstructorsPrototype*>(baseValue);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestOverloadedConstructors : public JSDOMWrapper {
</del><ins>+class JSTestOverloadedConstructors : public JSDOMWrapperWithImplementation<TestOverloadedConstructors> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestOverloadedConstructors> Base;
</ins><span class="cx"> static JSTestOverloadedConstructors* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestOverloadedConstructors>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestOverloadedConstructors* ptr = new (NotNull, JSC::allocateCell<JSTestOverloadedConstructors>(globalObject->vm().heap)) JSTestOverloadedConstructors(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> static JSC::JSObject* getPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static TestOverloadedConstructors* toWrapped(JSC::JSValue);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestOverloadedConstructors();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -51,11 +50,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- TestOverloadedConstructors& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestOverloadedConstructors* m_impl;
</del><span class="cx"> protected:
</span><span class="cx"> JSTestOverloadedConstructors(JSC::Structure*, JSDOMGlobalObject*, Ref<TestOverloadedConstructors>&&);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -135,8 +135,7 @@
</span><span class="cx"> const ClassInfo JSTestOverrideBuiltins::s_info = { "TestOverrideBuiltins", &Base::s_info, &JSTestOverrideBuiltinsTable, CREATE_METHOD_TABLE(JSTestOverrideBuiltins) };
</span><span class="cx">
</span><span class="cx"> JSTestOverrideBuiltins::JSTestOverrideBuiltins(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestOverrideBuiltins>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestOverrideBuiltins>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -156,11 +155,6 @@
</span><span class="cx"> thisObject->JSTestOverrideBuiltins::~JSTestOverrideBuiltins();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestOverrideBuiltins::~JSTestOverrideBuiltins()
-{
- releaseImpl();
-}
-
</del><span class="cx"> bool JSTestOverrideBuiltins::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot& slot)
</span><span class="cx"> {
</span><span class="cx"> auto* thisObject = jsCast<JSTestOverrideBuiltins*>(object);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestOverrideBuiltins : public JSDOMWrapper {
</del><ins>+class JSTestOverrideBuiltins : public JSDOMWrapperWithImplementation<TestOverrideBuiltins> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestOverrideBuiltins> Base;
</ins><span class="cx"> static JSTestOverrideBuiltins* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestOverrideBuiltins>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestOverrideBuiltins* ptr = new (NotNull, JSC::allocateCell<JSTestOverrideBuiltins>(globalObject->vm().heap)) JSTestOverrideBuiltins(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx"> static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);
</span><span class="cx"> static bool getOwnPropertySlotByIndex(JSC::JSObject*, JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestOverrideBuiltins();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -54,11 +53,6 @@
</span><span class="cx">
</span><span class="cx"> static void getOwnPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode = JSC::EnumerationMode());
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- TestOverrideBuiltins& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestOverrideBuiltins* m_impl;
</del><span class="cx"> public:
</span><span class="cx"> static const unsigned StructureFlags = JSC::HasImpureGetOwnPropertySlot | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | Base::StructureFlags;
</span><span class="cx"> protected:
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -131,8 +131,7 @@
</span><span class="cx"> const ClassInfo JSTestSerializedScriptValueInterface::s_info = { "TestSerializedScriptValueInterface", &Base::s_info, 0, CREATE_METHOD_TABLE(JSTestSerializedScriptValueInterface) };
</span><span class="cx">
</span><span class="cx"> JSTestSerializedScriptValueInterface::JSTestSerializedScriptValueInterface(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestSerializedScriptValueInterface>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestSerializedScriptValueInterface>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -152,11 +151,6 @@
</span><span class="cx"> thisObject->JSTestSerializedScriptValueInterface::~JSTestSerializedScriptValueInterface();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestSerializedScriptValueInterface::~JSTestSerializedScriptValueInterface()
-{
- releaseImpl();
-}
-
</del><span class="cx"> EncodedJSValue jsTestSerializedScriptValueInterfaceValue(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> UNUSED_PARAM(state);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -29,9 +29,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestSerializedScriptValueInterface : public JSDOMWrapper {
</del><ins>+class JSTestSerializedScriptValueInterface : public JSDOMWrapperWithImplementation<TestSerializedScriptValueInterface> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestSerializedScriptValueInterface> Base;
</ins><span class="cx"> static JSTestSerializedScriptValueInterface* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestSerializedScriptValueInterface>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestSerializedScriptValueInterface* ptr = new (NotNull, JSC::allocateCell<JSTestSerializedScriptValueInterface>(globalObject->vm().heap)) JSTestSerializedScriptValueInterface(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx"> static JSC::JSObject* getPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static TestSerializedScriptValueInterface* toWrapped(JSC::JSValue);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestSerializedScriptValueInterface();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -57,11 +56,6 @@
</span><span class="cx"> mutable JSC::WriteBarrier<JSC::Unknown> m_cachedReadonlyValue;
</span><span class="cx"> static void visitChildren(JSCell*, JSC::SlotVisitor&);
</span><span class="cx">
</span><del>- TestSerializedScriptValueInterface& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestSerializedScriptValueInterface* m_impl;
</del><span class="cx"> protected:
</span><span class="cx"> JSTestSerializedScriptValueInterface(JSC::Structure*, JSDOMGlobalObject*, Ref<TestSerializedScriptValueInterface>&&);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -214,8 +214,7 @@
</span><span class="cx"> const ClassInfo JSTestTypedefs::s_info = { "TestTypedefs", &Base::s_info, &JSTestTypedefsTable, CREATE_METHOD_TABLE(JSTestTypedefs) };
</span><span class="cx">
</span><span class="cx"> JSTestTypedefs::JSTestTypedefs(Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestTypedefs>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<TestTypedefs>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -235,11 +234,6 @@
</span><span class="cx"> thisObject->JSTestTypedefs::~JSTestTypedefs();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSTestTypedefs::~JSTestTypedefs()
-{
- releaseImpl();
-}
-
</del><span class="cx"> bool JSTestTypedefs::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot& slot)
</span><span class="cx"> {
</span><span class="cx"> auto* thisObject = jsCast<JSTestTypedefs*>(object);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSTestTypedefs : public JSDOMWrapper {
</del><ins>+class JSTestTypedefs : public JSDOMWrapperWithImplementation<TestTypedefs> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<TestTypedefs> Base;
</ins><span class="cx"> static JSTestTypedefs* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestTypedefs>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSTestTypedefs* ptr = new (NotNull, JSC::allocateCell<JSTestTypedefs>(globalObject->vm().heap)) JSTestTypedefs(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx"> static TestTypedefs* toWrapped(JSC::JSValue);
</span><span class="cx"> static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSTestTypedefs();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -52,11 +51,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- TestTypedefs& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- TestTypedefs* m_impl;
</del><span class="cx"> public:
</span><span class="cx"> static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
</span><span class="cx"> protected:
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSattributecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -116,8 +116,7 @@
</span><span class="cx"> const ClassInfo JSattribute::s_info = { "attribute", &Base::s_info, 0, CREATE_METHOD_TABLE(JSattribute) };
</span><span class="cx">
</span><span class="cx"> JSattribute::JSattribute(Structure* structure, JSDOMGlobalObject* globalObject, Ref<attribute>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<attribute>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -137,11 +136,6 @@
</span><span class="cx"> thisObject->JSattribute::~JSattribute();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSattribute::~JSattribute()
-{
- releaseImpl();
-}
-
</del><span class="cx"> EncodedJSValue jsattributeReadonly(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> UNUSED_PARAM(state);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSattributeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -28,9 +28,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSattribute : public JSDOMWrapper {
</del><ins>+class JSattribute : public JSDOMWrapperWithImplementation<attribute> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<attribute> Base;
</ins><span class="cx"> static JSattribute* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<attribute>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSattribute* ptr = new (NotNull, JSC::allocateCell<JSattribute>(globalObject->vm().heap)) JSattribute(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx"> static JSC::JSObject* getPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static attribute* toWrapped(JSC::JSValue);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSattribute();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -52,11 +51,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- attribute& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- attribute* m_impl;
</del><span class="cx"> protected:
</span><span class="cx"> JSattribute(JSC::Structure*, JSDOMGlobalObject*, Ref<attribute>&&);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSreadonlycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -112,8 +112,7 @@
</span><span class="cx"> const ClassInfo JSreadonly::s_info = { "readonly", &Base::s_info, 0, CREATE_METHOD_TABLE(JSreadonly) };
</span><span class="cx">
</span><span class="cx"> JSreadonly::JSreadonly(Structure* structure, JSDOMGlobalObject* globalObject, Ref<readonly>&& impl)
</span><del>- : JSDOMWrapper(structure, globalObject)
- , m_impl(&impl.leakRef())
</del><ins>+ : JSDOMWrapperWithImplementation<readonly>(structure, globalObject, WTF::move(impl))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -133,11 +132,6 @@
</span><span class="cx"> thisObject->JSreadonly::~JSreadonly();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSreadonly::~JSreadonly()
-{
- releaseImpl();
-}
-
</del><span class="cx"> EncodedJSValue jsreadonlyConstructor(ExecState* state, JSObject* baseValue, EncodedJSValue, PropertyName)
</span><span class="cx"> {
</span><span class="cx"> JSreadonlyPrototype* domObject = jsDynamicCast<JSreadonlyPrototype*>(baseValue);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSreadonlyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.h (190402 => 190403)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.h        2015-10-01 12:35:38 UTC (rev 190402)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.h        2015-10-01 13:07:55 UTC (rev 190403)
</span><span class="lines">@@ -27,9 +27,9 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-class JSreadonly : public JSDOMWrapper {
</del><ins>+class JSreadonly : public JSDOMWrapperWithImplementation<readonly> {
</ins><span class="cx"> public:
</span><del>- typedef JSDOMWrapper Base;
</del><ins>+ typedef JSDOMWrapperWithImplementation<readonly> Base;
</ins><span class="cx"> static JSreadonly* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<readonly>&& impl)
</span><span class="cx"> {
</span><span class="cx"> JSreadonly* ptr = new (NotNull, JSC::allocateCell<JSreadonly>(globalObject->vm().heap)) JSreadonly(structure, globalObject, WTF::move(impl));
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> static JSC::JSObject* getPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static readonly* toWrapped(JSC::JSValue);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span><del>- ~JSreadonly();
</del><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="lines">@@ -51,11 +50,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static JSC::JSValue getConstructor(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- readonly& impl() const { return *m_impl; }
- void releaseImpl() { std::exchange(m_impl, nullptr)->deref(); }
-
-private:
- readonly* m_impl;
</del><span class="cx"> protected:
</span><span class="cx"> JSreadonly(JSC::Structure*, JSDOMGlobalObject*, Ref<readonly>&&);
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>