mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 966845 - Make ensureConstructor and initConstructor static. r=Waldo
This commit is contained in:
parent
ec8f21dd23
commit
3493cfbdb3
@ -1304,7 +1304,9 @@ JS_ResolveStandardClass(JSContext *cx, HandleObject obj, HandleId id, bool *reso
|
|||||||
if (stdnm->clasp->flags & JSCLASS_IS_ANONYMOUS)
|
if (stdnm->clasp->flags & JSCLASS_IS_ANONYMOUS)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!obj->as<GlobalObject>().ensureConstructor(cx, JSCLASS_CACHED_PROTO_KEY(stdnm->clasp)))
|
Rooted<GlobalObject*> global(cx, &obj->as<GlobalObject>());
|
||||||
|
JSProtoKey key = JSCLASS_CACHED_PROTO_KEY(stdnm->clasp);
|
||||||
|
if (!GlobalObject::ensureConstructor(cx, global, key))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
*resolved = true;
|
*resolved = true;
|
||||||
|
@ -3250,7 +3250,7 @@ MaybeResolveConstructor(ExclusiveContext *cxArg, Handle<GlobalObject*> global, J
|
|||||||
AutoResolving resolving(cx, global, name);
|
AutoResolving resolving(cx, global, name);
|
||||||
if (resolving.alreadyStarted())
|
if (resolving.alreadyStarted())
|
||||||
return true;
|
return true;
|
||||||
return global->ensureConstructor(cx, key);
|
return GlobalObject::ensureConstructor(cx, global, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -442,19 +442,18 @@ GlobalObject::initFunctionAndObjectClasses(JSContext *cx)
|
|||||||
return functionProto;
|
return functionProto;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
/* static */ bool
|
||||||
GlobalObject::ensureConstructor(JSContext *cx, JSProtoKey key)
|
GlobalObject::ensureConstructor(JSContext *cx, Handle<GlobalObject*> global, JSProtoKey key)
|
||||||
{
|
{
|
||||||
if (getConstructor(key).isObject())
|
if (global->getConstructor(key).isObject())
|
||||||
return true;
|
return true;
|
||||||
return initConstructor(cx, key);
|
return initConstructor(cx, global, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
/* static*/ bool
|
||||||
GlobalObject::initConstructor(JSContext *cx, JSProtoKey key)
|
GlobalObject::initConstructor(JSContext *cx, Handle<GlobalObject*> global, JSProtoKey key)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(getConstructor(key).isUndefined());
|
MOZ_ASSERT(global->getConstructor(key).isUndefined());
|
||||||
Rooted<GlobalObject*> self(cx, this);
|
|
||||||
|
|
||||||
// There are two different kinds of initialization hooks. One of them is
|
// There are two different kinds of initialization hooks. One of them is
|
||||||
// the class js_InitFoo hook, defined in a JSProtoKey-keyed table at the
|
// the class js_InitFoo hook, defined in a JSProtoKey-keyed table at the
|
||||||
@ -479,7 +478,7 @@ GlobalObject::initConstructor(JSContext *cx, JSProtoKey key)
|
|||||||
// See if there's an old-style initialization hook.
|
// See if there's an old-style initialization hook.
|
||||||
if (init) {
|
if (init) {
|
||||||
MOZ_ASSERT(!haveSpec);
|
MOZ_ASSERT(!haveSpec);
|
||||||
return init(cx, self);
|
return init(cx, global);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -519,7 +518,7 @@ GlobalObject::initConstructor(JSContext *cx, JSProtoKey key)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Stash things in the right slots and define the constructor on the global.
|
// Stash things in the right slots and define the constructor on the global.
|
||||||
return DefineConstructorAndPrototype(cx, self, key, ctor, proto);
|
return DefineConstructorAndPrototype(cx, global, key, ctor, proto);
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalObject *
|
GlobalObject *
|
||||||
@ -578,7 +577,7 @@ GlobalObject::initStandardClasses(JSContext *cx, Handle<GlobalObject*> global)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (size_t k = 0; k < JSProto_LIMIT; ++k) {
|
for (size_t k = 0; k < JSProto_LIMIT; ++k) {
|
||||||
if (!global->ensureConstructor(cx, static_cast<JSProtoKey>(k)))
|
if (!ensureConstructor(cx, global, static_cast<JSProtoKey>(k)))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -159,8 +159,8 @@ class GlobalObject : public JSObject
|
|||||||
JS_ASSERT(key <= JSProto_LIMIT);
|
JS_ASSERT(key <= JSProto_LIMIT);
|
||||||
return getSlotForCompilation(APPLICATION_SLOTS + key);
|
return getSlotForCompilation(APPLICATION_SLOTS + key);
|
||||||
}
|
}
|
||||||
bool ensureConstructor(JSContext *cx, JSProtoKey key);
|
static bool ensureConstructor(JSContext *cx, Handle<GlobalObject*> global, JSProtoKey key);
|
||||||
bool initConstructor(JSContext *cx, JSProtoKey key);
|
static bool initConstructor(JSContext *cx, Handle<GlobalObject*> global, JSProtoKey key);
|
||||||
|
|
||||||
void setConstructor(JSProtoKey key, const Value &v) {
|
void setConstructor(JSProtoKey key, const Value &v) {
|
||||||
JS_ASSERT(key <= JSProto_LIMIT);
|
JS_ASSERT(key <= JSProto_LIMIT);
|
||||||
@ -340,7 +340,7 @@ class GlobalObject : public JSObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
static JSObject *getOrCreateArrayPrototype(JSContext *cx, Handle<GlobalObject*> global) {
|
static JSObject *getOrCreateArrayPrototype(JSContext *cx, Handle<GlobalObject*> global) {
|
||||||
if (!global->ensureConstructor(cx, JSProto_Array))
|
if (!ensureConstructor(cx, global, JSProto_Array))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getPrototype(JSProto_Array).toObject();
|
return &global->getPrototype(JSProto_Array).toObject();
|
||||||
}
|
}
|
||||||
@ -352,25 +352,25 @@ class GlobalObject : public JSObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
static JSObject *getOrCreateBooleanPrototype(JSContext *cx, Handle<GlobalObject*> global) {
|
static JSObject *getOrCreateBooleanPrototype(JSContext *cx, Handle<GlobalObject*> global) {
|
||||||
if (!global->ensureConstructor(cx, JSProto_Boolean))
|
if (!ensureConstructor(cx, global, JSProto_Boolean))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getPrototype(JSProto_Boolean).toObject();
|
return &global->getPrototype(JSProto_Boolean).toObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
static JSObject *getOrCreateNumberPrototype(JSContext *cx, Handle<GlobalObject*> global) {
|
static JSObject *getOrCreateNumberPrototype(JSContext *cx, Handle<GlobalObject*> global) {
|
||||||
if (!global->ensureConstructor(cx, JSProto_Number))
|
if (!ensureConstructor(cx, global, JSProto_Number))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getPrototype(JSProto_Number).toObject();
|
return &global->getPrototype(JSProto_Number).toObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
static JSObject *getOrCreateStringPrototype(JSContext *cx, Handle<GlobalObject*> global) {
|
static JSObject *getOrCreateStringPrototype(JSContext *cx, Handle<GlobalObject*> global) {
|
||||||
if (!global->ensureConstructor(cx, JSProto_String))
|
if (!ensureConstructor(cx, global, JSProto_String))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getPrototype(JSProto_String).toObject();
|
return &global->getPrototype(JSProto_String).toObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
static JSObject *getOrCreateRegExpPrototype(JSContext *cx, Handle<GlobalObject*> global) {
|
static JSObject *getOrCreateRegExpPrototype(JSContext *cx, Handle<GlobalObject*> global) {
|
||||||
if (!global->ensureConstructor(cx, JSProto_RegExp))
|
if (!ensureConstructor(cx, global, JSProto_RegExp))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getPrototype(JSProto_RegExp).toObject();
|
return &global->getPrototype(JSProto_RegExp).toObject();
|
||||||
}
|
}
|
||||||
@ -382,7 +382,7 @@ class GlobalObject : public JSObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
static JSObject *getOrCreateArrayBufferPrototype(JSContext *cx, Handle<GlobalObject*> global) {
|
static JSObject *getOrCreateArrayBufferPrototype(JSContext *cx, Handle<GlobalObject*> global) {
|
||||||
if (!global->ensureConstructor(cx, JSProto_ArrayBuffer))
|
if (!ensureConstructor(cx, global, JSProto_ArrayBuffer))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getPrototype(JSProto_ArrayBuffer).toObject();
|
return &global->getPrototype(JSProto_ArrayBuffer).toObject();
|
||||||
}
|
}
|
||||||
@ -392,7 +392,7 @@ class GlobalObject : public JSObject
|
|||||||
JSExnType exnType)
|
JSExnType exnType)
|
||||||
{
|
{
|
||||||
JSProtoKey key = GetExceptionProtoKey(exnType);
|
JSProtoKey key = GetExceptionProtoKey(exnType);
|
||||||
if (!global->ensureConstructor(cx, key))
|
if (!ensureConstructor(cx, global, key))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getPrototype(key).toObject();
|
return &global->getPrototype(key).toObject();
|
||||||
}
|
}
|
||||||
@ -473,7 +473,7 @@ class GlobalObject : public JSObject
|
|||||||
static JSObject *getOrCreateIteratorPrototype(JSContext *cx,
|
static JSObject *getOrCreateIteratorPrototype(JSContext *cx,
|
||||||
Handle<GlobalObject*> global)
|
Handle<GlobalObject*> global)
|
||||||
{
|
{
|
||||||
if (!global->ensureConstructor(cx, JSProto_Iterator))
|
if (!ensureConstructor(cx, global, JSProto_Iterator))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getSlot(APPLICATION_SLOTS + JSProto_LIMIT + JSProto_Iterator).toObject();
|
return &global->getSlot(APPLICATION_SLOTS + JSProto_LIMIT + JSProto_Iterator).toObject();
|
||||||
}
|
}
|
||||||
@ -481,7 +481,7 @@ class GlobalObject : public JSObject
|
|||||||
static JSObject *getOrCreateArrayIteratorPrototype(JSContext *cx,
|
static JSObject *getOrCreateArrayIteratorPrototype(JSContext *cx,
|
||||||
Handle<GlobalObject*> global)
|
Handle<GlobalObject*> global)
|
||||||
{
|
{
|
||||||
if (!global->ensureConstructor(cx, JSProto_Iterator))
|
if (!ensureConstructor(cx, global, JSProto_Iterator))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getSlot(ARRAY_ITERATOR_PROTO).toObject();
|
return &global->getSlot(ARRAY_ITERATOR_PROTO).toObject();
|
||||||
}
|
}
|
||||||
@ -489,7 +489,7 @@ class GlobalObject : public JSObject
|
|||||||
static JSObject *getOrCreateStringIteratorPrototype(JSContext *cx,
|
static JSObject *getOrCreateStringIteratorPrototype(JSContext *cx,
|
||||||
Handle<GlobalObject*> global)
|
Handle<GlobalObject*> global)
|
||||||
{
|
{
|
||||||
if (!global->ensureConstructor(cx, JSProto_Iterator))
|
if (!ensureConstructor(cx, global, JSProto_Iterator))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getSlot(STRING_ITERATOR_PROTO).toObject();
|
return &global->getSlot(STRING_ITERATOR_PROTO).toObject();
|
||||||
}
|
}
|
||||||
@ -497,7 +497,7 @@ class GlobalObject : public JSObject
|
|||||||
static JSObject *getOrCreateLegacyGeneratorObjectPrototype(JSContext *cx,
|
static JSObject *getOrCreateLegacyGeneratorObjectPrototype(JSContext *cx,
|
||||||
Handle<GlobalObject*> global)
|
Handle<GlobalObject*> global)
|
||||||
{
|
{
|
||||||
if (!global->ensureConstructor(cx, JSProto_Iterator))
|
if (!ensureConstructor(cx, global, JSProto_Iterator))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getSlot(LEGACY_GENERATOR_OBJECT_PROTO).toObject();
|
return &global->getSlot(LEGACY_GENERATOR_OBJECT_PROTO).toObject();
|
||||||
}
|
}
|
||||||
@ -505,7 +505,7 @@ class GlobalObject : public JSObject
|
|||||||
static JSObject *getOrCreateStarGeneratorObjectPrototype(JSContext *cx,
|
static JSObject *getOrCreateStarGeneratorObjectPrototype(JSContext *cx,
|
||||||
Handle<GlobalObject*> global)
|
Handle<GlobalObject*> global)
|
||||||
{
|
{
|
||||||
if (!global->ensureConstructor(cx, JSProto_Iterator))
|
if (!ensureConstructor(cx, global, JSProto_Iterator))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getSlot(STAR_GENERATOR_OBJECT_PROTO).toObject();
|
return &global->getSlot(STAR_GENERATOR_OBJECT_PROTO).toObject();
|
||||||
}
|
}
|
||||||
@ -513,7 +513,7 @@ class GlobalObject : public JSObject
|
|||||||
static JSObject *getOrCreateStarGeneratorFunctionPrototype(JSContext *cx,
|
static JSObject *getOrCreateStarGeneratorFunctionPrototype(JSContext *cx,
|
||||||
Handle<GlobalObject*> global)
|
Handle<GlobalObject*> global)
|
||||||
{
|
{
|
||||||
if (!global->ensureConstructor(cx, JSProto_Iterator))
|
if (!ensureConstructor(cx, global, JSProto_Iterator))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getSlot(APPLICATION_SLOTS + JSProto_LIMIT + JSProto_GeneratorFunction).toObject();
|
return &global->getSlot(APPLICATION_SLOTS + JSProto_LIMIT + JSProto_GeneratorFunction).toObject();
|
||||||
}
|
}
|
||||||
@ -521,7 +521,7 @@ class GlobalObject : public JSObject
|
|||||||
static JSObject *getOrCreateStarGeneratorFunction(JSContext *cx,
|
static JSObject *getOrCreateStarGeneratorFunction(JSContext *cx,
|
||||||
Handle<GlobalObject*> global)
|
Handle<GlobalObject*> global)
|
||||||
{
|
{
|
||||||
if (!global->ensureConstructor(cx, JSProto_Iterator))
|
if (!ensureConstructor(cx, global, JSProto_Iterator))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &global->getSlot(APPLICATION_SLOTS + JSProto_GeneratorFunction).toObject();
|
return &global->getSlot(APPLICATION_SLOTS + JSProto_GeneratorFunction).toObject();
|
||||||
}
|
}
|
||||||
@ -540,7 +540,7 @@ class GlobalObject : public JSObject
|
|||||||
|
|
||||||
JSObject *getOrCreateDataViewPrototype(JSContext *cx) {
|
JSObject *getOrCreateDataViewPrototype(JSContext *cx) {
|
||||||
Rooted<GlobalObject*> self(cx, this);
|
Rooted<GlobalObject*> self(cx, this);
|
||||||
if (!ensureConstructor(cx, JSProto_DataView))
|
if (!ensureConstructor(cx, self, JSProto_DataView))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
return &self->getPrototype(JSProto_DataView).toObject();
|
return &self->getPrototype(JSProto_DataView).toObject();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user