From 422644ae1caf234791582b1037dfeb22adcc03b4 Mon Sep 17 00:00:00 2001 From: Jan de Mooij Date: Mon, 9 Aug 2021 15:25:06 +0000 Subject: [PATCH] Bug 1723715 part 6 - Move globalThisResolved to GlobalObjectData. r=jonco Depends on D121985 Differential Revision: https://phabricator.services.mozilla.com/D121986 --- js/public/Class.h | 2 +- js/src/vm/GlobalObject.cpp | 4 ++-- js/src/vm/GlobalObject.h | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/js/public/Class.h b/js/public/Class.h index 5cef90e9dd5d..8575bacb8e4b 100644 --- a/js/public/Class.h +++ b/js/public/Class.h @@ -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 | diff --git a/js/src/vm/GlobalObject.cpp b/js/src/vm/GlobalObject.cpp index 9ce45ec31bcf..469853b79e06 100644 --- a/js/src/vm/GlobalObject.cpp +++ b/js/src/vm/GlobalObject.cpp @@ -426,7 +426,7 @@ bool GlobalObject::resolveConstructor(JSContext* cx, bool GlobalObject::maybeResolveGlobalThis(JSContext* cx, Handle 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; diff --git a/js/src/vm/GlobalObject.h b/js/src/vm/GlobalObject.h index 5965e1269f9f..d2ccd886cae2 100644 --- a/js/src/vm/GlobalObject.h +++ b/js/src/vm/GlobalObject.h @@ -78,6 +78,9 @@ class GlobalObjectData { // Cache used to optimize certain for-of operations. HeapPtr 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,