1320408 - Part 18: Change StringObject::init to static method.

This commit is contained in:
Gaming4JC 2019-06-08 23:46:41 -04:00 committed by Roy Tam
commit 3fb93ffdf6
3 changed files with 13 additions and 12 deletions

View file

@ -2918,7 +2918,10 @@ js::InitStringClass(JSContext* cx, HandleObject obj)
Rooted<JSString*> empty(cx, cx->runtime()->emptyString);
RootedObject proto(cx, GlobalObject::createBlankPrototype(cx, global, &StringObject::class_));
if (!proto || !proto->as<StringObject>().init(cx, empty))
if (!proto)
return nullptr;
Handle<StringObject*> protoObj = proto.as<StringObject>();
if (!StringObject::init(cx, protoObj, empty))
return nullptr;
/* Now create the String function. */

View file

@ -15,31 +15,29 @@
namespace js {
inline bool
StringObject::init(JSContext* cx, HandleString str)
/* static */ inline bool
StringObject::init(JSContext* cx, Handle<StringObject*> obj, HandleString str)
{
MOZ_ASSERT(numFixedSlots() == 2);
MOZ_ASSERT(obj->numFixedSlots() == 2);
Rooted<StringObject*> self(cx, this);
if (!EmptyShape::ensureInitialCustomShape<StringObject>(cx, self))
if (!EmptyShape::ensureInitialCustomShape<StringObject>(cx, obj))
return false;
MOZ_ASSERT(self->lookup(cx, NameToId(cx->names().length))->slot() == LENGTH_SLOT);
MOZ_ASSERT(obj->lookup(cx, NameToId(cx->names().length))->slot() == LENGTH_SLOT);
self->setStringThis(str);
obj->setStringThis(str);
return true;
}
inline StringObject*
/* static */ inline StringObject*
StringObject::create(JSContext* cx, HandleString str, HandleObject proto, NewObjectKind newKind)
{
JSObject* obj = NewObjectWithClassProto(cx, &class_, proto, newKind);
if (!obj)
return nullptr;
Rooted<StringObject*> strobj(cx, &obj->as<StringObject>());
if (!strobj->init(cx, str))
if (!StringObject::init(cx, strobj, str))
return nullptr;
return strobj;
}

View file

@ -56,7 +56,7 @@ class StringObject : public NativeObject
}
private:
inline bool init(JSContext* cx, HandleString str);
static inline bool init(JSContext* cx, Handle<StringObject*> obj, HandleString str);
void setStringThis(JSString* str) {
MOZ_ASSERT(getReservedSlot(PRIMITIVE_VALUE_SLOT).isUndefined());