JSScopeObject: A new base class, holding the next pointer, global object, and global this
+ JSDynamicScope: A new class, wrapping "with" objects in the scope.
I'd prefer to be more specific: "JSWithScope".
+ JSVariableObject
Even though the spec uses the phrase "variable object", I think we should move to something clearer and more consistent with your other naming: "JSVarScope".
+ JSStaticScopeObject
I'd prefer to be more specific: "JSLetScope". There's one special case (catch blocks) where, logically, the engine implies the let statement for you. But I don't think that justifies an abstract name. In general, you can remove "Object" from the class names above. Every object is an object.
+ JSActivation
+ JSGlobalObject
Anyway, now my question: what is the deal with the "globalThis" object? Specifically, does it exist in a 1-to-1 relationship with the global object?
For any give JSGlobalObject, there is only one globalThis. Geoff