<!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>[245068] trunk</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/245068">245068</a></dd>
<dt>Author</dt> <dd>rmorisset@apple.com</dd>
<dt>Date</dt> <dd>2019-05-08 14:14:39 -0700 (Wed, 08 May 2019)</dd>
</dl>

<h3>Log Message</h3>
<pre>All prototypes should call didBecomePrototype()
https://bugs.webkit.org/show_bug.cgi?id=196315

Reviewed by Saam Barati.

This changelog already landed, but the commit was missing the actual changes.

JSTests:

* stress/function-prototype-indexed-accessor.js: Added.

Source/JavaScriptCore:

Otherwise we won't remember to run haveABadTime() when someone adds to them an indexed accessor.

I added a check used in both Structure::finishCreation() and Structure::changePrototypeTransition to make sure we don't
create structures with invalid prototypes.
It found a lot of objects that are used as prototypes in JSGlobalObject and yet were missing didBecomePrototype() in their finishCreation().
Somewhat surprisingly, some of them have names like FunctionConstructor and not only FooPrototype.

* runtime/BigIntPrototype.cpp:
(JSC::BigIntPrototype::finishCreation):
* runtime/BooleanPrototype.cpp:
(JSC::BooleanPrototype::finishCreation):
* runtime/DatePrototype.cpp:
(JSC::DatePrototype::finishCreation):
* runtime/ErrorConstructor.cpp:
(JSC::ErrorConstructor::finishCreation):
* runtime/ErrorPrototype.cpp:
(JSC::ErrorPrototype::finishCreation):
* runtime/FunctionConstructor.cpp:
(JSC::FunctionConstructor::finishCreation):
* runtime/FunctionPrototype.cpp:
(JSC::FunctionPrototype::finishCreation):
* runtime/IntlCollatorPrototype.cpp:
(JSC::IntlCollatorPrototype::finishCreation):
* runtime/IntlDateTimeFormatPrototype.cpp:
(JSC::IntlDateTimeFormatPrototype::finishCreation):
* runtime/IntlNumberFormatPrototype.cpp:
(JSC::IntlNumberFormatPrototype::finishCreation):
* runtime/IntlPluralRulesPrototype.cpp:
(JSC::IntlPluralRulesPrototype::finishCreation):
* runtime/JSArrayBufferPrototype.cpp:
(JSC::JSArrayBufferPrototype::finishCreation):
* runtime/JSDataViewPrototype.cpp:
(JSC::JSDataViewPrototype::finishCreation):
* runtime/JSGenericTypedArrayViewPrototypeInlines.h:
(JSC::JSGenericTypedArrayViewPrototype<ViewClass>::finishCreation):
* runtime/JSGlobalObject.cpp:
(JSC::createConsoleProperty):
* runtime/JSPromisePrototype.cpp:
(JSC::JSPromisePrototype::finishCreation):
* runtime/JSTypedArrayViewConstructor.cpp:
(JSC::JSTypedArrayViewConstructor::finishCreation):
* runtime/JSTypedArrayViewPrototype.cpp:
(JSC::JSTypedArrayViewPrototype::finishCreation):
* runtime/NumberPrototype.cpp:
(JSC::NumberPrototype::finishCreation):
* runtime/RegExpPrototype.cpp:
(JSC::RegExpPrototype::finishCreation):
* runtime/StringPrototype.cpp:
(JSC::StringPrototype::finishCreation):
* runtime/Structure.cpp:
(JSC::Structure::isValidPrototype):
(JSC::Structure::changePrototypeTransition):
* runtime/Structure.h:
* runtime/SymbolPrototype.cpp:
(JSC::SymbolPrototype::finishCreation):
* wasm/js/WebAssemblyCompileErrorPrototype.cpp:
(JSC::WebAssemblyCompileErrorPrototype::finishCreation):
* wasm/js/WebAssemblyInstancePrototype.cpp:
(JSC::WebAssemblyInstancePrototype::finishCreation):
* wasm/js/WebAssemblyLinkErrorPrototype.cpp:
(JSC::WebAssemblyLinkErrorPrototype::finishCreation):
* wasm/js/WebAssemblyMemoryPrototype.cpp:
(JSC::WebAssemblyMemoryPrototype::finishCreation):
* wasm/js/WebAssemblyModulePrototype.cpp:
(JSC::WebAssemblyModulePrototype::finishCreation):
* wasm/js/WebAssemblyPrototype.cpp:
(JSC::WebAssemblyPrototype::finishCreation):
* wasm/js/WebAssemblyRuntimeErrorPrototype.cpp:
(JSC::WebAssemblyRuntimeErrorPrototype::finishCreation):
* wasm/js/WebAssemblyTablePrototype.cpp:
(JSC::WebAssemblyTablePrototype::finishCreation):

Source/WebCore:

It was found by existing tests, with the new assert in JSC::Structure

