Bug 1715512 part 5 - Add GetObjectFlagsForNewProperty overload that takes JSClass and ObjectFlags instead of shape. r=jonco

The overload taking a shape will be removed in a later patch.

Differential Revision: https://phabricator.services.mozilla.com/D117305
This commit is contained in:
Jan de Mooij 2021-06-17 16:51:41 +00:00
Родитель fe0f6beef0
Коммит 962566d41b
1 изменённых файлов: 11 добавлений и 6 удалений

Просмотреть файл

@ -16,10 +16,9 @@
namespace js {
MOZ_ALWAYS_INLINE ObjectFlags GetObjectFlagsForNewProperty(
Shape* last, jsid id, PropertyFlags propFlags, JSContext* cx) {
ObjectFlags flags = last->objectFlags();
MOZ_ALWAYS_INLINE ObjectFlags
GetObjectFlagsForNewProperty(const JSClass* clasp, ObjectFlags flags, jsid id,
PropertyFlags propFlags, JSContext* cx) {
uint32_t index;
if (IdIsIndex(id, &index)) {
flags.setFlag(ObjectFlag::Indexed);
@ -28,14 +27,20 @@ MOZ_ALWAYS_INLINE ObjectFlags GetObjectFlagsForNewProperty(
}
if ((!propFlags.isDataProperty() || !propFlags.writable()) &&
last->getObjectClass() == &PlainObject::class_ &&
!id.isAtom(cx->names().proto)) {
clasp == &PlainObject::class_ && !id.isAtom(cx->names().proto)) {
flags.setFlag(ObjectFlag::HasNonWritableOrAccessorPropExclProto);
}
return flags;
}
MOZ_ALWAYS_INLINE ObjectFlags GetObjectFlagsForNewProperty(
Shape* last, jsid id, PropertyFlags propFlags, JSContext* cx) {
ObjectFlags flags = last->objectFlags();
const JSClass* clasp = last->getObjectClass();
return GetObjectFlagsForNewProperty(clasp, flags, id, propFlags, cx);
}
} // namespace js
#endif /* vm_ObjectFlags_inl_h */