Bug 1723715 part 6 - Move globalThisResolved to GlobalObjectData. r=jonco

Depends on D121985

Differential Revision: https://phabricator.services.mozilla.com/D121986
This commit is contained in:
Jan de Mooij 2021-08-09 15:25:06 +00:00
Родитель c35da74f03
Коммит 422644ae1c
3 изменённых файлов: 6 добавлений и 4 удалений

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

@ -572,7 +572,7 @@ static const uint32_t JSCLASS_FOREGROUND_FINALIZE =
// application.
static const uint32_t JSCLASS_GLOBAL_APPLICATION_SLOTS = 5;
static const uint32_t JSCLASS_GLOBAL_SLOT_COUNT =
JSCLASS_GLOBAL_APPLICATION_SLOTS + JSProto_LIMIT * 2 + 26;
JSCLASS_GLOBAL_APPLICATION_SLOTS + JSProto_LIMIT * 2 + 25;
static constexpr uint32_t JSCLASS_GLOBAL_FLAGS_WITH_SLOTS(uint32_t n) {
return JSCLASS_IS_GLOBAL |

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

@ -426,7 +426,7 @@ bool GlobalObject::resolveConstructor(JSContext* cx,
bool GlobalObject::maybeResolveGlobalThis(JSContext* cx,
Handle<GlobalObject*> global,
bool* resolved) {
if (global->getReservedSlot(GLOBAL_THIS_RESOLVED).isUndefined()) {
if (!global->data().globalThisResolved) {
RootedValue v(cx, ObjectValue(*ToWindowProxyIfWindow(global)));
if (!DefineDataProperty(cx, global, cx->names().globalThis, v,
JSPROP_RESOLVING)) {
@ -434,7 +434,7 @@ bool GlobalObject::maybeResolveGlobalThis(JSContext* cx,
}
*resolved = true;
global->setReservedSlot(GLOBAL_THIS_RESOLVED, BooleanValue(true));
global->data().globalThisResolved = true;
}
return true;

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

@ -78,6 +78,9 @@ class GlobalObjectData {
// Cache used to optimize certain for-of operations.
HeapPtr<NativeObject*> forOfPICChain;
// Whether the |globalThis| property has been resolved on the global object.
bool globalThisResolved = false;
void trace(JSTracer* trc);
};
@ -144,7 +147,6 @@ class GlobalObject : public NativeObject {
REQUESTED_MODULE_PROTO,
MODULE_REQUEST_PROTO,
WINDOW_PROXY,
GLOBAL_THIS_RESOLVED,
SOURCE_URLS,
REALM_KEY_OBJECT,
ARRAY_SHAPE,