* bindings/js/JSWindowProxy.cpp:
(WebCore::JSWindowProxy::setWindow):
* bindings/scripts/CodeGeneratorJS.pm:
(GeneratePrototypeDeclaration):
(GenerateConstructorHelperMethods):
* bindings/scripts/test/JS/JSInterfaceName.cpp:
(WebCore::JSInterfaceNamePrototype::JSInterfaceNamePrototype):
* bindings/scripts/test/JS/JSMapLike.cpp:
(WebCore::JSMapLikePrototype::JSMapLikePrototype):
* bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
(WebCore::JSReadOnlyMapLikePrototype::JSReadOnlyMapLikePrototype):
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::JSTestActiveDOMObjectPrototype::JSTestActiveDOMObjectPrototype):
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
(WebCore::JSTestCEReactionsPrototype::JSTestCEReactionsPrototype):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
(WebCore::JSTestCEReactionsStringifierPrototype::JSTestCEReactionsStringifierPrototype):
* bindings/scripts/test/JS/JSTestCallTracer.cpp:
(WebCore::JSTestCallTracerPrototype::JSTestCallTracerPrototype):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::JSTestClassWithJSBuiltinConstructorPrototype::JSTestClassWithJSBuiltinConstructorPrototype):
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
(WebCore::JSTestDOMJITPrototype::JSTestDOMJITPrototype):
(WebCore::JSTestDOMJITConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
(WebCore::JSTestEnabledBySettingPrototype::JSTestEnabledBySettingPrototype):
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::JSTestEventConstructorPrototype::JSTestEventConstructorPrototype):
(WebCore::JSTestEventConstructorConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::JSTestEventTargetPrototype::JSTestEventTargetPrototype):
(WebCore::JSTestEventTargetConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestException.cpp:
(WebCore::JSTestExceptionPrototype::JSTestExceptionPrototype):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::JSTestGenerateIsReachablePrototype::JSTestGenerateIsReachablePrototype):
* bindings/scripts/test/JS/JSTestGlobalObject.h:
(WebCore::JSTestGlobalObjectPrototype::JSTestGlobalObjectPrototype):
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestIndexedSetterNoIdentifierPrototype::JSTestIndexedSetterNoIdentifierPrototype):
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
(WebCore::JSTestIndexedSetterThrowingExceptionPrototype::JSTestIndexedSetterThrowingExceptionPrototype):
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestIndexedSetterWithIdentifierPrototype::JSTestIndexedSetterWithIdentifierPrototype):
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterfacePrototype::JSTestInterfacePrototype):
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
(WebCore::JSTestInterfaceLeadingUnderscorePrototype::JSTestInterfaceLeadingUnderscorePrototype):
* bindings/scripts/test/JS/JSTestIterable.cpp:
(WebCore::JSTestIterablePrototype::JSTestIterablePrototype):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::JSTestJSBuiltinConstructorPrototype::JSTestJSBuiltinConstructorPrototype):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::JSTestMediaQueryListListenerPrototype::JSTestMediaQueryListListenerPrototype):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterNoIdentifierPrototype::JSTestNamedAndIndexedSetterNoIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
(WebCore::JSTestNamedAndIndexedSetterThrowingExceptionPrototype::JSTestNamedAndIndexedSetterThrowingExceptionPrototype):
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedAndIndexedSetterWithIdentifierPrototype::JSTestNamedAndIndexedSetterWithIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructorPrototype::JSTestNamedConstructorPrototype):
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
(WebCore::JSTestNamedDeleterNoIdentifierPrototype::JSTestNamedDeleterNoIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
(WebCore::JSTestNamedDeleterThrowingExceptionPrototype::JSTestNamedDeleterThrowingExceptionPrototype):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
(WebCore::JSTestNamedDeleterWithIdentifierPrototype::JSTestNamedDeleterWithIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
(WebCore::JSTestNamedDeleterWithIndexedGetterPrototype::JSTestNamedDeleterWithIndexedGetterPrototype):
* bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
(WebCore::JSTestNamedGetterCallWithPrototype::JSTestNamedGetterCallWithPrototype):
* bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
(WebCore::JSTestNamedGetterNoIdentifierPrototype::JSTestNamedGetterNoIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
(WebCore::JSTestNamedGetterWithIdentifierPrototype::JSTestNamedGetterWithIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
(WebCore::JSTestNamedSetterNoIdentifierPrototype::JSTestNamedSetterNoIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
(WebCore::JSTestNamedSetterThrowingExceptionPrototype::JSTestNamedSetterThrowingExceptionPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
(WebCore::JSTestNamedSetterWithIdentifierPrototype::JSTestNamedSetterWithIdentifierPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetterPrototype::JSTestNamedSetterWithIndexedGetterPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetterPrototype::JSTestNamedSetterWithIndexedGetterAndSetterPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
(WebCore::JSTestNamedSetterWithOverrideBuiltinsPrototype::JSTestNamedSetterWithOverrideBuiltinsPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
(WebCore::JSTestNamedSetterWithUnforgablePropertiesPrototype::JSTestNamedSetterWithUnforgablePropertiesPrototype):
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsPrototype::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsPrototype):
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::JSTestNodePrototype::JSTestNodePrototype):
(WebCore::JSTestNodeConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObjPrototype::JSTestObjPrototype):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::JSTestOverloadedConstructorsPrototype::JSTestOverloadedConstructorsPrototype):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::JSTestOverloadedConstructorsWithSequencePrototype::JSTestOverloadedConstructorsWithSequencePrototype):
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
(WebCore::JSTestOverrideBuiltinsPrototype::JSTestOverrideBuiltinsPrototype):
* bindings/scripts/test/JS/JSTestPluginInterface.cpp:
(WebCore::JSTestPluginInterfacePrototype::JSTestPluginInterfacePrototype):
* bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
(WebCore::JSTestPromiseRejectionEventPrototype::JSTestPromiseRejectionEventPrototype):
(WebCore::JSTestPromiseRejectionEventConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestSerialization.cpp:
(WebCore::JSTestSerializationPrototype::JSTestSerializationPrototype):
* bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:
(WebCore::JSTestSerializationIndirectInheritancePrototype::JSTestSerializationIndirectInheritancePrototype):
(WebCore::JSTestSerializationIndirectInheritanceConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
(WebCore::JSTestSerializationInheritPrototype::JSTestSerializationInheritPrototype):
(WebCore::JSTestSerializationInheritConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
(WebCore::JSTestSerializationInheritFinalPrototype::JSTestSerializationInheritFinalPrototype):
(WebCore::JSTestSerializationInheritFinalConstructor::prototypeForStructure):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::JSTestSerializedScriptValueInterfacePrototype::JSTestSerializedScriptValueInterfacePrototype):
* bindings/scripts/test/JS/JSTestStringifier.cpp:
(WebCore::JSTestStringifierPrototype::JSTestStringifierPrototype):
* bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
(WebCore::JSTestStringifierAnonymousOperationPrototype::JSTestStringifierAnonymousOperationPrototype):
* bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
(WebCore::JSTestStringifierNamedOperationPrototype::JSTestStringifierNamedOperationPrototype):
* bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
(WebCore::JSTestStringifierOperationImplementedAsPrototype::JSTestStringifierOperationImplementedAsPrototype):
* bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
(WebCore::JSTestStringifierOperationNamedToStringPrototype::JSTestStringifierOperationNamedToStringPrototype):
* bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
(WebCore::JSTestStringifierReadOnlyAttributePrototype::JSTestStringifierReadOnlyAttributePrototype):
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
(WebCore::JSTestStringifierReadWriteAttributePrototype::JSTestStringifierReadWriteAttributePrototype):
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefsPrototype::JSTestTypedefsPrototype):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkJSTestsChangeLog">trunk/JSTests/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeBigIntPrototypecpp">trunk/Source/JavaScriptCore/runtime/BigIntPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeBooleanPrototypecpp">trunk/Source/JavaScriptCore/runtime/BooleanPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeDatePrototypecpp">trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeErrorConstructorcpp">trunk/Source/JavaScriptCore/runtime/ErrorConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeErrorPrototypecpp">trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFunctionConstructorcpp">trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFunctionPrototypecpp">trunk/Source/JavaScriptCore/runtime/FunctionPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlCollatorPrototypecpp">trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlDateTimeFormatPrototypecpp">trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlNumberFormatPrototypecpp">trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlPluralRulesPrototypecpp">trunk/Source/JavaScriptCore/runtime/IntlPluralRulesPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSArrayBufferPrototypecpp">trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSDataViewPrototypecpp">trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewPrototypeInlinesh">trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp">trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSPromisePrototypecpp">trunk/Source/JavaScriptCore/runtime/JSPromisePrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSTypedArrayViewConstructorcpp">trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSTypedArrayViewPrototypecpp">trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeNumberPrototypecpp">trunk/Source/JavaScriptCore/runtime/NumberPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeRegExpPrototypecpp">trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStringPrototypecpp">trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructurecpp">trunk/Source/JavaScriptCore/runtime/Structure.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructureh">trunk/Source/JavaScriptCore/runtime/Structure.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSymbolPrototypecpp">trunk/Source/JavaScriptCore/runtime/SymbolPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyCompileErrorPrototypecpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyCompileErrorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyInstancePrototypecpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyInstancePrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyLinkErrorPrototypecpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyLinkErrorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyMemoryPrototypecpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyModulePrototypecpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyPrototypecpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyRuntimeErrorPrototypecpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyRuntimeErrorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyTablePrototypecpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWindowProxycpp">trunk/Source/WebCore/bindings/js/JSWindowProxy.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSInterfaceNamecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSMapLikecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSReadOnlyMapLikecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsStringifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCallTracercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestDOMJITcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEnabledBySettingcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGlobalObjecth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestIndexedSetterNoIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestIndexedSetterThrowingExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestIndexedSetterWithIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceLeadingUnderscorecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestIterablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedAndIndexedSetterNoIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedAndIndexedSetterThrowingExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedAndIndexedSetterWithIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterNoIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterThrowingExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterWithIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterWithIndexedGettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedGetterCallWithcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedGetterNoIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedGetterWithIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterNoIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterThrowingExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithIdentifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithIndexedGettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithIndexedGetterAndSettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithOverrideBuiltinscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithUnforgablePropertiescpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsWithSequencecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestPluginInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestPromiseRejectionEventcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializationcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializationIndirectInheritancecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializationInheritcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializationInheritFinalcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifierAnonymousOperationcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifierNamedOperationcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifierOperationImplementedAscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifierOperationNamedToStringcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifierReadOnlyAttributecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestStringifierReadWriteAttributecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkJSTestsstressfunctionprototypeindexedaccessorjs">trunk/JSTests/stress/function-prototype-indexed-accessor.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkJSTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/JSTests/ChangeLog (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/JSTests/ChangeLog  2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/JSTests/ChangeLog     2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2019-05-08  Robin Morisset  <rmorisset@apple.com>
+
+        All prototypes should call didBecomePrototype()
+        https://bugs.webkit.org/show_bug.cgi?id=196315
+
+        Reviewed by Saam Barati.
+
+        This changelog already landed, but the commit was missing the actual changes.
+
+        * stress/function-prototype-indexed-accessor.js: Added.
+
</ins><span class="cx"> 2019-05-08  Caio Lima  <ticaiolima@gmail.com>
</span><span class="cx"> 
</span><span class="cx">         [BigInt] Add ValueMod into DFG
</span></span></pre></div>
<a id="trunkJSTestsstressfunctionprototypeindexedaccessorjs"></a>
<div class="addfile"><h4>Added: trunk/JSTests/stress/function-prototype-indexed-accessor.js (0 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/JSTests/stress/function-prototype-indexed-accessor.js                              (rev 0)
+++ trunk/JSTests/stress/function-prototype-indexed-accessor.js 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+Function[0] = 0;
+Object.defineProperty(Function.__proto__, '42', { set: ()=>{} });
+Function[1000] = 0;
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/ChangeLog       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -1,3 +1,84 @@
</span><ins>+2019-05-08  Robin Morisset  <rmorisset@apple.com>
+
+        All prototypes should call didBecomePrototype()
+        https://bugs.webkit.org/show_bug.cgi?id=196315
+
+        Reviewed by Saam Barati.
+
+        This changelog already landed, but the commit was missing the actual changes.
+
+        Otherwise we won't remember to run haveABadTime() when someone adds to them an indexed accessor.
+
+        I added a check used in both Structure::finishCreation() and Structure::changePrototypeTransition to make sure we don't
+        create structures with invalid prototypes.
+        It found a lot of objects that are used as prototypes in JSGlobalObject and yet were missing didBecomePrototype() in their finishCreation().
+        Somewhat surprisingly, some of them have names like FunctionConstructor and not only FooPrototype.
+
+        * runtime/BigIntPrototype.cpp:
+        (JSC::BigIntPrototype::finishCreation):
+        * runtime/BooleanPrototype.cpp:
+        (JSC::BooleanPrototype::finishCreation):
+        * runtime/DatePrototype.cpp:
+        (JSC::DatePrototype::finishCreation):
+        * runtime/ErrorConstructor.cpp:
+        (JSC::ErrorConstructor::finishCreation):
+        * runtime/ErrorPrototype.cpp:
+        (JSC::ErrorPrototype::finishCreation):
+        * runtime/FunctionConstructor.cpp:
+        (JSC::FunctionConstructor::finishCreation):
+        * runtime/FunctionPrototype.cpp:
+        (JSC::FunctionPrototype::finishCreation):
+        * runtime/IntlCollatorPrototype.cpp:
+        (JSC::IntlCollatorPrototype::finishCreation):
+        * runtime/IntlDateTimeFormatPrototype.cpp:
+        (JSC::IntlDateTimeFormatPrototype::finishCreation):
+        * runtime/IntlNumberFormatPrototype.cpp:
+        (JSC::IntlNumberFormatPrototype::finishCreation):
+        * runtime/IntlPluralRulesPrototype.cpp:
+        (JSC::IntlPluralRulesPrototype::finishCreation):
+        * runtime/JSArrayBufferPrototype.cpp:
+        (JSC::JSArrayBufferPrototype::finishCreation):
+        * runtime/JSDataViewPrototype.cpp:
+        (JSC::JSDataViewPrototype::finishCreation):
+        * runtime/JSGenericTypedArrayViewPrototypeInlines.h:
+        (JSC::JSGenericTypedArrayViewPrototype<ViewClass>::finishCreation):
+        * runtime/JSGlobalObject.cpp:
+        (JSC::createConsoleProperty):
+        * runtime/JSPromisePrototype.cpp:
+        (JSC::JSPromisePrototype::finishCreation):
+        * runtime/JSTypedArrayViewConstructor.cpp:
+        (JSC::JSTypedArrayViewConstructor::finishCreation):
+        * runtime/JSTypedArrayViewPrototype.cpp:
+        (JSC::JSTypedArrayViewPrototype::finishCreation):
+        * runtime/NumberPrototype.cpp:
+        (JSC::NumberPrototype::finishCreation):
+        * runtime/RegExpPrototype.cpp:
+        (JSC::RegExpPrototype::finishCreation):
+        * runtime/StringPrototype.cpp:
+        (JSC::StringPrototype::finishCreation):
+        * runtime/Structure.cpp:
+        (JSC::Structure::isValidPrototype):
+        (JSC::Structure::changePrototypeTransition):
+        * runtime/Structure.h:
+        * runtime/SymbolPrototype.cpp:
+        (JSC::SymbolPrototype::finishCreation):
+        * wasm/js/WebAssemblyCompileErrorPrototype.cpp:
+        (JSC::WebAssemblyCompileErrorPrototype::finishCreation):
+        * wasm/js/WebAssemblyInstancePrototype.cpp:
+        (JSC::WebAssemblyInstancePrototype::finishCreation):
+        * wasm/js/WebAssemblyLinkErrorPrototype.cpp:
+        (JSC::WebAssemblyLinkErrorPrototype::finishCreation):
+        * wasm/js/WebAssemblyMemoryPrototype.cpp:
+        (JSC::WebAssemblyMemoryPrototype::finishCreation):
+        * wasm/js/WebAssemblyModulePrototype.cpp:
+        (JSC::WebAssemblyModulePrototype::finishCreation):
+        * wasm/js/WebAssemblyPrototype.cpp:
+        (JSC::WebAssemblyPrototype::finishCreation):
+        * wasm/js/WebAssemblyRuntimeErrorPrototype.cpp:
+        (JSC::WebAssemblyRuntimeErrorPrototype::finishCreation):
+        * wasm/js/WebAssemblyTablePrototype.cpp:
+        (JSC::WebAssemblyTablePrototype::finishCreation):
+
</ins><span class="cx"> 2019-05-08  Keith Miller  <keith_miller@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Remove Gigacage from arm64 and use PAC for arm64e instead
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeBigIntPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/BigIntPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/BigIntPrototype.cpp  2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/BigIntPrototype.cpp     2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -73,6 +73,7 @@
</span><span class="cx">     Base::finishCreation(vm);
</span><span class="cx">     ASSERT(inherits(vm, info()));
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "BigInt"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ------------------------------ Functions ---------------------------
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeBooleanPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/BooleanPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/BooleanPrototype.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/BooleanPrototype.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx"> {
</span><span class="cx">     Base::finishCreation(vm);
</span><span class="cx">     setInternalValue(vm, jsBoolean(false));
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(inherits(vm, info()));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeDatePrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -515,6 +515,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSFunction* toPrimitiveFunction = JSFunction::create(vm, globalObject, 1, "[Symbol.toPrimitive]"_s, dateProtoFuncToPrimitiveSymbol, NoIntrinsic);
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->toPrimitiveSymbol, toPrimitiveFunction, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> 
</span><span class="cx">     // The constructor will be added later, after DateConstructor has been built.
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeErrorConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ErrorConstructor.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ErrorConstructor.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/ErrorConstructor.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -48,6 +48,7 @@
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->prototype, errorPrototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly);
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->stackTraceLimit, jsNumber(globalObject(vm)->stackTraceLimit().valueOr(Options::defaultErrorStackTraceLimit())), static_cast<unsigned>(PropertyAttribute::None));
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ECMA 15.9.3
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeErrorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp   2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp      2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -66,6 +66,7 @@
</span><span class="cx">     ASSERT(inherits(vm, info()));
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->name, jsString(&vm, name), static_cast<unsigned>(PropertyAttribute::DontEnum));
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->message, jsEmptyString(&vm), static_cast<unsigned>(PropertyAttribute::DontEnum));
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ------------------------------ Functions ---------------------------
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFunctionConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -61,6 +61,7 @@
</span><span class="cx">     Base::finishCreation(vm, vm.propertyNames->Function.string(), NameVisibility::Visible, NameAdditionMode::WithoutStructureTransition);
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->prototype, functionPrototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly);
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ECMA 15.3.2 The Function Constructor
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFunctionPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/FunctionPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FunctionPrototype.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/FunctionPrototype.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -54,6 +54,7 @@
</span><span class="cx"> {
</span><span class="cx">     Base::finishCreation(vm, name, NameVisibility::Visible, NameAdditionMode::WithoutStructureTransition);
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FunctionPrototype::addFunctionProperties(VM& vm, JSGlobalObject* globalObject, JSFunction** callFunction, JSFunction** applyFunction, JSFunction** hasInstanceSymbolFunction)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlCollatorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -76,6 +76,7 @@
</span><span class="cx">     Base::finishCreation(vm);
</span><span class="cx"> 
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Object"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL IntlCollatorFuncCompare(ExecState* state)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlDateTimeFormatPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -90,6 +90,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Object"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL IntlDateTimeFormatFuncFormatDateTime(ExecState* state)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlNumberFormatPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -88,6 +88,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Object"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL IntlNumberFormatFuncFormatNumber(ExecState* state)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlPluralRulesPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlPluralRulesPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlPluralRulesPrototype.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/IntlPluralRulesPrototype.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -75,6 +75,7 @@
</span><span class="cx">     Base::finishCreation(vm);
</span><span class="cx"> 
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Object"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL IntlPluralRulesPrototypeFuncSelect(ExecState* state)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArrayBufferPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp   2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp      2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -121,6 +121,7 @@
</span><span class="cx">         JSC_NATIVE_GETTER_WITHOUT_TRANSITION(vm.propertyNames->byteLength, arrayBufferProtoGetterFuncByteLength, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
</span><span class="cx">     else
</span><span class="cx">         JSC_NATIVE_GETTER_WITHOUT_TRANSITION(vm.propertyNames->byteLength, sharedArrayBufferProtoGetterFuncByteLength, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSArrayBufferPrototype* JSArrayBufferPrototype::create(VM& vm, JSGlobalObject* globalObject, Structure* structure, ArrayBufferSharingMode sharingMode)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSDataViewPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -110,6 +110,7 @@
</span><span class="cx"> {
</span><span class="cx">     Base::finishCreation(vm);
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "DataView"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Structure* JSDataViewPrototype::createStructure(
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewPrototypeInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx"> 
</span><span class="cx">     putDirect(vm, vm.propertyNames->BYTES_PER_ELEMENT, jsNumber(ViewClass::elementSize), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly | PropertyAttribute::DontDelete);
</span><span class="cx"> 
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template<typename ViewClass>
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp   2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp      2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -232,7 +232,9 @@
</span><span class="cx"> static JSValue createConsoleProperty(VM& vm, JSObject* object)
</span><span class="cx"> {
</span><span class="cx">     JSGlobalObject* global = jsCast<JSGlobalObject*>(object);
</span><del>-    return ConsoleObject::create(vm, global, ConsoleObject::createStructure(vm, global, constructEmptyObject(global->globalExec())));
</del><ins>+    JSValue prototype = constructEmptyObject(global->globalExec());
+    prototype.getObject()->didBecomePrototype();
+    return ConsoleObject::create(vm, global, ConsoleObject::createStructure(vm, global, prototype));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL makeBoundFunction(ExecState* exec)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSPromisePrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSPromisePrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSPromisePrototype.cpp       2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/JSPromisePrototype.cpp  2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -77,6 +77,7 @@
</span><span class="cx"> {
</span><span class="cx">     Base::finishCreation(vm);
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Promise"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSPromisePrototype::addOwnInternalSlots(VM& vm, JSGlobalObject* globalObject)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSTypedArrayViewConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewConstructor.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewConstructor.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewConstructor.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -55,6 +55,8 @@
</span><span class="cx"> 
</span><span class="cx">     JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->of, typedArrayConstructorOfCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
</span><span class="cx">     JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->from, typedArrayConstructorFromCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
</span><ins>+
+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Structure* JSTypedArrayViewConstructor::createStructure(
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSTypedArrayViewPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -334,6 +334,7 @@
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->builtinNames().valuesPublicName(), valuesFunction, static_cast<unsigned>(PropertyAttribute::DontEnum));
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->iteratorSymbol, valuesFunction, static_cast<unsigned>(PropertyAttribute::DontEnum));
</span><span class="cx"> 
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSTypedArrayViewPrototype* JSTypedArrayViewPrototype::create(
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNumberPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/NumberPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NumberPrototype.cpp  2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/NumberPrototype.cpp     2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -82,6 +82,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->toString, numberProtoFuncToString, static_cast<unsigned>(PropertyAttribute::DontEnum), 1, NumberPrototypeToStringIntrinsic);
</span><span class="cx">     ASSERT(inherits(vm, info()));
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ------------------------------ Functions ---------------------------
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp  2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp     2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -81,6 +81,8 @@
</span><span class="cx">     JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->searchSymbol, regExpPrototypeSearchCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
</span><span class="cx">     JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->splitSymbol, regExpPrototypeSplitCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
</span><span class="cx">     JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->test, regExpPrototypeTestCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
</span><ins>+
+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ------------------------------ Functions ---------------------------
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStringPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp  2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp     2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -172,6 +172,8 @@
</span><span class="cx"> 
</span><span class="cx">     // The constructor will be added later, after StringConstructor has been built
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
</span><ins>+
+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> StringPrototype* StringPrototype::create(VM& vm, JSGlobalObject* globalObject, Structure* structure)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructurecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Structure.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Structure.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/Structure.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -321,6 +321,11 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool Structure::isValidPrototype(JSValue prototype)
+{
+    return prototype.isNull() || (prototype.isObject() && prototype.getObject()->mayBePrototype());
+}
+
</ins><span class="cx"> void Structure::findStructuresAndMapForMaterialization(Vector<Structure*, 8>& structures, Structure*& structure, PropertyTable*& table)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(structures.isEmpty());
</span><span class="lines">@@ -544,7 +549,7 @@
</span><span class="cx"> 
</span><span class="cx"> Structure* Structure::changePrototypeTransition(VM& vm, Structure* structure, JSValue prototype, DeferredStructureTransitionWatchpointFire& deferred)
</span><span class="cx"> {
</span><del>-    ASSERT(prototype.isObject() || prototype.isNull());
</del><ins>+    ASSERT(isValidPrototype(prototype));
</ins><span class="cx"> 
</span><span class="cx">     DeferGC deferGC(vm.heap);
</span><span class="cx">     Structure* transition = create(vm, structure, &deferred);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructureh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Structure.h (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Structure.h  2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/Structure.h     2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx">     void finishCreation(VM& vm)
</span><span class="cx">     {
</span><span class="cx">         Base::finishCreation(vm);
</span><del>-        ASSERT(m_prototype.get().isEmpty() || m_prototype.isObject() || m_prototype.isNull());
</del><ins>+        ASSERT(m_prototype.get().isEmpty() || isValidPrototype(m_prototype.get()));
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(VM& vm, const Structure* previous)
</span><span class="lines">@@ -680,6 +680,8 @@
</span><span class="cx"> 
</span><span class="cx">     void checkConsistency();
</span><span class="cx"> 
</span><ins>+    JS_EXPORT_PRIVATE static bool isValidPrototype(JSValue);
+
</ins><span class="cx">     // This may grab the lock, or not. Do not call when holding the Structure's lock.
</span><span class="cx">     PropertyTable* ensurePropertyTableIfNotEmpty(VM& vm)
</span><span class="cx">     {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSymbolPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SymbolPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SymbolPrototype.cpp  2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/runtime/SymbolPrototype.cpp     2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -67,6 +67,8 @@
</span><span class="cx"> 
</span><span class="cx">     JSFunction* toPrimitiveFunction = JSFunction::create(vm, globalObject, 1, "[Symbol.toPrimitive]"_s, symbolProtoFuncValueOf, NoIntrinsic);
</span><span class="cx">     putDirectWithoutTransition(vm, vm.propertyNames->toPrimitiveSymbol, toPrimitiveFunction, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
</span><ins>+
+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ------------------------------ Functions ---------------------------
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyCompileErrorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyCompileErrorPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyCompileErrorPrototype.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyCompileErrorPrototype.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -57,6 +57,7 @@
</span><span class="cx"> void WebAssemblyCompileErrorPrototype::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx">     Base::finishCreation(vm);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebAssemblyCompileErrorPrototype::WebAssemblyCompileErrorPrototype(VM& vm, Structure* structure)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyInstancePrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyInstancePrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyInstancePrototype.cpp     2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyInstancePrototype.cpp        2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -86,6 +86,7 @@
</span><span class="cx"> void WebAssemblyInstancePrototype::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx">     Base::finishCreation(vm);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebAssemblyInstancePrototype::WebAssemblyInstancePrototype(VM& vm, Structure* structure)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyLinkErrorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyLinkErrorPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyLinkErrorPrototype.cpp    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyLinkErrorPrototype.cpp       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -57,6 +57,7 @@
</span><span class="cx"> void WebAssemblyLinkErrorPrototype::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx">     Base::finishCreation(vm);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebAssemblyLinkErrorPrototype::WebAssemblyLinkErrorPrototype(VM& vm, Structure* structure)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyMemoryPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp       2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp  2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -109,6 +109,7 @@
</span><span class="cx"> {
</span><span class="cx">     Base::finishCreation(vm);
</span><span class="cx">     ASSERT(inherits(vm, info()));
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebAssemblyMemoryPrototype::WebAssemblyMemoryPrototype(VM& vm, Structure* structure)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyModulePrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp       2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp  2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -56,6 +56,7 @@
</span><span class="cx"> void WebAssemblyModulePrototype::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx">     Base::finishCreation(vm);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebAssemblyModulePrototype::WebAssemblyModulePrototype(VM& vm, Structure* structure)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp     2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp        2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -381,6 +381,8 @@
</span><span class="cx">         JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION("compileStreaming", webAssemblyPrototypeCompileStreamingCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
</span><span class="cx">         JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION("instantiateStreaming", webAssemblyPrototypeInstantiateStreamingCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
</span><span class="cx">     }
</span><ins>+
+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebAssemblyPrototype::WebAssemblyPrototype(VM& vm, Structure* structure)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyRuntimeErrorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyRuntimeErrorPrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyRuntimeErrorPrototype.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyRuntimeErrorPrototype.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -57,6 +57,7 @@
</span><span class="cx"> void WebAssemblyRuntimeErrorPrototype::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx">     Base::finishCreation(vm);
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebAssemblyRuntimeErrorPrototype::WebAssemblyRuntimeErrorPrototype(VM& vm, Structure* structure)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyTablePrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -164,6 +164,7 @@
</span><span class="cx"> {
</span><span class="cx">     Base::finishCreation(vm);
</span><span class="cx">     ASSERT(inherits(vm, info()));
</span><ins>+    didBecomePrototype();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebAssemblyTablePrototype::WebAssemblyTablePrototype(VM& vm, Structure* structure)
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/ChangeLog      2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -1,3 +1,152 @@
</span><ins>+2019-05-08  Robin Morisset  <rmorisset@apple.com>
+
+        All prototypes should call didBecomePrototype()
+        https://bugs.webkit.org/show_bug.cgi?id=196315
+
+        Reviewed by Saam Barati.
+
+        This changelog already landed, but the commit was missing the actual changes.
+
+        It was found by existing tests, with the new assert in JSC::Structure
+
+        * bindings/js/JSWindowProxy.cpp:
+        (WebCore::JSWindowProxy::setWindow):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GeneratePrototypeDeclaration):
+        (GenerateConstructorHelperMethods):
+        * bindings/scripts/test/JS/JSInterfaceName.cpp:
+        (WebCore::JSInterfaceNamePrototype::JSInterfaceNamePrototype):
+        * bindings/scripts/test/JS/JSMapLike.cpp:
+        (WebCore::JSMapLikePrototype::JSMapLikePrototype):
+        * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
+        (WebCore::JSReadOnlyMapLikePrototype::JSReadOnlyMapLikePrototype):
+        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
+        (WebCore::JSTestActiveDOMObjectPrototype::JSTestActiveDOMObjectPrototype):
+        * bindings/scripts/test/JS/JSTestCEReactions.cpp:
+        (WebCore::JSTestCEReactionsPrototype::JSTestCEReactionsPrototype):
+        * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
+        (WebCore::JSTestCEReactionsStringifierPrototype::JSTestCEReactionsStringifierPrototype):
+        * bindings/scripts/test/JS/JSTestCallTracer.cpp:
+        (WebCore::JSTestCallTracerPrototype::JSTestCallTracerPrototype):
+        * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
+        (WebCore::JSTestClassWithJSBuiltinConstructorPrototype::JSTestClassWithJSBuiltinConstructorPrototype):
+        * bindings/scripts/test/JS/JSTestDOMJIT.cpp:
+        (WebCore::JSTestDOMJITPrototype::JSTestDOMJITPrototype):
+        (WebCore::JSTestDOMJITConstructor::prototypeForStructure):
+        * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
+        (WebCore::JSTestEnabledBySettingPrototype::JSTestEnabledBySettingPrototype):
+        * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
+        (WebCore::JSTestEventConstructorPrototype::JSTestEventConstructorPrototype):
+        (WebCore::JSTestEventConstructorConstructor::prototypeForStructure):
+        * bindings/scripts/test/JS/JSTestEventTarget.cpp:
+        (WebCore::JSTestEventTargetPrototype::JSTestEventTargetPrototype):
+        (WebCore::JSTestEventTargetConstructor::prototypeForStructure):
+        * bindings/scripts/test/JS/JSTestException.cpp:
+        (WebCore::JSTestExceptionPrototype::JSTestExceptionPrototype):
+        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
+        (WebCore::JSTestGenerateIsReachablePrototype::JSTestGenerateIsReachablePrototype):
+        * bindings/scripts/test/JS/JSTestGlobalObject.h:
+        (WebCore::JSTestGlobalObjectPrototype::JSTestGlobalObjectPrototype):
+        * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
+        (WebCore::JSTestIndexedSetterNoIdentifierPrototype::JSTestIndexedSetterNoIdentifierPrototype):
+        * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
+        (WebCore::JSTestIndexedSetterThrowingExceptionPrototype::JSTestIndexedSetterThrowingExceptionPrototype):
+        * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
+        (WebCore::JSTestIndexedSetterWithIdentifierPrototype::JSTestIndexedSetterWithIdentifierPrototype):
+        * bindings/scripts/test/JS/JSTestInterface.cpp:
+        (WebCore::JSTestInterfacePrototype::JSTestInterfacePrototype):
+        * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
+        (WebCore::JSTestInterfaceLeadingUnderscorePrototype::JSTestInterfaceLeadingUnderscorePrototype):
+        * bindings/scripts/test/JS/JSTestIterable.cpp:
+        (WebCore::JSTestIterablePrototype::JSTestIterablePrototype):
+        * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
+        (WebCore::JSTestJSBuiltinConstructorPrototype::JSTestJSBuiltinConstructorPrototype):
+        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
+        (WebCore::JSTestMediaQueryListListenerPrototype::JSTestMediaQueryListListenerPrototype):
+        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
+        (WebCore::JSTestNamedAndIndexedSetterNoIdentifierPrototype::JSTestNamedAndIndexedSetterNoIdentifierPrototype):
+        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
+        (WebCore::JSTestNamedAndIndexedSetterThrowingExceptionPrototype::JSTestNamedAndIndexedSetterThrowingExceptionPrototype):
+        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
+        (WebCore::JSTestNamedAndIndexedSetterWithIdentifierPrototype::JSTestNamedAndIndexedSetterWithIdentifierPrototype):
+        * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
+        (WebCore::JSTestNamedConstructorPrototype::JSTestNamedConstructorPrototype):
+        * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
+        (WebCore::JSTestNamedDeleterNoIdentifierPrototype::JSTestNamedDeleterNoIdentifierPrototype):
+        * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
+        (WebCore::JSTestNamedDeleterThrowingExceptionPrototype::JSTestNamedDeleterThrowingExceptionPrototype):
+        * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
+        (WebCore::JSTestNamedDeleterWithIdentifierPrototype::JSTestNamedDeleterWithIdentifierPrototype):
+        * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
+        (WebCore::JSTestNamedDeleterWithIndexedGetterPrototype::JSTestNamedDeleterWithIndexedGetterPrototype):
+        * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
+        (WebCore::JSTestNamedGetterCallWithPrototype::JSTestNamedGetterCallWithPrototype):
+        * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
+        (WebCore::JSTestNamedGetterNoIdentifierPrototype::JSTestNamedGetterNoIdentifierPrototype):
+        * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
+        (WebCore::JSTestNamedGetterWithIdentifierPrototype::JSTestNamedGetterWithIdentifierPrototype):
+        * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
+        (WebCore::JSTestNamedSetterNoIdentifierPrototype::JSTestNamedSetterNoIdentifierPrototype):
+        * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
+        (WebCore::JSTestNamedSetterThrowingExceptionPrototype::JSTestNamedSetterThrowingExceptionPrototype):
+        * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
+        (WebCore::JSTestNamedSetterWithIdentifierPrototype::JSTestNamedSetterWithIdentifierPrototype):
+        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
+        (WebCore::JSTestNamedSetterWithIndexedGetterPrototype::JSTestNamedSetterWithIndexedGetterPrototype):
+        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
+        (WebCore::JSTestNamedSetterWithIndexedGetterAndSetterPrototype::JSTestNamedSetterWithIndexedGetterAndSetterPrototype):
+        * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
+        (WebCore::JSTestNamedSetterWithOverrideBuiltinsPrototype::JSTestNamedSetterWithOverrideBuiltinsPrototype):
+        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
+        (WebCore::JSTestNamedSetterWithUnforgablePropertiesPrototype::JSTestNamedSetterWithUnforgablePropertiesPrototype):
+        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
+        (WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsPrototype::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsPrototype):
+        * bindings/scripts/test/JS/JSTestNode.cpp:
+        (WebCore::JSTestNodePrototype::JSTestNodePrototype):
+        (WebCore::JSTestNodeConstructor::prototypeForStructure):
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        (WebCore::JSTestObjPrototype::JSTestObjPrototype):
+        * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
+        (WebCore::JSTestOverloadedConstructorsPrototype::JSTestOverloadedConstructorsPrototype):
+        * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
+        (WebCore::JSTestOverloadedConstructorsWithSequencePrototype::JSTestOverloadedConstructorsWithSequencePrototype):
+        * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
+        (WebCore::JSTestOverrideBuiltinsPrototype::JSTestOverrideBuiltinsPrototype):
+        * bindings/scripts/test/JS/JSTestPluginInterface.cpp:
+        (WebCore::JSTestPluginInterfacePrototype::JSTestPluginInterfacePrototype):
+        * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
+        (WebCore::JSTestPromiseRejectionEventPrototype::JSTestPromiseRejectionEventPrototype):
+        (WebCore::JSTestPromiseRejectionEventConstructor::prototypeForStructure):
+        * bindings/scripts/test/JS/JSTestSerialization.cpp:
+        (WebCore::JSTestSerializationPrototype::JSTestSerializationPrototype):
+        * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:
+        (WebCore::JSTestSerializationIndirectInheritancePrototype::JSTestSerializationIndirectInheritancePrototype):
+        (WebCore::JSTestSerializationIndirectInheritanceConstructor::prototypeForStructure):
+        * bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
+        (WebCore::JSTestSerializationInheritPrototype::JSTestSerializationInheritPrototype):
+        (WebCore::JSTestSerializationInheritConstructor::prototypeForStructure):
+        * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
+        (WebCore::JSTestSerializationInheritFinalPrototype::JSTestSerializationInheritFinalPrototype):
+        (WebCore::JSTestSerializationInheritFinalConstructor::prototypeForStructure):
+        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
+        (WebCore::JSTestSerializedScriptValueInterfacePrototype::JSTestSerializedScriptValueInterfacePrototype):
+        * bindings/scripts/test/JS/JSTestStringifier.cpp:
+        (WebCore::JSTestStringifierPrototype::JSTestStringifierPrototype):
+        * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
+        (WebCore::JSTestStringifierAnonymousOperationPrototype::JSTestStringifierAnonymousOperationPrototype):
+        * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
+        (WebCore::JSTestStringifierNamedOperationPrototype::JSTestStringifierNamedOperationPrototype):
+        * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
+        (WebCore::JSTestStringifierOperationImplementedAsPrototype::JSTestStringifierOperationImplementedAsPrototype):
+        * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
+        (WebCore::JSTestStringifierOperationNamedToStringPrototype::JSTestStringifierOperationNamedToStringPrototype):
+        * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
+        (WebCore::JSTestStringifierReadOnlyAttributePrototype::JSTestStringifierReadOnlyAttributePrototype):
+        * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
+        (WebCore::JSTestStringifierReadWriteAttributePrototype::JSTestStringifierReadWriteAttributePrototype):
+        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
+        (WebCore::JSTestTypedefsPrototype::JSTestTypedefsPrototype):
+
</ins><span class="cx"> 2019-05-08  Don Olmstead  <don.olmstead@sony.com>
</span><span class="cx"> 
</span><span class="cx">         WEBCORE_EXPORT shouldn't be on the class and its methods
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWindowProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWindowProxy.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWindowProxy.cpp       2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/js/JSWindowProxy.cpp  2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -97,6 +97,7 @@
</span><span class="cx">     // FIXME: Why do we need to protect this when there's a pointer to it on the stack?
</span><span class="cx">     // Perhaps the issue is that structure objects aren't seen when scanning the stack?
</span><span class="cx">     Strong<JSNonFinalObject> prototype(vm, isRemoteDOMWindow ? static_cast<JSNonFinalObject*>(JSRemoteDOMWindowPrototype::create(vm, nullptr, &prototypeStructure)) : static_cast<JSNonFinalObject*>(JSDOMWindowPrototype::create(vm, nullptr, &prototypeStructure)));
</span><ins>+    prototype->didBecomePrototype();
</ins><span class="cx"> 
</span><span class="cx">     JSDOMGlobalObject* window = nullptr;
</span><span class="cx">     if (isRemoteDOMWindow) {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -7070,6 +7070,7 @@
</span><span class="cx">     push(@$outputArray, "    ${prototypeClassName}(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)\n");
</span><span class="cx">     push(@$outputArray, "        : JSC::JSNonFinalObject(vm, structure)\n");
</span><span class="cx">     push(@$outputArray, "    {\n");
</span><ins>+    push(@$outputArray, "        didBecomePrototype();\n");
</ins><span class="cx">     push(@$outputArray, "    }\n");
</span><span class="cx"> 
</span><span class="cx">     if (PrototypeHasStaticPropertyTable($interface)) {
</span><span class="lines">@@ -7304,7 +7305,9 @@
</span><span class="cx"> 
</span><span class="cx">     if (!$generatingNamedConstructor and $interface->parentType) {
</span><span class="cx">         my $parentClassName = "JS" . $interface->parentType->name;
</span><del>-        push(@$outputArray, "    return ${parentClassName}::getConstructor(vm, &globalObject);\n");
</del><ins>+        push(@$outputArray, "    auto result = ${parentClassName}::getConstructor(vm, &globalObject);\n");
+        push(@$outputArray, "    result.getObject()->didBecomePrototype();\n");
+        push(@$outputArray, "    return result;\n");
</ins><span class="cx">     } else {
</span><span class="cx">         AddToImplIncludes("<JavaScriptCore/FunctionPrototype.h>");
</span><span class="cx">         push(@$outputArray, "    UNUSED_PARAM(vm);\n");
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSInterfaceNamecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -62,6 +62,7 @@
</span><span class="cx">     JSInterfaceNamePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSMapLikecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -81,6 +81,7 @@
</span><span class="cx">     JSMapLikePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSReadOnlyMapLikecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -78,6 +78,7 @@
</span><span class="cx">     JSReadOnlyMapLikePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp  2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp     2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -75,6 +75,7 @@
</span><span class="cx">     JSTestActiveDOMObjectPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -87,6 +87,7 @@
</span><span class="cx">     JSTestCEReactionsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsStringifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp   2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp      2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -74,6 +74,7 @@
</span><span class="cx">     JSTestCEReactionsStringifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCallTracercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp       2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp  2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -92,6 +92,7 @@
</span><span class="cx">     JSTestCallTracerPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -63,6 +63,7 @@
</span><span class="cx">     JSTestClassWithJSBuiltinConstructorPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestDOMJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp   2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp      2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -485,6 +485,7 @@
</span><span class="cx">     JSTestDOMJITPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span><span class="lines">@@ -494,7 +495,9 @@
</span><span class="cx"> 
</span><span class="cx"> template<> JSValue JSTestDOMJITConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
</span><span class="cx"> {
</span><del>-    return JSNode::getConstructor(vm, &globalObject);
</del><ins>+    auto result = JSNode::getConstructor(vm, &globalObject);
+    result.getObject()->didBecomePrototype();
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template<> void JSTestDOMJITConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEnabledBySettingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -84,6 +84,7 @@
</span><span class="cx">     JSTestEnabledBySettingPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -144,6 +144,7 @@
</span><span class="cx">     JSTestEventConstructorPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span><span class="lines">@@ -170,7 +171,9 @@
</span><span class="cx"> 
</span><span class="cx"> template<> JSValue JSTestEventConstructorConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
</span><span class="cx"> {
</span><del>-    return JSEvent::getConstructor(vm, &globalObject);
</del><ins>+    auto result = JSEvent::getConstructor(vm, &globalObject);
+    result.getObject()->didBecomePrototype();
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template<> void JSTestEventConstructorConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -72,6 +72,7 @@
</span><span class="cx">     JSTestEventTargetPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span><span class="lines">@@ -81,7 +82,9 @@
</span><span class="cx"> 
</span><span class="cx"> template<> JSValue JSTestEventTargetConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
</span><span class="cx"> {
</span><del>-    return JSEventTarget::getConstructor(vm, &globalObject);
</del><ins>+    auto result = JSEventTarget::getConstructor(vm, &globalObject);
+    result.getObject()->didBecomePrototype();
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template<> void JSTestEventTargetConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -65,6 +65,7 @@
</span><span class="cx">     JSTestExceptionPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -65,6 +65,7 @@
</span><span class="cx">     JSTestGenerateIsReachablePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGlobalObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h       2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h  2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -102,6 +102,7 @@
</span><span class="cx">     JSTestGlobalObjectPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> public:
</span><span class="cx">     static const unsigned StructureFlags = Base::StructureFlags | JSC::HasStaticPropertyTable;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestIndexedSetterNoIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -64,6 +64,7 @@
</span><span class="cx">     JSTestIndexedSetterNoIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestIndexedSetterThrowingExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp   2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp      2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -64,6 +64,7 @@
</span><span class="cx">     JSTestIndexedSetterThrowingExceptionPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestIndexedSetterWithIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -70,6 +70,7 @@
</span><span class="cx">     JSTestIndexedSetterWithIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -168,6 +168,7 @@
</span><span class="cx">     JSTestInterfacePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceLeadingUnderscorecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp       2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp  2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -65,6 +65,7 @@
</span><span class="cx">     JSTestInterfaceLeadingUnderscorePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestIterablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -73,6 +73,7 @@
</span><span class="cx">     JSTestIterablePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp     2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -69,6 +69,7 @@
</span><span class="cx">     JSTestJSBuiltinConstructorPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp   2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp      2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -70,6 +70,7 @@
</span><span class="cx">     JSTestMediaQueryListListenerPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedAndIndexedSetterNoIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -65,6 +65,7 @@
</span><span class="cx">     JSTestNamedAndIndexedSetterNoIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedAndIndexedSetterThrowingExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp   2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp      2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -65,6 +65,7 @@
</span><span class="cx">     JSTestNamedAndIndexedSetterThrowingExceptionPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedAndIndexedSetterWithIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -72,6 +72,7 @@
</span><span class="cx">     JSTestNamedAndIndexedSetterWithIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -65,6 +65,7 @@
</span><span class="cx">     JSTestNamedConstructorPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterNoIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -64,6 +64,7 @@
</span><span class="cx">     JSTestNamedDeleterNoIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterThrowingExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -64,6 +64,7 @@
</span><span class="cx">     JSTestNamedDeleterThrowingExceptionPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterWithIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp       2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp  2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -69,6 +69,7 @@
</span><span class="cx">     JSTestNamedDeleterWithIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedDeleterWithIndexedGettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -65,6 +65,7 @@
</span><span class="cx">     JSTestNamedDeleterWithIndexedGetterPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedGetterCallWithcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -64,6 +64,7 @@
</span><span class="cx">     JSTestNamedGetterCallWithPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedGetterNoIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp  2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp     2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -64,6 +64,7 @@
</span><span class="cx">     JSTestNamedGetterNoIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedGetterWithIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -69,6 +69,7 @@
</span><span class="cx">     JSTestNamedGetterWithIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterNoIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp  2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp     2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -64,6 +64,7 @@
</span><span class="cx">     JSTestNamedSetterNoIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterThrowingExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp     2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp        2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -64,6 +64,7 @@
</span><span class="cx">     JSTestNamedSetterThrowingExceptionPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithIdentifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -69,6 +69,7 @@
</span><span class="cx">     JSTestNamedSetterWithIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithIndexedGettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp     2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp        2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -72,6 +72,7 @@
</span><span class="cx">     JSTestNamedSetterWithIndexedGetterPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithIndexedGetterAndSettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -72,6 +72,7 @@
</span><span class="cx">     JSTestNamedSetterWithIndexedGetterAndSetterPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithOverrideBuiltinscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp  2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp     2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -64,6 +64,7 @@
</span><span class="cx">     JSTestNamedSetterWithOverrideBuiltinsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithUnforgablePropertiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -71,6 +71,7 @@
</span><span class="cx">     JSTestNamedSetterWithUnforgablePropertiesPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp   2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp      2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -71,6 +71,7 @@
</span><span class="cx">     JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp     2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -88,6 +88,7 @@
</span><span class="cx">     JSTestNodePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span><span class="lines">@@ -108,7 +109,9 @@
</span><span class="cx"> 
</span><span class="cx"> template<> JSValue JSTestNodeConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
</span><span class="cx"> {
</span><del>-    return JSNode::getConstructor(vm, &globalObject);
</del><ins>+    auto result = JSNode::getConstructor(vm, &globalObject);
+    result.getObject()->didBecomePrototype();
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template<> void JSTestNodeConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -1819,6 +1819,7 @@
</span><span class="cx">     JSTestObjPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp   2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp      2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -68,6 +68,7 @@
</span><span class="cx">     JSTestOverloadedConstructorsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsWithSequencecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp       2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp  2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -67,6 +67,7 @@
</span><span class="cx">     JSTestOverloadedConstructorsWithSequencePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -72,6 +72,7 @@
</span><span class="cx">     JSTestOverrideBuiltinsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestPluginInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp  2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp     2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -63,6 +63,7 @@
</span><span class="cx">     JSTestPluginInterfacePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestPromiseRejectionEventcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -147,6 +147,7 @@
</span><span class="cx">     JSTestPromiseRejectionEventPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span><span class="lines">@@ -174,7 +175,9 @@
</span><span class="cx"> 
</span><span class="cx"> template<> JSValue JSTestPromiseRejectionEventConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
</span><span class="cx"> {
</span><del>-    return JSEvent::getConstructor(vm, &globalObject);
</del><ins>+    auto result = JSEvent::getConstructor(vm, &globalObject);
+    result.getObject()->didBecomePrototype();
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template<> void JSTestPromiseRejectionEventConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -104,6 +104,7 @@
</span><span class="cx">     JSTestSerializationPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializationIndirectInheritancecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -61,6 +61,7 @@
</span><span class="cx">     JSTestSerializationIndirectInheritancePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span><span class="lines">@@ -70,7 +71,9 @@
</span><span class="cx"> 
</span><span class="cx"> template<> JSValue JSTestSerializationIndirectInheritanceConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
</span><span class="cx"> {
</span><del>-    return JSTestSerializationInherit::getConstructor(vm, &globalObject);
</del><ins>+    auto result = JSTestSerializationInherit::getConstructor(vm, &globalObject);
+    result.getObject()->didBecomePrototype();
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template<> void JSTestSerializationIndirectInheritanceConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializationInheritcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp     2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp        2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -71,6 +71,7 @@
</span><span class="cx">     JSTestSerializationInheritPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span><span class="lines">@@ -80,7 +81,9 @@
</span><span class="cx"> 
</span><span class="cx"> template<> JSValue JSTestSerializationInheritConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
</span><span class="cx"> {
</span><del>-    return JSTestSerialization::getConstructor(vm, &globalObject);
</del><ins>+    auto result = JSTestSerialization::getConstructor(vm, &globalObject);
+    result.getObject()->didBecomePrototype();
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template<> void JSTestSerializationInheritConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializationInheritFinalcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -73,6 +73,7 @@
</span><span class="cx">     JSTestSerializationInheritFinalPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span><span class="lines">@@ -82,7 +83,9 @@
</span><span class="cx"> 
</span><span class="cx"> template<> JSValue JSTestSerializationInheritFinalConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
</span><span class="cx"> {
</span><del>-    return JSTestSerializationInherit::getConstructor(vm, &globalObject);
</del><ins>+    auto result = JSTestSerializationInherit::getConstructor(vm, &globalObject);
+    result.getObject()->didBecomePrototype();
+    return result;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template<> void JSTestSerializationInheritFinalConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp   2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp      2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -86,6 +86,7 @@
</span><span class="cx">     JSTestSerializedScriptValueInterfacePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestStringifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp      2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp 2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -68,6 +68,7 @@
</span><span class="cx">     JSTestStringifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestStringifierAnonymousOperationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -68,6 +68,7 @@
</span><span class="cx">     JSTestStringifierAnonymousOperationPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestStringifierNamedOperationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -69,6 +69,7 @@
</span><span class="cx">     JSTestStringifierNamedOperationPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestStringifierOperationImplementedAscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -69,6 +69,7 @@
</span><span class="cx">     JSTestStringifierOperationImplementedAsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestStringifierOperationNamedToStringcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp        2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp   2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -68,6 +68,7 @@
</span><span class="cx">     JSTestStringifierOperationNamedToStringPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestStringifierReadOnlyAttributecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp     2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp        2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -70,6 +70,7 @@
</span><span class="cx">     JSTestStringifierReadOnlyAttributePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestStringifierReadWriteAttributecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp    2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp       2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -71,6 +71,7 @@
</span><span class="cx">     JSTestStringifierReadWriteAttributePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (245067 => 245068)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp 2019-05-08 20:50:22 UTC (rev 245067)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp    2019-05-08 21:14:39 UTC (rev 245068)
</span><span class="lines">@@ -114,6 +114,7 @@
</span><span class="cx">     JSTestTypedefsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
</span><span class="cx">         : JSC::JSNonFinalObject(vm, structure)
</span><span class="cx">     {
</span><ins>+        didBecomePrototype();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void finishCreation(JSC::VM&);
</span></span></pre>
</div>
</div>

</body>
</html>