Diff
Modified: trunk/JSTests/ChangeLog (244707 => 244708)
--- trunk/JSTests/ChangeLog 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/JSTests/ChangeLog 2019-04-26 22:21:25 UTC (rev 244708)
@@ -1,3 +1,12 @@
+2019-04-26 Robin Morisset <[email protected]>
+
+ All prototypes should call didBecomePrototype()
+ https://bugs.webkit.org/show_bug.cgi?id=196315
+
+ Reviewed by Saam Barati.
+
+ * stress/function-prototype-indexed-accessor.js: Added.
+
2019-04-23 Saam Barati <[email protected]>
LICM incorrectly assumes it'll never insert a node which provably OSR exits
Added: trunk/JSTests/stress/function-prototype-indexed-accessor.js (0 => 244708)
--- trunk/JSTests/stress/function-prototype-indexed-accessor.js (rev 0)
+++ trunk/JSTests/stress/function-prototype-indexed-accessor.js 2019-04-26 22:21:25 UTC (rev 244708)
@@ -0,0 +1,3 @@
+Function[0] = 0;
+Object.defineProperty(Function.__proto__, '42', { set: ()=>{} });
+Function[1000] = 0;
Modified: trunk/Source/_javascript_Core/ChangeLog (244707 => 244708)
--- trunk/Source/_javascript_Core/ChangeLog 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/ChangeLog 2019-04-26 22:21:25 UTC (rev 244708)
@@ -1,3 +1,82 @@
+2019-04-26 Robin Morisset <[email protected]>
+
+ All prototypes should call didBecomePrototype()
+ https://bugs.webkit.org/show_bug.cgi?id=196315
+
+ Reviewed by Saam Barati.
+
+ 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):
+
2019-04-26 Don Olmstead <[email protected]>
Add WTF::findIgnoringASCIICaseWithoutLength to replace strcasestr
Modified: trunk/Source/_javascript_Core/runtime/BigIntPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/BigIntPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/BigIntPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -73,6 +73,7 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "BigInt"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+ didBecomePrototype();
}
// ------------------------------ Functions ---------------------------
Modified: trunk/Source/_javascript_Core/runtime/BooleanPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/BooleanPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/BooleanPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -59,6 +59,7 @@
{
Base::finishCreation(vm);
setInternalValue(vm, jsBoolean(false));
+ didBecomePrototype();
ASSERT(inherits(vm, info()));
}
Modified: trunk/Source/_javascript_Core/runtime/DatePrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/DatePrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/DatePrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -515,6 +515,7 @@
JSFunction* toPrimitiveFunction = JSFunction::create(vm, globalObject, 1, "[Symbol.toPrimitive]"_s, dateProtoFuncToPrimitiveSymbol, NoIntrinsic);
putDirectWithoutTransition(vm, vm.propertyNames->toPrimitiveSymbol, toPrimitiveFunction, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+ didBecomePrototype();
// The constructor will be added later, after DateConstructor has been built.
}
Modified: trunk/Source/_javascript_Core/runtime/ErrorConstructor.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/ErrorConstructor.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/ErrorConstructor.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -48,6 +48,7 @@
putDirectWithoutTransition(vm, vm.propertyNames->prototype, errorPrototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly);
putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
putDirectWithoutTransition(vm, vm.propertyNames->stackTraceLimit, jsNumber(globalObject(vm)->stackTraceLimit().valueOr(Options::defaultErrorStackTraceLimit())), static_cast<unsigned>(PropertyAttribute::None));
+ didBecomePrototype();
}
// ECMA 15.9.3
Modified: trunk/Source/_javascript_Core/runtime/ErrorPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/ErrorPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/ErrorPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -66,6 +66,7 @@
ASSERT(inherits(vm, info()));
putDirectWithoutTransition(vm, vm.propertyNames->name, jsString(&vm, name), static_cast<unsigned>(PropertyAttribute::DontEnum));
putDirectWithoutTransition(vm, vm.propertyNames->message, jsEmptyString(&vm), static_cast<unsigned>(PropertyAttribute::DontEnum));
+ didBecomePrototype();
}
// ------------------------------ Functions ---------------------------
Modified: trunk/Source/_javascript_Core/runtime/FunctionConstructor.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/FunctionConstructor.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/FunctionConstructor.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -61,6 +61,7 @@
Base::finishCreation(vm, vm.propertyNames->Function.string(), NameVisibility::Visible, NameAdditionMode::WithoutStructureTransition);
putDirectWithoutTransition(vm, vm.propertyNames->prototype, functionPrototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly);
putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
+ didBecomePrototype();
}
// ECMA 15.3.2 The Function Constructor
Modified: trunk/Source/_javascript_Core/runtime/FunctionPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/FunctionPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/FunctionPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -54,6 +54,7 @@
{
Base::finishCreation(vm, name, NameVisibility::Visible, NameAdditionMode::WithoutStructureTransition);
putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
+ didBecomePrototype();
}
void FunctionPrototype::addFunctionProperties(VM& vm, JSGlobalObject* globalObject, JSFunction** callFunction, JSFunction** applyFunction, JSFunction** hasInstanceSymbolFunction)
Modified: trunk/Source/_javascript_Core/runtime/IntlCollatorPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/IntlCollatorPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/IntlCollatorPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -76,6 +76,7 @@
Base::finishCreation(vm);
putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Object"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+ didBecomePrototype();
}
static EncodedJSValue JSC_HOST_CALL IntlCollatorFuncCompare(ExecState* state)
Modified: trunk/Source/_javascript_Core/runtime/IntlDateTimeFormatPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/IntlDateTimeFormatPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/IntlDateTimeFormatPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -90,6 +90,7 @@
#endif
putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Object"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+ didBecomePrototype();
}
static EncodedJSValue JSC_HOST_CALL IntlDateTimeFormatFuncFormatDateTime(ExecState* state)
Modified: trunk/Source/_javascript_Core/runtime/IntlNumberFormatPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/IntlNumberFormatPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/IntlNumberFormatPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -88,6 +88,7 @@
#endif
putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Object"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+ didBecomePrototype();
}
static EncodedJSValue JSC_HOST_CALL IntlNumberFormatFuncFormatNumber(ExecState* state)
Modified: trunk/Source/_javascript_Core/runtime/IntlPluralRulesPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/IntlPluralRulesPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/IntlPluralRulesPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -75,6 +75,7 @@
Base::finishCreation(vm);
putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Object"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+ didBecomePrototype();
}
EncodedJSValue JSC_HOST_CALL IntlPluralRulesPrototypeFuncSelect(ExecState* state)
Modified: trunk/Source/_javascript_Core/runtime/JSArrayBufferPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/JSArrayBufferPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/JSArrayBufferPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -121,6 +121,7 @@
JSC_NATIVE_GETTER_WITHOUT_TRANSITION(vm.propertyNames->byteLength, arrayBufferProtoGetterFuncByteLength, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
else
JSC_NATIVE_GETTER_WITHOUT_TRANSITION(vm.propertyNames->byteLength, sharedArrayBufferProtoGetterFuncByteLength, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+ didBecomePrototype();
}
JSArrayBufferPrototype* JSArrayBufferPrototype::create(VM& vm, JSGlobalObject* globalObject, Structure* structure, ArrayBufferSharingMode sharingMode)
Modified: trunk/Source/_javascript_Core/runtime/JSDataViewPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/JSDataViewPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/JSDataViewPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -110,6 +110,7 @@
{
Base::finishCreation(vm);
putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "DataView"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+ didBecomePrototype();
}
Structure* JSDataViewPrototype::createStructure(
Modified: trunk/Source/_javascript_Core/runtime/JSGenericTypedArrayViewPrototypeInlines.h (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/JSGenericTypedArrayViewPrototypeInlines.h 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/JSGenericTypedArrayViewPrototypeInlines.h 2019-04-26 22:21:25 UTC (rev 244708)
@@ -45,6 +45,7 @@
putDirect(vm, vm.propertyNames->BYTES_PER_ELEMENT, jsNumber(ViewClass::elementSize), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly | PropertyAttribute::DontDelete);
+ didBecomePrototype();
}
template<typename ViewClass>
Modified: trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -232,7 +232,9 @@
static JSValue createConsoleProperty(VM& vm, JSObject* object)
{
JSGlobalObject* global = jsCast<JSGlobalObject*>(object);
- return ConsoleObject::create(vm, global, ConsoleObject::createStructure(vm, global, constructEmptyObject(global->globalExec())));
+ JSValue prototype = constructEmptyObject(global->globalExec());
+ prototype.getObject()->didBecomePrototype();
+ return ConsoleObject::create(vm, global, ConsoleObject::createStructure(vm, global, prototype));
}
static EncodedJSValue JSC_HOST_CALL makeBoundFunction(ExecState* exec)
Modified: trunk/Source/_javascript_Core/runtime/JSPromisePrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/JSPromisePrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/JSPromisePrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -77,6 +77,7 @@
{
Base::finishCreation(vm);
putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Promise"), PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+ didBecomePrototype();
}
void JSPromisePrototype::addOwnInternalSlots(VM& vm, JSGlobalObject* globalObject)
Modified: trunk/Source/_javascript_Core/runtime/JSTypedArrayViewConstructor.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/JSTypedArrayViewConstructor.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/JSTypedArrayViewConstructor.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -55,6 +55,8 @@
JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->of, typedArrayConstructorOfCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->from, typedArrayConstructorFromCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
+
+ didBecomePrototype();
}
Structure* JSTypedArrayViewConstructor::createStructure(
Modified: trunk/Source/_javascript_Core/runtime/JSTypedArrayViewPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/JSTypedArrayViewPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/JSTypedArrayViewPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -334,6 +334,7 @@
putDirectWithoutTransition(vm, vm.propertyNames->builtinNames().valuesPublicName(), valuesFunction, static_cast<unsigned>(PropertyAttribute::DontEnum));
putDirectWithoutTransition(vm, vm.propertyNames->iteratorSymbol, valuesFunction, static_cast<unsigned>(PropertyAttribute::DontEnum));
+ didBecomePrototype();
}
JSTypedArrayViewPrototype* JSTypedArrayViewPrototype::create(
Modified: trunk/Source/_javascript_Core/runtime/NumberPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/NumberPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/NumberPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -82,6 +82,7 @@
JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->toString, numberProtoFuncToString, static_cast<unsigned>(PropertyAttribute::DontEnum), 1, NumberPrototypeToStringIntrinsic);
ASSERT(inherits(vm, info()));
+ didBecomePrototype();
}
// ------------------------------ Functions ---------------------------
Modified: trunk/Source/_javascript_Core/runtime/RegExpPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/RegExpPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/RegExpPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -81,6 +81,8 @@
JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->searchSymbol, regExpPrototypeSearchCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->splitSymbol, regExpPrototypeSplitCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->test, regExpPrototypeTestCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
+
+ didBecomePrototype();
}
// ------------------------------ Functions ---------------------------
Modified: trunk/Source/_javascript_Core/runtime/StringPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/StringPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/StringPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -172,6 +172,8 @@
// The constructor will be added later, after StringConstructor has been built
putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
+
+ didBecomePrototype();
}
StringPrototype* StringPrototype::create(VM& vm, JSGlobalObject* globalObject, Structure* structure)
Modified: trunk/Source/_javascript_Core/runtime/Structure.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/Structure.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/Structure.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -321,6 +321,11 @@
return result;
}
+bool Structure::isValidPrototype(JSValue prototype)
+{
+ return prototype.isNull() || (prototype.isObject() && prototype.getObject()->mayBePrototype());
+}
+
void Structure::findStructuresAndMapForMaterialization(Vector<Structure*, 8>& structures, Structure*& structure, PropertyTable*& table)
{
ASSERT(structures.isEmpty());
@@ -544,7 +549,7 @@
Structure* Structure::changePrototypeTransition(VM& vm, Structure* structure, JSValue prototype, DeferredStructureTransitionWatchpointFire& deferred)
{
- ASSERT(prototype.isObject() || prototype.isNull());
+ ASSERT(isValidPrototype(prototype));
DeferGC deferGC(vm.heap);
Structure* transition = create(vm, structure, &deferred);
Modified: trunk/Source/_javascript_Core/runtime/Structure.h (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/Structure.h 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/Structure.h 2019-04-26 22:21:25 UTC (rev 244708)
@@ -142,7 +142,7 @@
void finishCreation(VM& vm)
{
Base::finishCreation(vm);
- ASSERT(m_prototype.get().isEmpty() || m_prototype.isObject() || m_prototype.isNull());
+ ASSERT(m_prototype.get().isEmpty() || isValidPrototype(m_prototype.get()));
}
void finishCreation(VM& vm, const Structure* previous)
@@ -680,6 +680,8 @@
void checkConsistency();
+ JS_EXPORT_PRIVATE static bool isValidPrototype(JSValue);
+
// This may grab the lock, or not. Do not call when holding the Structure's lock.
PropertyTable* ensurePropertyTableIfNotEmpty(VM& vm)
{
Modified: trunk/Source/_javascript_Core/runtime/SymbolPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/runtime/SymbolPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/runtime/SymbolPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -67,6 +67,8 @@
JSFunction* toPrimitiveFunction = JSFunction::create(vm, globalObject, 1, "[Symbol.toPrimitive]"_s, symbolProtoFuncValueOf, NoIntrinsic);
putDirectWithoutTransition(vm, vm.propertyNames->toPrimitiveSymbol, toPrimitiveFunction, PropertyAttribute::DontEnum | PropertyAttribute::ReadOnly);
+
+ didBecomePrototype();
}
// ------------------------------ Functions ---------------------------
Modified: trunk/Source/_javascript_Core/wasm/js/WebAssemblyCompileErrorPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/wasm/js/WebAssemblyCompileErrorPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/wasm/js/WebAssemblyCompileErrorPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -57,6 +57,7 @@
void WebAssemblyCompileErrorPrototype::finishCreation(VM& vm)
{
Base::finishCreation(vm);
+ didBecomePrototype();
}
WebAssemblyCompileErrorPrototype::WebAssemblyCompileErrorPrototype(VM& vm, Structure* structure)
Modified: trunk/Source/_javascript_Core/wasm/js/WebAssemblyInstancePrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/wasm/js/WebAssemblyInstancePrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/wasm/js/WebAssemblyInstancePrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -86,6 +86,7 @@
void WebAssemblyInstancePrototype::finishCreation(VM& vm)
{
Base::finishCreation(vm);
+ didBecomePrototype();
}
WebAssemblyInstancePrototype::WebAssemblyInstancePrototype(VM& vm, Structure* structure)
Modified: trunk/Source/_javascript_Core/wasm/js/WebAssemblyLinkErrorPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/wasm/js/WebAssemblyLinkErrorPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/wasm/js/WebAssemblyLinkErrorPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -57,6 +57,7 @@
void WebAssemblyLinkErrorPrototype::finishCreation(VM& vm)
{
Base::finishCreation(vm);
+ didBecomePrototype();
}
WebAssemblyLinkErrorPrototype::WebAssemblyLinkErrorPrototype(VM& vm, Structure* structure)
Modified: trunk/Source/_javascript_Core/wasm/js/WebAssemblyMemoryPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/wasm/js/WebAssemblyMemoryPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/wasm/js/WebAssemblyMemoryPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -109,6 +109,7 @@
{
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ didBecomePrototype();
}
WebAssemblyMemoryPrototype::WebAssemblyMemoryPrototype(VM& vm, Structure* structure)
Modified: trunk/Source/_javascript_Core/wasm/js/WebAssemblyModulePrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/wasm/js/WebAssemblyModulePrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/wasm/js/WebAssemblyModulePrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -56,6 +56,7 @@
void WebAssemblyModulePrototype::finishCreation(VM& vm)
{
Base::finishCreation(vm);
+ didBecomePrototype();
}
WebAssemblyModulePrototype::WebAssemblyModulePrototype(VM& vm, Structure* structure)
Modified: trunk/Source/_javascript_Core/wasm/js/WebAssemblyPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/wasm/js/WebAssemblyPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/wasm/js/WebAssemblyPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -381,6 +381,8 @@
JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION("compileStreaming", webAssemblyPrototypeCompileStreamingCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION("instantiateStreaming", webAssemblyPrototypeInstantiateStreamingCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
}
+
+ didBecomePrototype();
}
WebAssemblyPrototype::WebAssemblyPrototype(VM& vm, Structure* structure)
Modified: trunk/Source/_javascript_Core/wasm/js/WebAssemblyRuntimeErrorPrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/wasm/js/WebAssemblyRuntimeErrorPrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/wasm/js/WebAssemblyRuntimeErrorPrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -57,6 +57,7 @@
void WebAssemblyRuntimeErrorPrototype::finishCreation(VM& vm)
{
Base::finishCreation(vm);
+ didBecomePrototype();
}
WebAssemblyRuntimeErrorPrototype::WebAssemblyRuntimeErrorPrototype(VM& vm, Structure* structure)
Modified: trunk/Source/_javascript_Core/wasm/js/WebAssemblyTablePrototype.cpp (244707 => 244708)
--- trunk/Source/_javascript_Core/wasm/js/WebAssemblyTablePrototype.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/_javascript_Core/wasm/js/WebAssemblyTablePrototype.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -164,6 +164,7 @@
{
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ didBecomePrototype();
}
WebAssemblyTablePrototype::WebAssemblyTablePrototype(VM& vm, Structure* structure)
Modified: trunk/Source/WebCore/ChangeLog (244707 => 244708)
--- trunk/Source/WebCore/ChangeLog 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/ChangeLog 2019-04-26 22:21:25 UTC (rev 244708)
@@ -1,3 +1,18 @@
+2019-04-26 Robin Morisset <[email protected]>
+
+ All prototypes should call didBecomePrototype()
+ https://bugs.webkit.org/show_bug.cgi?id=196315
+
+ Reviewed by Saam Barati.
+
+ 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):
+
2019-04-26 Eric Carlson <[email protected]>
Create AVFoundationSoftLink.{h,mm} to reduce duplicate code
Modified: trunk/Source/WebCore/bindings/js/JSWindowProxy.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/js/JSWindowProxy.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/js/JSWindowProxy.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -97,6 +97,7 @@
// FIXME: Why do we need to protect this when there's a pointer to it on the stack?
// Perhaps the issue is that structure objects aren't seen when scanning the stack?
Strong<JSNonFinalObject> prototype(vm, isRemoteDOMWindow ? static_cast<JSNonFinalObject*>(JSRemoteDOMWindowPrototype::create(vm, nullptr, &prototypeStructure)) : static_cast<JSNonFinalObject*>(JSDOMWindowPrototype::create(vm, nullptr, &prototypeStructure)));
+ prototype->didBecomePrototype();
JSDOMGlobalObject* window = nullptr;
if (isRemoteDOMWindow) {
Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2019-04-26 22:21:25 UTC (rev 244708)
@@ -7070,6 +7070,7 @@
push(@$outputArray, " ${prototypeClassName}(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)\n");
push(@$outputArray, " : JSC::JSNonFinalObject(vm, structure)\n");
push(@$outputArray, " {\n");
+ push(@$outputArray, " didBecomePrototype();\n");
push(@$outputArray, " }\n");
if (PrototypeHasStaticPropertyTable($interface)) {
@@ -7304,7 +7305,9 @@
if (!$generatingNamedConstructor and $interface->parentType) {
my $parentClassName = "JS" . $interface->parentType->name;
- push(@$outputArray, " return ${parentClassName}::getConstructor(vm, &globalObject);\n");
+ push(@$outputArray, " auto result = ${parentClassName}::getConstructor(vm, &globalObject);\n");
+ push(@$outputArray, " result.getObject()->didBecomePrototype();\n");
+ push(@$outputArray, " return result;\n");
} else {
AddToImplIncludes("<_javascript_Core/FunctionPrototype.h>");
push(@$outputArray, " UNUSED_PARAM(vm);\n");
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -62,6 +62,7 @@
JSInterfaceNamePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -81,6 +81,7 @@
JSMapLikePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -78,6 +78,7 @@
JSReadOnlyMapLikePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -75,6 +75,7 @@
JSTestActiveDOMObjectPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -87,6 +87,7 @@
JSTestCEReactionsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -74,6 +74,7 @@
JSTestCEReactionsStringifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -92,6 +92,7 @@
JSTestCallTracerPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -63,6 +63,7 @@
JSTestClassWithJSBuiltinConstructorPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -485,6 +485,7 @@
JSTestDOMJITPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
@@ -494,7 +495,9 @@
template<> JSValue JSTestDOMJITConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
{
- return JSNode::getConstructor(vm, &globalObject);
+ auto result = JSNode::getConstructor(vm, &globalObject);
+ result.getObject()->didBecomePrototype();
+ return result;
}
template<> void JSTestDOMJITConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -84,6 +84,7 @@
JSTestEnabledBySettingPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -144,6 +144,7 @@
JSTestEventConstructorPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
@@ -170,7 +171,9 @@
template<> JSValue JSTestEventConstructorConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
{
- return JSEvent::getConstructor(vm, &globalObject);
+ auto result = JSEvent::getConstructor(vm, &globalObject);
+ result.getObject()->didBecomePrototype();
+ return result;
}
template<> void JSTestEventConstructorConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -72,6 +72,7 @@
JSTestEventTargetPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
@@ -81,7 +82,9 @@
template<> JSValue JSTestEventTargetConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
{
- return JSEventTarget::getConstructor(vm, &globalObject);
+ auto result = JSEventTarget::getConstructor(vm, &globalObject);
+ result.getObject()->didBecomePrototype();
+ return result;
}
template<> void JSTestEventTargetConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -65,6 +65,7 @@
JSTestExceptionPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -65,6 +65,7 @@
JSTestGenerateIsReachablePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h 2019-04-26 22:21:25 UTC (rev 244708)
@@ -102,6 +102,7 @@
JSTestGlobalObjectPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
public:
static const unsigned StructureFlags = Base::StructureFlags | JSC::HasStaticPropertyTable;
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -64,6 +64,7 @@
JSTestIndexedSetterNoIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -64,6 +64,7 @@
JSTestIndexedSetterThrowingExceptionPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -70,6 +70,7 @@
JSTestIndexedSetterWithIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -168,6 +168,7 @@
JSTestInterfacePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -65,6 +65,7 @@
JSTestInterfaceLeadingUnderscorePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -73,6 +73,7 @@
JSTestIterablePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -69,6 +69,7 @@
JSTestJSBuiltinConstructorPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -70,6 +70,7 @@
JSTestMediaQueryListListenerPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -65,6 +65,7 @@
JSTestNamedAndIndexedSetterNoIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -65,6 +65,7 @@
JSTestNamedAndIndexedSetterThrowingExceptionPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -72,6 +72,7 @@
JSTestNamedAndIndexedSetterWithIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -65,6 +65,7 @@
JSTestNamedConstructorPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -64,6 +64,7 @@
JSTestNamedDeleterNoIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -64,6 +64,7 @@
JSTestNamedDeleterThrowingExceptionPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -69,6 +69,7 @@
JSTestNamedDeleterWithIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -65,6 +65,7 @@
JSTestNamedDeleterWithIndexedGetterPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -64,6 +64,7 @@
JSTestNamedGetterCallWithPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -64,6 +64,7 @@
JSTestNamedGetterNoIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -69,6 +69,7 @@
JSTestNamedGetterWithIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -64,6 +64,7 @@
JSTestNamedSetterNoIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -64,6 +64,7 @@
JSTestNamedSetterThrowingExceptionPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -69,6 +69,7 @@
JSTestNamedSetterWithIdentifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -72,6 +72,7 @@
JSTestNamedSetterWithIndexedGetterPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -72,6 +72,7 @@
JSTestNamedSetterWithIndexedGetterAndSetterPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -64,6 +64,7 @@
JSTestNamedSetterWithOverrideBuiltinsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -71,6 +71,7 @@
JSTestNamedSetterWithUnforgablePropertiesPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -71,6 +71,7 @@
JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -88,6 +88,7 @@
JSTestNodePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
@@ -108,7 +109,9 @@
template<> JSValue JSTestNodeConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
{
- return JSNode::getConstructor(vm, &globalObject);
+ auto result = JSNode::getConstructor(vm, &globalObject);
+ result.getObject()->didBecomePrototype();
+ return result;
}
template<> void JSTestNodeConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -1819,6 +1819,7 @@
JSTestObjPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -68,6 +68,7 @@
JSTestOverloadedConstructorsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -67,6 +67,7 @@
JSTestOverloadedConstructorsWithSequencePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -72,6 +72,7 @@
JSTestOverrideBuiltinsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -63,6 +63,7 @@
JSTestPluginInterfacePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -147,6 +147,7 @@
JSTestPromiseRejectionEventPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
@@ -174,7 +175,9 @@
template<> JSValue JSTestPromiseRejectionEventConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
{
- return JSEvent::getConstructor(vm, &globalObject);
+ auto result = JSEvent::getConstructor(vm, &globalObject);
+ result.getObject()->didBecomePrototype();
+ return result;
}
template<> void JSTestPromiseRejectionEventConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -104,6 +104,7 @@
JSTestSerializationPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -61,6 +61,7 @@
JSTestSerializationIndirectInheritancePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
@@ -70,7 +71,9 @@
template<> JSValue JSTestSerializationIndirectInheritanceConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
{
- return JSTestSerializationInherit::getConstructor(vm, &globalObject);
+ auto result = JSTestSerializationInherit::getConstructor(vm, &globalObject);
+ result.getObject()->didBecomePrototype();
+ return result;
}
template<> void JSTestSerializationIndirectInheritanceConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -71,6 +71,7 @@
JSTestSerializationInheritPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
@@ -80,7 +81,9 @@
template<> JSValue JSTestSerializationInheritConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
{
- return JSTestSerialization::getConstructor(vm, &globalObject);
+ auto result = JSTestSerialization::getConstructor(vm, &globalObject);
+ result.getObject()->didBecomePrototype();
+ return result;
}
template<> void JSTestSerializationInheritConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -73,6 +73,7 @@
JSTestSerializationInheritFinalPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
@@ -82,7 +83,9 @@
template<> JSValue JSTestSerializationInheritFinalConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
{
- return JSTestSerializationInherit::getConstructor(vm, &globalObject);
+ auto result = JSTestSerializationInherit::getConstructor(vm, &globalObject);
+ result.getObject()->didBecomePrototype();
+ return result;
}
template<> void JSTestSerializationInheritFinalConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -86,6 +86,7 @@
JSTestSerializedScriptValueInterfacePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -68,6 +68,7 @@
JSTestStringifierPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -68,6 +68,7 @@
JSTestStringifierAnonymousOperationPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -69,6 +69,7 @@
JSTestStringifierNamedOperationPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -69,6 +69,7 @@
JSTestStringifierOperationImplementedAsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -68,6 +68,7 @@
JSTestStringifierOperationNamedToStringPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -70,6 +70,7 @@
JSTestStringifierReadOnlyAttributePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -71,6 +71,7 @@
JSTestStringifierReadWriteAttributePrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);
Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (244707 => 244708)
--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp 2019-04-26 22:05:01 UTC (rev 244707)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp 2019-04-26 22:21:25 UTC (rev 244708)
@@ -114,6 +114,7 @@
JSTestTypedefsPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
: JSC::JSNonFinalObject(vm, structure)
{
+ didBecomePrototype();
}
void finishCreation(JSC::VM&);