зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
fe0f6beef0
Коммит
962566d41b
|
@ -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 */
|
||||
|
|
Загрузка…
Ссылка в новой задаче