mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 19:47:34 +00:00
LibJS+LibWeb: Replace GlobalObject with Realm in object constructors
No functional changes - we can still very easily get to the global object via `Realm::global_object()`. This is in preparation of moving the intrinsics to the realm and no longer having to pass a global object when allocating any object. In a few (now, and many more in subsequent commits) places we get a realm using `GlobalObject::associated_realm()`, this is intended to be temporary. For example, create() functions will later receive the same treatment and are passed a realm instead of a global object.
This commit is contained in:
parent
4c300cc5e8
commit
ecd163bdf1
315 changed files with 592 additions and 554 deletions
|
@ -18,8 +18,8 @@
|
|||
|
||||
namespace JS::Test262 {
|
||||
|
||||
$262Object::$262Object(JS::GlobalObject& global_object)
|
||||
: Object(Object::ConstructWithoutPrototypeTag::Tag, global_object)
|
||||
$262Object::$262Object(Realm& realm)
|
||||
: Object(Object::ConstructWithoutPrototypeTag::Tag, realm)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -27,8 +27,9 @@ void $262Object::initialize(JS::GlobalObject& global_object)
|
|||
{
|
||||
Base::initialize(global_object);
|
||||
|
||||
m_agent = vm().heap().allocate<AgentObject>(global_object, global_object);
|
||||
m_is_htmldda = vm().heap().allocate<IsHTMLDDA>(global_object, global_object);
|
||||
auto& realm = *global_object.associated_realm();
|
||||
m_agent = vm().heap().allocate<AgentObject>(global_object, realm);
|
||||
m_is_htmldda = vm().heap().allocate<IsHTMLDDA>(global_object, realm);
|
||||
|
||||
u8 attr = Attribute::Writable | Attribute::Configurable;
|
||||
define_native_function("clearKeptObjects", clear_kept_objects, 0, attr);
|
||||
|
|
|
@ -17,7 +17,7 @@ class $262Object final : public Object {
|
|||
JS_OBJECT($262Object, Object);
|
||||
|
||||
public:
|
||||
$262Object(JS::GlobalObject&);
|
||||
explicit $262Object(Realm&);
|
||||
virtual void initialize(JS::GlobalObject&) override;
|
||||
virtual ~$262Object() override = default;
|
||||
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
|
||||
namespace JS::Test262 {
|
||||
|
||||
AgentObject::AgentObject(JS::GlobalObject& global_object)
|
||||
: Object(Object::ConstructWithoutPrototypeTag::Tag, global_object)
|
||||
AgentObject::AgentObject(Realm& realm)
|
||||
: Object(Object::ConstructWithoutPrototypeTag::Tag, realm)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ class AgentObject final : public Object {
|
|||
JS_OBJECT(AgentObject, Object);
|
||||
|
||||
public:
|
||||
AgentObject(JS::GlobalObject&);
|
||||
explicit AgentObject(Realm&);
|
||||
virtual void initialize(JS::GlobalObject&) override;
|
||||
virtual ~AgentObject() override = default;
|
||||
|
||||
|
|
|
@ -18,7 +18,8 @@ void GlobalObject::initialize_global_object()
|
|||
{
|
||||
Base::initialize_global_object();
|
||||
|
||||
m_$262 = vm().heap().allocate<$262Object>(*this, *this);
|
||||
auto& realm = *associated_realm();
|
||||
m_$262 = vm().heap().allocate<$262Object>(*this, realm);
|
||||
|
||||
// https://github.com/tc39/test262/blob/master/INTERPRETING.md#host-defined-functions
|
||||
u8 attr = Attribute::Writable | Attribute::Configurable;
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
|
||||
namespace JS::Test262 {
|
||||
|
||||
IsHTMLDDA::IsHTMLDDA(JS::GlobalObject& global_object)
|
||||
IsHTMLDDA::IsHTMLDDA(Realm& realm)
|
||||
// NativeFunction without prototype is currently not possible (only due to the lack of a ctor that supports it)
|
||||
: NativeFunction("IsHTMLDDA", *global_object.function_prototype())
|
||||
: NativeFunction("IsHTMLDDA", *realm.global_object().function_prototype())
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ class IsHTMLDDA final : public NativeFunction {
|
|||
JS_OBJECT(IsHTMLDDA, NativeFunction);
|
||||
|
||||
public:
|
||||
explicit IsHTMLDDA(JS::GlobalObject&);
|
||||
explicit IsHTMLDDA(Realm&);
|
||||
virtual ~IsHTMLDDA() override = default;
|
||||
|
||||
virtual ThrowCompletionOr<Value> call() override;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue