Changeset 246714 in webkit


Ignore:
Timestamp:
Jun 22, 2019 11:46:21 AM (5 years ago)
Author:
ysuzuki@apple.com
Message:

All prototypes should call didBecomePrototype()
https://bugs.webkit.org/show_bug.cgi?id=196315

Reviewed by Saam Barati.

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/StructureInlines.h:

(JSC::Structure::setPrototypeWithoutTransition):

  • 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:

  • bindings/js/JSDOMIterator.h:

(WebCore::IteratorTraits>::finishCreation):

  • bindings/js/JSDOMWindowProperties.h:

(WebCore::JSDOMWindowProperties::create): Deleted.
(WebCore::JSDOMWindowProperties::createStructure): Deleted.
(WebCore::JSDOMWindowProperties::JSDOMWindowProperties): Deleted.

  • 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/JSTestEnabledForContext.cpp:

(WebCore::JSTestEnabledForContextPrototype::JSTestEnabledForContextPrototype):

  • 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):

Location:
trunk
Files:
1 added
103 edited

Legend:

Unmodified
Added
Removed
  • trunk/JSTests/ChangeLog

    r246709 r246714  
     12019-06-22  Robin Morisset  <rmorisset@apple.com> and Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        All prototypes should call didBecomePrototype()
     4        https://bugs.webkit.org/show_bug.cgi?id=196315
     5
     6        Reviewed by Saam Barati.
     7
     8        * stress/function-prototype-indexed-accessor.js: Added.
     9
    1102019-06-22  Yusuke Suzuki  <ysuzuki@apple.com>
    211
  • trunk/Source/JavaScriptCore/ChangeLog

    r246709 r246714  
     12019-06-22  Robin Morisset  <rmorisset@apple.com> and Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        All prototypes should call didBecomePrototype()
     4        https://bugs.webkit.org/show_bug.cgi?id=196315
     5
     6        Reviewed by Saam Barati.
     7
     8        Otherwise we won't remember to run haveABadTime() when someone adds to them an indexed accessor.
     9
     10        I added a check used in both Structure::finishCreation() and Structure::changePrototypeTransition to make sure we don't
     11        create structures with invalid prototypes.
     12        It found a lot of objects that are used as prototypes in JSGlobalObject and yet were missing didBecomePrototype() in their finishCreation().
     13        Somewhat surprisingly, some of them have names like FunctionConstructor and not only FooPrototype.
     14
     15        * runtime/BigIntPrototype.cpp:
     16        (JSC::BigIntPrototype::finishCreation):
     17        * runtime/BooleanPrototype.cpp:
     18        (JSC::BooleanPrototype::finishCreation):
     19        * runtime/DatePrototype.cpp:
     20        (JSC::DatePrototype::finishCreation):
     21        * runtime/ErrorConstructor.cpp:
     22        (JSC::ErrorConstructor::finishCreation):
     23        * runtime/ErrorPrototype.cpp:
     24        (JSC::ErrorPrototype::finishCreation):
     25        * runtime/FunctionConstructor.cpp:
     26        (JSC::FunctionConstructor::finishCreation):
     27        * runtime/FunctionPrototype.cpp:
     28        (JSC::FunctionPrototype::finishCreation):
     29        * runtime/IntlCollatorPrototype.cpp:
     30        (JSC::IntlCollatorPrototype::finishCreation):
     31        * runtime/IntlDateTimeFormatPrototype.cpp:
     32        (JSC::IntlDateTimeFormatPrototype::finishCreation):
     33        * runtime/IntlNumberFormatPrototype.cpp:
     34        (JSC::IntlNumberFormatPrototype::finishCreation):
     35        * runtime/IntlPluralRulesPrototype.cpp:
     36        (JSC::IntlPluralRulesPrototype::finishCreation):
     37        * runtime/JSArrayBufferPrototype.cpp:
     38        (JSC::JSArrayBufferPrototype::finishCreation):
     39        * runtime/JSDataViewPrototype.cpp:
     40        (JSC::JSDataViewPrototype::finishCreation):
     41        * runtime/JSGenericTypedArrayViewPrototypeInlines.h:
     42        (JSC::JSGenericTypedArrayViewPrototype<ViewClass>::finishCreation):
     43        * runtime/JSGlobalObject.cpp:
     44        (JSC::createConsoleProperty):
     45        * runtime/JSPromisePrototype.cpp:
     46        (JSC::JSPromisePrototype::finishCreation):
     47        * runtime/JSTypedArrayViewConstructor.cpp:
     48        (JSC::JSTypedArrayViewConstructor::finishCreation):
     49        * runtime/JSTypedArrayViewPrototype.cpp:
     50        (JSC::JSTypedArrayViewPrototype::finishCreation):
     51        * runtime/NumberPrototype.cpp:
     52        (JSC::NumberPrototype::finishCreation):
     53        * runtime/RegExpPrototype.cpp:
     54        (JSC::RegExpPrototype::finishCreation):
     55        * runtime/StringPrototype.cpp:
     56        (JSC::StringPrototype::finishCreation):
     57        * runtime/Structure.cpp:
     58        (JSC::Structure::isValidPrototype):
     59        (JSC::Structure::changePrototypeTransition):
     60        * runtime/Structure.h:
     61        * runtime/StructureInlines.h:
     62        (JSC::Structure::setPrototypeWithoutTransition):
     63        * runtime/SymbolPrototype.cpp:
     64        (JSC::SymbolPrototype::finishCreation):
     65        * wasm/js/WebAssemblyCompileErrorPrototype.cpp:
     66        (JSC::WebAssemblyCompileErrorPrototype::finishCreation):
     67        * wasm/js/WebAssemblyInstancePrototype.cpp:
     68        (JSC::WebAssemblyInstancePrototype::finishCreation):
     69        * wasm/js/WebAssemblyLinkErrorPrototype.cpp:
     70        (JSC::WebAssemblyLinkErrorPrototype::finishCreation):
     71        * wasm/js/WebAssemblyMemoryPrototype.cpp:
     72        (JSC::WebAssemblyMemoryPrototype::finishCreation):
     73        * wasm/js/WebAssemblyModulePrototype.cpp:
     74        (JSC::WebAssemblyModulePrototype::finishCreation):
     75        * wasm/js/WebAssemblyPrototype.cpp:
     76        (JSC::WebAssemblyPrototype::finishCreation):
     77        * wasm/js/WebAssemblyRuntimeErrorPrototype.cpp:
     78        (JSC::WebAssemblyRuntimeErrorPrototype::finishCreation):
     79        * wasm/js/WebAssemblyTablePrototype.cpp:
     80        (JSC::WebAssemblyTablePrototype::finishCreation):
     81
    1822019-06-22  Yusuke Suzuki  <ysuzuki@apple.com>
    283
  • trunk/Source/JavaScriptCore/runtime/BigIntPrototype.cpp

    r245082 r246714  
    7474    ASSERT(inherits(vm, info()));
    7575    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "BigInt"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     76    didBecomePrototype();
    7677}
    7778
  • trunk/Source/JavaScriptCore/runtime/BooleanPrototype.cpp

    r245082 r246714  
    6060    Base::finishCreation(vm);
    6161    setInternalValue(vm, jsBoolean(false));
     62    didBecomePrototype();
    6263
    6364    ASSERT(inherits(vm, info()));
  • trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp

    r245082 r246714  
    516516    JSFunction* toPrimitiveFunction = JSFunction::create(vm, globalObject, 1, "[Symbol.toPrimitive]"_s, dateProtoFuncToPrimitiveSymbol, NoIntrinsic);
    517517    putDirectWithoutTransition(vm, vm.propertyNames->toPrimitiveSymbol, toPrimitiveFunction, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     518    didBecomePrototype();
    518519
    519520    // The constructor will be added later, after DateConstructor has been built.
  • trunk/Source/JavaScriptCore/runtime/ErrorConstructor.cpp

    r245082 r246714  
    4949    putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
    5050    putDirectWithoutTransition(vm, vm.propertyNames->stackTraceLimit, jsNumber(globalObject(vm)->stackTraceLimit().valueOr(Options::defaultErrorStackTraceLimit())), static_cast<unsigned>(PropertyAttribute::None));
     51    didBecomePrototype();
    5152}
    5253
  • trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp

    r245082 r246714  
    6767    putDirectWithoutTransition(vm, vm.propertyNames->name, jsString(&vm, name), static_cast<unsigned>(PropertyAttribute::DontEnum));
    6868    putDirectWithoutTransition(vm, vm.propertyNames->message, jsEmptyString(&vm), static_cast<unsigned>(PropertyAttribute::DontEnum));
     69    didBecomePrototype();
    6970}
    7071
  • trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp

    r245082 r246714  
    6262    putDirectWithoutTransition(vm, vm.propertyNames->prototype, functionPrototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly);
    6363    putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
     64    didBecomePrototype();
    6465}
    6566
  • trunk/Source/JavaScriptCore/runtime/FunctionPrototype.cpp

    r245082 r246714  
    5555    Base::finishCreation(vm, name, NameVisibility::Visible, NameAdditionMode::WithoutStructureTransition);
    5656    putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
     57    didBecomePrototype();
    5758}
    5859
  • trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp

    r245082 r246714  
    7777
    7878    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Object"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     79    didBecomePrototype();
    7980}
    8081
  • trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp

    r245082 r246714  
    9191
    9292    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Object"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     93    didBecomePrototype();
    9394}
    9495
  • trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp

    r245082 r246714  
    8989
    9090    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Object"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     91    didBecomePrototype();
    9192}
    9293
  • trunk/Source/JavaScriptCore/runtime/IntlPluralRulesPrototype.cpp

    r245082 r246714  
    7676
    7777    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Object"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     78    didBecomePrototype();
    7879}
    7980
  • trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp

    r245082 r246714  
    122122    else
    123123        JSC_NATIVE_GETTER_WITHOUT_TRANSITION(vm.propertyNames->byteLength, sharedArrayBufferProtoGetterFuncByteLength, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     124    didBecomePrototype();
    124125}
    125126
  • trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp

    r245082 r246714  
    111111    Base::finishCreation(vm);
    112112    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "DataView"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     113    didBecomePrototype();
    113114}
    114115
  • trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h

    r245082 r246714  
    4646    putDirect(vm, vm.propertyNames->BYTES_PER_ELEMENT, jsNumber(ViewClass::elementSize), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly | PropertyAttribute::DontDelete);
    4747
     48    didBecomePrototype();
    4849}
    4950
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp

    r246709 r246714  
    237237{
    238238    JSGlobalObject* global = jsCast<JSGlobalObject*>(object);
    239     return ConsoleObject::create(vm, global, ConsoleObject::createStructure(vm, global, constructEmptyObject(global->globalExec())));
     239    JSObject* prototype = constructEmptyObject(global->globalExec());
     240    prototype->didBecomePrototype();
     241    return ConsoleObject::create(vm, global, ConsoleObject::createStructure(vm, global, prototype));
    240242}
    241243
  • trunk/Source/JavaScriptCore/runtime/JSPromisePrototype.cpp

    r245082 r246714  
    7878    Base::finishCreation(vm);
    7979    putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Promise"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     80    didBecomePrototype();
    8081}
    8182
  • trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewConstructor.cpp

    r245082 r246714  
    5656    JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->of, typedArrayConstructorOfCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
    5757    JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->from, typedArrayConstructorFromCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
     58
     59    didBecomePrototype();
    5860}
    5961
  • trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp

    r245082 r246714  
    335335    putDirectWithoutTransition(vm, vm.propertyNames->iteratorSymbol, valuesFunction, static_cast<unsigned>(PropertyAttribute::DontEnum));
    336336
     337    didBecomePrototype();
    337338}
    338339
  • trunk/Source/JavaScriptCore/runtime/NumberPrototype.cpp

    r246034 r246714  
    8383    JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->toString, numberProtoFuncToString, static_cast<unsigned>(PropertyAttribute::DontEnum), 1, NumberPrototypeToStringIntrinsic);
    8484    ASSERT(inherits(vm, info()));
     85    didBecomePrototype();
    8586}
    8687
  • trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp

    r246567 r246714  
    8383    JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->splitSymbol, regExpPrototypeSplitCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
    8484    JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->test, regExpPrototypeTestCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
     85
     86    didBecomePrototype();
    8587}
    8688
  • trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp

    r246567 r246714  
    174174    // The constructor will be added later, after StringConstructor has been built
    175175    putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
     176
     177    didBecomePrototype();
    176178}
    177179
  • trunk/Source/JavaScriptCore/runtime/Structure.cpp

    r245082 r246714  
    322322}
    323323
     324bool Structure::isValidPrototype(JSValue prototype)
     325{
     326    return prototype.isNull() || (prototype.isObject() && prototype.getObject()->mayBePrototype());
     327}
     328
    324329void Structure::findStructuresAndMapForMaterialization(Vector<Structure*, 8>& structures, Structure*& structure, PropertyTable*& table)
    325330{
     
    545550Structure* Structure::changePrototypeTransition(VM& vm, Structure* structure, JSValue prototype, DeferredStructureTransitionWatchpointFire& deferred)
    546551{
    547     ASSERT(prototype.isObject() || prototype.isNull());
     552    ASSERT(isValidPrototype(prototype));
    548553
    549554    DeferGC deferGC(vm.heap);
  • trunk/Source/JavaScriptCore/runtime/Structure.h

    r245082 r246714  
    143143    {
    144144        Base::finishCreation(vm);
    145         ASSERT(m_prototype.get().isEmpty() || m_prototype.isObject() || m_prototype.isNull());
     145        ASSERT(m_prototype.get().isEmpty() || isValidPrototype(m_prototype.get()));
    146146    }
    147147
     
    681681    void checkConsistency();
    682682
     683    JS_EXPORT_PRIVATE static bool isValidPrototype(JSValue);
     684
    683685    // This may grab the lock, or not. Do not call when holding the Structure's lock.
    684686    PropertyTable* ensurePropertyTableIfNotEmpty(VM& vm)
  • trunk/Source/JavaScriptCore/runtime/StructureInlines.h

    r240255 r246714  
    494494ALWAYS_INLINE void Structure::setPrototypeWithoutTransition(VM& vm, JSValue prototype)
    495495{
     496    ASSERT(isValidPrototype(prototype));
    496497    m_prototype.set(vm, this, prototype);
    497498}
  • trunk/Source/JavaScriptCore/runtime/SymbolPrototype.cpp

    r245082 r246714  
    6868    JSFunction* toPrimitiveFunction = JSFunction::create(vm, globalObject, 1, "[Symbol.toPrimitive]"_s, symbolProtoFuncValueOf, NoIntrinsic);
    6969    putDirectWithoutTransition(vm, vm.propertyNames->toPrimitiveSymbol, toPrimitiveFunction, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
     70
     71    didBecomePrototype();
    7072}
    7173
  • trunk/Source/JavaScriptCore/wasm/js/WebAssemblyCompileErrorPrototype.cpp

    r245082 r246714  
    5858{
    5959    Base::finishCreation(vm);
     60    didBecomePrototype();
    6061}
    6162
  • trunk/Source/JavaScriptCore/wasm/js/WebAssemblyInstancePrototype.cpp

    r245082 r246714  
    8787{
    8888    Base::finishCreation(vm);
     89    didBecomePrototype();
    8990}
    9091
  • trunk/Source/JavaScriptCore/wasm/js/WebAssemblyLinkErrorPrototype.cpp

    r245082 r246714  
    5858{
    5959    Base::finishCreation(vm);
     60    didBecomePrototype();
    6061}
    6162
  • trunk/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp

    r245082 r246714  
    110110    Base::finishCreation(vm);
    111111    ASSERT(inherits(vm, info()));
     112    didBecomePrototype();
    112113}
    113114
  • trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp

    r245082 r246714  
    5757{
    5858    Base::finishCreation(vm);
     59    didBecomePrototype();
    5960}
    6061
  • trunk/Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp

    r245082 r246714  
    382382        JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION("instantiateStreaming", webAssemblyPrototypeInstantiateStreamingCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
    383383    }
     384
     385    didBecomePrototype();
    384386}
    385387
  • trunk/Source/JavaScriptCore/wasm/js/WebAssemblyRuntimeErrorPrototype.cpp

    r245082 r246714  
    5858{
    5959    Base::finishCreation(vm);
     60    didBecomePrototype();
    6061}
    6162
  • trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp

    r246139 r246714  
    167167    Base::finishCreation(vm);
    168168    ASSERT(inherits(vm, info()));
     169    didBecomePrototype();
    169170}
    170171
  • trunk/Source/WebCore/ChangeLog

    r246710 r246714  
     12019-06-22  Robin Morisset  <rmorisset@apple.com> and Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        All prototypes should call didBecomePrototype()
     4        https://bugs.webkit.org/show_bug.cgi?id=196315
     5
     6        Reviewed by Saam Barati.
     7
     8        * bindings/js/JSDOMIterator.h:
     9        (WebCore::IteratorTraits>::finishCreation):
     10        * bindings/js/JSDOMWindowProperties.h:
     11        (WebCore::JSDOMWindowProperties::create): Deleted.
     12        (WebCore::JSDOMWindowProperties::createStructure): Deleted.
     13        (WebCore::JSDOMWindowProperties::JSDOMWindowProperties): Deleted.
     14        * bindings/js/JSWindowProxy.cpp:
     15        (WebCore::JSWindowProxy::setWindow):
     16        * bindings/scripts/CodeGeneratorJS.pm:
     17        (GeneratePrototypeDeclaration):
     18        (GenerateConstructorHelperMethods):
     19        * bindings/scripts/test/JS/JSInterfaceName.cpp:
     20        (WebCore::JSInterfaceNamePrototype::JSInterfaceNamePrototype):
     21        * bindings/scripts/test/JS/JSMapLike.cpp:
     22        (WebCore::JSMapLikePrototype::JSMapLikePrototype):
     23        * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
     24        (WebCore::JSReadOnlyMapLikePrototype::JSReadOnlyMapLikePrototype):
     25        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
     26        (WebCore::JSTestActiveDOMObjectPrototype::JSTestActiveDOMObjectPrototype):
     27        * bindings/scripts/test/JS/JSTestCEReactions.cpp:
     28        (WebCore::JSTestCEReactionsPrototype::JSTestCEReactionsPrototype):
     29        * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
     30        (WebCore::JSTestCEReactionsStringifierPrototype::JSTestCEReactionsStringifierPrototype):
     31        * bindings/scripts/test/JS/JSTestCallTracer.cpp:
     32        (WebCore::JSTestCallTracerPrototype::JSTestCallTracerPrototype):
     33        * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
     34        (WebCore::JSTestClassWithJSBuiltinConstructorPrototype::JSTestClassWithJSBuiltinConstructorPrototype):
     35        * bindings/scripts/test/JS/JSTestDOMJIT.cpp:
     36        (WebCore::JSTestDOMJITPrototype::JSTestDOMJITPrototype):
     37        (WebCore::JSTestDOMJITConstructor::prototypeForStructure):
     38        * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
     39        (WebCore::JSTestEnabledBySettingPrototype::JSTestEnabledBySettingPrototype):
     40        * bindings/scripts/test/JS/JSTestEnabledForContext.cpp:
     41        (WebCore::JSTestEnabledForContextPrototype::JSTestEnabledForContextPrototype):
     42        * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
     43        (WebCore::JSTestEventConstructorPrototype::JSTestEventConstructorPrototype):
     44        (WebCore::JSTestEventConstructorConstructor::prototypeForStructure):
     45        * bindings/scripts/test/JS/JSTestEventTarget.cpp:
     46        (WebCore::JSTestEventTargetPrototype::JSTestEventTargetPrototype):
     47        (WebCore::JSTestEventTargetConstructor::prototypeForStructure):
     48        * bindings/scripts/test/JS/JSTestException.cpp:
     49        (WebCore::JSTestExceptionPrototype::JSTestExceptionPrototype):
     50        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
     51        (WebCore::JSTestGenerateIsReachablePrototype::JSTestGenerateIsReachablePrototype):
     52        * bindings/scripts/test/JS/JSTestGlobalObject.h:
     53        (WebCore::JSTestGlobalObjectPrototype::JSTestGlobalObjectPrototype):
     54        * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
     55        (WebCore::JSTestIndexedSetterNoIdentifierPrototype::JSTestIndexedSetterNoIdentifierPrototype):
     56        * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
     57        (WebCore::JSTestIndexedSetterThrowingExceptionPrototype::JSTestIndexedSetterThrowingExceptionPrototype):
     58        * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
     59        (WebCore::JSTestIndexedSetterWithIdentifierPrototype::JSTestIndexedSetterWithIdentifierPrototype):
     60        * bindings/scripts/test/JS/JSTestInterface.cpp:
     61        (WebCore::JSTestInterfacePrototype::JSTestInterfacePrototype):
     62        * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
     63        (WebCore::JSTestInterfaceLeadingUnderscorePrototype::JSTestInterfaceLeadingUnderscorePrototype):
     64        * bindings/scripts/test/JS/JSTestIterable.cpp:
     65        (WebCore::JSTestIterablePrototype::JSTestIterablePrototype):
     66        * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
     67        (WebCore::JSTestJSBuiltinConstructorPrototype::JSTestJSBuiltinConstructorPrototype):
     68        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
     69        (WebCore::JSTestMediaQueryListListenerPrototype::JSTestMediaQueryListListenerPrototype):
     70        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
     71        (WebCore::JSTestNamedAndIndexedSetterNoIdentifierPrototype::JSTestNamedAndIndexedSetterNoIdentifierPrototype):
     72        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
     73        (WebCore::JSTestNamedAndIndexedSetterThrowingExceptionPrototype::JSTestNamedAndIndexedSetterThrowingExceptionPrototype):
     74        * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
     75        (WebCore::JSTestNamedAndIndexedSetterWithIdentifierPrototype::JSTestNamedAndIndexedSetterWithIdentifierPrototype):
     76        * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
     77        (WebCore::JSTestNamedConstructorPrototype::JSTestNamedConstructorPrototype):
     78        * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
     79        (WebCore::JSTestNamedDeleterNoIdentifierPrototype::JSTestNamedDeleterNoIdentifierPrototype):
     80        * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
     81        (WebCore::JSTestNamedDeleterThrowingExceptionPrototype::JSTestNamedDeleterThrowingExceptionPrototype):
     82        * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
     83        (WebCore::JSTestNamedDeleterWithIdentifierPrototype::JSTestNamedDeleterWithIdentifierPrototype):
     84        * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
     85        (WebCore::JSTestNamedDeleterWithIndexedGetterPrototype::JSTestNamedDeleterWithIndexedGetterPrototype):
     86        * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
     87        (WebCore::JSTestNamedGetterCallWithPrototype::JSTestNamedGetterCallWithPrototype):
     88        * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
     89        (WebCore::JSTestNamedGetterNoIdentifierPrototype::JSTestNamedGetterNoIdentifierPrototype):
     90        * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
     91        (WebCore::JSTestNamedGetterWithIdentifierPrototype::JSTestNamedGetterWithIdentifierPrototype):
     92        * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
     93        (WebCore::JSTestNamedSetterNoIdentifierPrototype::JSTestNamedSetterNoIdentifierPrototype):
     94        * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
     95        (WebCore::JSTestNamedSetterThrowingExceptionPrototype::JSTestNamedSetterThrowingExceptionPrototype):
     96        * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
     97        (WebCore::JSTestNamedSetterWithIdentifierPrototype::JSTestNamedSetterWithIdentifierPrototype):
     98        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
     99        (WebCore::JSTestNamedSetterWithIndexedGetterPrototype::JSTestNamedSetterWithIndexedGetterPrototype):
     100        * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
     101        (WebCore::JSTestNamedSetterWithIndexedGetterAndSetterPrototype::JSTestNamedSetterWithIndexedGetterAndSetterPrototype):
     102        * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
     103        (WebCore::JSTestNamedSetterWithOverrideBuiltinsPrototype::JSTestNamedSetterWithOverrideBuiltinsPrototype):
     104        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
     105        (WebCore::JSTestNamedSetterWithUnforgablePropertiesPrototype::JSTestNamedSetterWithUnforgablePropertiesPrototype):
     106        * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
     107        (WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsPrototype::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsPrototype):
     108        * bindings/scripts/test/JS/JSTestNode.cpp:
     109        (WebCore::JSTestNodePrototype::JSTestNodePrototype):
     110        (WebCore::JSTestNodeConstructor::prototypeForStructure):
     111        * bindings/scripts/test/JS/JSTestObj.cpp:
     112        (WebCore::JSTestObjPrototype::JSTestObjPrototype):
     113        * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
     114        (WebCore::JSTestOverloadedConstructorsPrototype::JSTestOverloadedConstructorsPrototype):
     115        * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
     116        (WebCore::JSTestOverloadedConstructorsWithSequencePrototype::JSTestOverloadedConstructorsWithSequencePrototype):
     117        * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
     118        (WebCore::JSTestOverrideBuiltinsPrototype::JSTestOverrideBuiltinsPrototype):
     119        * bindings/scripts/test/JS/JSTestPluginInterface.cpp:
     120        (WebCore::JSTestPluginInterfacePrototype::JSTestPluginInterfacePrototype):
     121        * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
     122        (WebCore::JSTestPromiseRejectionEventPrototype::JSTestPromiseRejectionEventPrototype):
     123        (WebCore::JSTestPromiseRejectionEventConstructor::prototypeForStructure):
     124        * bindings/scripts/test/JS/JSTestSerialization.cpp:
     125        (WebCore::JSTestSerializationPrototype::JSTestSerializationPrototype):
     126        * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:
     127        (WebCore::JSTestSerializationIndirectInheritancePrototype::JSTestSerializationIndirectInheritancePrototype):
     128        (WebCore::JSTestSerializationIndirectInheritanceConstructor::prototypeForStructure):
     129        * bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
     130        (WebCore::JSTestSerializationInheritPrototype::JSTestSerializationInheritPrototype):
     131        (WebCore::JSTestSerializationInheritConstructor::prototypeForStructure):
     132        * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
     133        (WebCore::JSTestSerializationInheritFinalPrototype::JSTestSerializationInheritFinalPrototype):
     134        (WebCore::JSTestSerializationInheritFinalConstructor::prototypeForStructure):
     135        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
     136        (WebCore::JSTestSerializedScriptValueInterfacePrototype::JSTestSerializedScriptValueInterfacePrototype):
     137        * bindings/scripts/test/JS/JSTestStringifier.cpp:
     138        (WebCore::JSTestStringifierPrototype::JSTestStringifierPrototype):
     139        * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
     140        (WebCore::JSTestStringifierAnonymousOperationPrototype::JSTestStringifierAnonymousOperationPrototype):
     141        * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
     142        (WebCore::JSTestStringifierNamedOperationPrototype::JSTestStringifierNamedOperationPrototype):
     143        * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
     144        (WebCore::JSTestStringifierOperationImplementedAsPrototype::JSTestStringifierOperationImplementedAsPrototype):
     145        * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
     146        (WebCore::JSTestStringifierOperationNamedToStringPrototype::JSTestStringifierOperationNamedToStringPrototype):
     147        * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
     148        (WebCore::JSTestStringifierReadOnlyAttributePrototype::JSTestStringifierReadOnlyAttributePrototype):
     149        * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
     150        (WebCore::JSTestStringifierReadWriteAttributePrototype::JSTestStringifierReadWriteAttributePrototype):
     151        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
     152        (WebCore::JSTestTypedefsPrototype::JSTestTypedefsPrototype):
     153
    11542019-06-22  Mike Gorse  <mgorse@suse.com>
    2155
  • trunk/Source/WebCore/bindings/js/JSDOMIterator.h

    r239427 r246714  
    266266
    267267    JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->next, next, 0, 0, JSC::NoIntrinsic);
    268 }
    269 
    270 }
     268    didBecomePrototype();
     269}
     270
     271}
  • trunk/Source/WebCore/bindings/js/JSDOMWindowProperties.h

    r239191 r246714  
    3131namespace WebCore {
    3232
    33 class JSDOMWindowProperties : public JSDOMObject {
     33class JSDOMWindowProperties final : public JSDOMObject {
    3434public:
    3535    static JSDOMWindowProperties* create(JSC::Structure* structure, JSC::JSGlobalObject& globalObject)
     
    5656        : JSDOMObject(structure, globalObject)
    5757    {
     58        didBecomePrototype();
    5859    }
    5960};
  • trunk/Source/WebCore/bindings/js/JSWindowProxy.cpp

    r245082 r246714  
    9898    // Perhaps the issue is that structure objects aren't seen when scanning the stack?
    9999    Strong<JSNonFinalObject> prototype(vm, isRemoteDOMWindow ? static_cast<JSNonFinalObject*>(JSRemoteDOMWindowPrototype::create(vm, nullptr, &prototypeStructure)) : static_cast<JSNonFinalObject*>(JSDOMWindowPrototype::create(vm, nullptr, &prototypeStructure)));
     100    prototype->didBecomePrototype();
    100101
    101102    JSDOMGlobalObject* window = nullptr;
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r246490 r246714  
    70897089    push(@$outputArray, "        : JSC::JSNonFinalObject(vm, structure)\n");
    70907090    push(@$outputArray, "    {\n");
     7091    push(@$outputArray, "        didBecomePrototype();\n");
    70917092    push(@$outputArray, "    }\n");
    70927093
     
    73237324    if (!$generatingNamedConstructor and $interface->parentType) {
    73247325        my $parentClassName = "JS" . $interface->parentType->name;
    7325         push(@$outputArray, "    return ${parentClassName}::getConstructor(vm, &globalObject);\n");
     7326        push(@$outputArray, "    auto result = ${parentClassName}::getConstructor(vm, &globalObject);\n");
     7327        push(@$outputArray, "    result.getObject()->didBecomePrototype();\n");
     7328        push(@$outputArray, "    return result;\n");
    73267329    } else {
    73277330        AddToImplIncludes("<JavaScriptCore/FunctionPrototype.h>");
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp

    r245082 r246714  
    6363        : JSC::JSNonFinalObject(vm, structure)
    6464    {
     65        didBecomePrototype();
    6566    }
    6667
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp

    r245082 r246714  
    8282        : JSC::JSNonFinalObject(vm, structure)
    8383    {
     84        didBecomePrototype();
    8485    }
    8586
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp

    r245082 r246714  
    7979        : JSC::JSNonFinalObject(vm, structure)
    8080    {
     81        didBecomePrototype();
    8182    }
    8283
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp

    r245082 r246714  
    7676        : JSC::JSNonFinalObject(vm, structure)
    7777    {
     78        didBecomePrototype();
    7879    }
    7980
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp

    r245082 r246714  
    8888        : JSC::JSNonFinalObject(vm, structure)
    8989    {
     90        didBecomePrototype();
    9091    }
    9192
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp

    r245082 r246714  
    7575        : JSC::JSNonFinalObject(vm, structure)
    7676    {
     77        didBecomePrototype();
    7778    }
    7879
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp

    r245082 r246714  
    9393        : JSC::JSNonFinalObject(vm, structure)
    9494    {
     95        didBecomePrototype();
    9596    }
    9697
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp

    r245082 r246714  
    6464        : JSC::JSNonFinalObject(vm, structure)
    6565    {
     66        didBecomePrototype();
    6667    }
    6768
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp

    r246490 r246714  
    486486        : JSC::JSNonFinalObject(vm, structure)
    487487    {
     488        didBecomePrototype();
    488489    }
    489490
     
    495496template<> JSValue JSTestDOMJITConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
    496497{
    497     return JSNode::getConstructor(vm, &globalObject);
     498    auto result = JSNode::getConstructor(vm, &globalObject);
     499    result.getObject()->didBecomePrototype();
     500    return result;
    498501}
    499502
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp

    r245082 r246714  
    8585        : JSC::JSNonFinalObject(vm, structure)
    8686    {
     87        didBecomePrototype();
    8788    }
    8889
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.cpp

    r245314 r246714  
    7070        : JSC::JSNonFinalObject(vm, structure)
    7171    {
     72        didBecomePrototype();
    7273    }
    7374
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp

    r245082 r246714  
    145145        : JSC::JSNonFinalObject(vm, structure)
    146146    {
     147        didBecomePrototype();
    147148    }
    148149
     
    171172template<> JSValue JSTestEventConstructorConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
    172173{
    173     return JSEvent::getConstructor(vm, &globalObject);
     174    auto result = JSEvent::getConstructor(vm, &globalObject);
     175    result.getObject()->didBecomePrototype();
     176    return result;
    174177}
    175178
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp

    r246490 r246714  
    7373        : JSC::JSNonFinalObject(vm, structure)
    7474    {
     75        didBecomePrototype();
    7576    }
    7677
     
    8283template<> JSValue JSTestEventTargetConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
    8384{
    84     return JSEventTarget::getConstructor(vm, &globalObject);
     85    auto result = JSEventTarget::getConstructor(vm, &globalObject);
     86    result.getObject()->didBecomePrototype();
     87    return result;
    8588}
    8689
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp

    r245082 r246714  
    6666        : JSC::JSNonFinalObject(vm, structure)
    6767    {
     68        didBecomePrototype();
    6869    }
    6970
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp

    r245082 r246714  
    6666        : JSC::JSNonFinalObject(vm, structure)
    6767    {
     68        didBecomePrototype();
    6869    }
    6970
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h

    r245082 r246714  
    103103        : JSC::JSNonFinalObject(vm, structure)
    104104    {
     105        didBecomePrototype();
    105106    }
    106107public:
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp

    r245082 r246714  
    6565        : JSC::JSNonFinalObject(vm, structure)
    6666    {
     67        didBecomePrototype();
    6768    }
    6869
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp

    r245082 r246714  
    6565        : JSC::JSNonFinalObject(vm, structure)
    6666    {
     67        didBecomePrototype();
    6768    }
    6869
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp

    r245082 r246714  
    7171        : JSC::JSNonFinalObject(vm, structure)
    7272    {
     73        didBecomePrototype();
    7374    }
    7475
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp

    r245082 r246714  
    169169        : JSC::JSNonFinalObject(vm, structure)
    170170    {
     171        didBecomePrototype();
    171172    }
    172173
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp

    r245082 r246714  
    6666        : JSC::JSNonFinalObject(vm, structure)
    6767    {
     68        didBecomePrototype();
    6869    }
    6970
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp

    r245082 r246714  
    7474        : JSC::JSNonFinalObject(vm, structure)
    7575    {
     76        didBecomePrototype();
    7677    }
    7778
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp

    r245082 r246714  
    7070        : JSC::JSNonFinalObject(vm, structure)
    7171    {
     72        didBecomePrototype();
    7273    }
    7374
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp

    r245082 r246714  
    7171        : JSC::JSNonFinalObject(vm, structure)
    7272    {
     73        didBecomePrototype();
    7374    }
    7475
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp

    r246490 r246714  
    6666        : JSC::JSNonFinalObject(vm, structure)
    6767    {
     68        didBecomePrototype();
    6869    }
    6970
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp

    r246490 r246714  
    6666        : JSC::JSNonFinalObject(vm, structure)
    6767    {
     68        didBecomePrototype();
    6869    }
    6970
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp

    r246490 r246714  
    7373        : JSC::JSNonFinalObject(vm, structure)
    7474    {
     75        didBecomePrototype();
    7576    }
    7677
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp

    r245082 r246714  
    6666        : JSC::JSNonFinalObject(vm, structure)
    6767    {
     68        didBecomePrototype();
    6869    }
    6970
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp

    r246490 r246714  
    6565        : JSC::JSNonFinalObject(vm, structure)
    6666    {
     67        didBecomePrototype();
    6768    }
    6869
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp

    r246490 r246714  
    6565        : JSC::JSNonFinalObject(vm, structure)
    6666    {
     67        didBecomePrototype();
    6768    }
    6869
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp

    r246490 r246714  
    7070        : JSC::JSNonFinalObject(vm, structure)
    7171    {
     72        didBecomePrototype();
    7273    }
    7374
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp

    r246490 r246714  
    6666        : JSC::JSNonFinalObject(vm, structure)
    6767    {
     68        didBecomePrototype();
    6869    }
    6970
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp

    r246490 r246714  
    6565        : JSC::JSNonFinalObject(vm, structure)
    6666    {
     67        didBecomePrototype();
    6768    }
    6869
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp

    r246490 r246714  
    6565        : JSC::JSNonFinalObject(vm, structure)
    6666    {
     67        didBecomePrototype();
    6768    }
    6869
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp

    r246490 r246714  
    7070        : JSC::JSNonFinalObject(vm, structure)
    7171    {
     72        didBecomePrototype();
    7273    }
    7374
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp

    r246490 r246714  
    6565        : JSC::JSNonFinalObject(vm, structure)
    6666    {
     67        didBecomePrototype();
    6768    }
    6869
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp

    r246490 r246714  
    6565        : JSC::JSNonFinalObject(vm, structure)
    6666    {
     67        didBecomePrototype();
    6768    }
    6869
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp

    r246490 r246714  
    7070        : JSC::JSNonFinalObject(vm, structure)
    7171    {
     72        didBecomePrototype();
    7273    }
    7374
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp

    r246490 r246714  
    7373        : JSC::JSNonFinalObject(vm, structure)
    7474    {
     75        didBecomePrototype();
    7576    }
    7677
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp

    r246490 r246714  
    7373        : JSC::JSNonFinalObject(vm, structure)
    7474    {
     75        didBecomePrototype();
    7576    }
    7677
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp

    r246490 r246714  
    6565        : JSC::JSNonFinalObject(vm, structure)
    6666    {
     67        didBecomePrototype();
    6768    }
    6869
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp

    r246490 r246714  
    7272        : JSC::JSNonFinalObject(vm, structure)
    7373    {
     74        didBecomePrototype();
    7475    }
    7576
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp

    r246490 r246714  
    7272        : JSC::JSNonFinalObject(vm, structure)
    7373    {
     74        didBecomePrototype();
    7475    }
    7576
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp

    r245082 r246714  
    8989        : JSC::JSNonFinalObject(vm, structure)
    9090    {
     91        didBecomePrototype();
    9192    }
    9293
     
    109110template<> JSValue JSTestNodeConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
    110111{
    111     return JSNode::getConstructor(vm, &globalObject);
     112    auto result = JSNode::getConstructor(vm, &globalObject);
     113    result.getObject()->didBecomePrototype();
     114    return result;
    112115}
    113116
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp

    r246636 r246714  
    18201820        : JSC::JSNonFinalObject(vm, structure)
    18211821    {
     1822        didBecomePrototype();
    18221823    }
    18231824
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp

    r245082 r246714  
    6969        : JSC::JSNonFinalObject(vm, structure)
    7070    {
     71        didBecomePrototype();
    7172    }
    7273
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp

    r245082 r246714  
    6868        : JSC::JSNonFinalObject(vm, structure)
    6969    {
     70        didBecomePrototype();
    7071    }
    7172
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp

    r246490 r246714  
    7373        : JSC::JSNonFinalObject(vm, structure)
    7474    {
     75        didBecomePrototype();
    7576    }
    7677
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp

    r245082 r246714  
    6464        : JSC::JSNonFinalObject(vm, structure)
    6565    {
     66        didBecomePrototype();
    6667    }
    6768
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp

    r245082 r246714  
    148148        : JSC::JSNonFinalObject(vm, structure)
    149149    {
     150        didBecomePrototype();
    150151    }
    151152
     
    175176template<> JSValue JSTestPromiseRejectionEventConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
    176177{
    177     return JSEvent::getConstructor(vm, &globalObject);
     178    auto result = JSEvent::getConstructor(vm, &globalObject);
     179    result.getObject()->didBecomePrototype();
     180    return result;
    178181}
    179182
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp

    r245082 r246714  
    105105        : JSC::JSNonFinalObject(vm, structure)
    106106    {
     107        didBecomePrototype();
    107108    }
    108109
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp

    r245082 r246714  
    6262        : JSC::JSNonFinalObject(vm, structure)
    6363    {
     64        didBecomePrototype();
    6465    }
    6566
     
    7172template<> JSValue JSTestSerializationIndirectInheritanceConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
    7273{
    73     return JSTestSerializationInherit::getConstructor(vm, &globalObject);
     74    auto result = JSTestSerializationInherit::getConstructor(vm, &globalObject);
     75    result.getObject()->didBecomePrototype();
     76    return result;
    7477}
    7578
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp

    r245082 r246714  
    7272        : JSC::JSNonFinalObject(vm, structure)
    7373    {
     74        didBecomePrototype();
    7475    }
    7576
     
    8182template<> JSValue JSTestSerializationInheritConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
    8283{
    83     return JSTestSerialization::getConstructor(vm, &globalObject);
     84    auto result = JSTestSerialization::getConstructor(vm, &globalObject);
     85    result.getObject()->didBecomePrototype();
     86    return result;
    8487}
    8588
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp

    r245082 r246714  
    7474        : JSC::JSNonFinalObject(vm, structure)
    7575    {
     76        didBecomePrototype();
    7677    }
    7778
     
    8384template<> JSValue JSTestSerializationInheritFinalConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
    8485{
    85     return JSTestSerializationInherit::getConstructor(vm, &globalObject);
     86    auto result = JSTestSerializationInherit::getConstructor(vm, &globalObject);
     87    result.getObject()->didBecomePrototype();
     88    return result;
    8689}
    8790
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp

    r245082 r246714  
    8787        : JSC::JSNonFinalObject(vm, structure)
    8888    {
     89        didBecomePrototype();
    8990    }
    9091
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp

    r245082 r246714  
    6969        : JSC::JSNonFinalObject(vm, structure)
    7070    {
     71        didBecomePrototype();
    7172    }
    7273
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp

    r245082 r246714  
    6969        : JSC::JSNonFinalObject(vm, structure)
    7070    {
     71        didBecomePrototype();
    7172    }
    7273
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp

    r245082 r246714  
    7070        : JSC::JSNonFinalObject(vm, structure)
    7171    {
     72        didBecomePrototype();
    7273    }
    7374
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp

    r245082 r246714  
    7070        : JSC::JSNonFinalObject(vm, structure)
    7171    {
     72        didBecomePrototype();
    7273    }
    7374
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp

    r245082 r246714  
    6969        : JSC::JSNonFinalObject(vm, structure)
    7070    {
     71        didBecomePrototype();
    7172    }
    7273
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp

    r245082 r246714  
    7171        : JSC::JSNonFinalObject(vm, structure)
    7272    {
     73        didBecomePrototype();
    7374    }
    7475
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp

    r245082 r246714  
    7272        : JSC::JSNonFinalObject(vm, structure)
    7373    {
     74        didBecomePrototype();
    7475    }
    7576
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp

    r245082 r246714  
    115115        : JSC::JSNonFinalObject(vm, structure)
    116116    {
     117        didBecomePrototype();
    117118    }
    118119
Note: See TracChangeset for help on using the changeset viewer.