1320408 - Part 9: Change JSObject::setFlags and depending methods to static method.

This commit is contained in:
Gaming4JC 2019-06-08 19:49:29 -04:00 • committed by Roy Tam
commit 7f856ff769
14 changed files with 61 additions and 55 deletions

View file

@ -1206,38 +1206,37 @@ NativeObject::shadowingShapeChange(ExclusiveContext* cx, const Shape& shape)
return generateOwnShape(cx);
}
bool
JSObject::setFlags(ExclusiveContext* cx, BaseShape::Flag flags, GenerateShape generateShape)
/* static */ bool
JSObject::setFlags(ExclusiveContext* cx, HandleObject obj, BaseShape::Flag flags,
GenerateShape generateShape)
{
if (hasAllFlags(flags))
if (obj->hasAllFlags(flags))
return true;
RootedObject self(cx, this);
Shape* existingShape = self->ensureShape(cx);
Shape* existingShape = obj->ensureShape(cx);
if (!existingShape)
return false;
if (isNative() && as<NativeObject>().inDictionaryMode()) {
if (generateShape == GENERATE_SHAPE && !as<NativeObject>().generateOwnShape(cx))
if (obj->isNative() && obj->as<NativeObject>().inDictionaryMode()) {
if (generateShape == GENERATE_SHAPE && !obj->as<NativeObject>().generateOwnShape(cx))
return false;
StackBaseShape base(self->as<NativeObject>().lastProperty());
StackBaseShape base(obj->as<NativeObject>().lastProperty());
base.flags |= flags;
UnownedBaseShape* nbase = BaseShape::getUnowned(cx, base);
if (!nbase)
return false;
self->as<NativeObject>().lastProperty()->base()->adoptUnowned(nbase);
obj->as<NativeObject>().lastProperty()->base()->adoptUnowned(nbase);
return true;
}
Shape* newShape = Shape::setObjectFlags(cx, flags, self->taggedProto(), existingShape);
Shape* newShape = Shape::setObjectFlags(cx, flags, obj->taggedProto(), existingShape);
if (!newShape)
return false;
// The success of the |JSObject::ensureShape| call above means that |self|
// The success of the |JSObject::ensureShape| call above means that |obj|
// can be assumed to have a shape.
self->as<ShapedObject>().setShape(newShape);
obj->as<ShapedObject>().setShape(newShape);
return true;
}