Quellcode durchsuchen

LibJS: Make Value::to_object() take a GlobalObject&

Andreas Kling vor 5 Jahren
Ursprung
Commit
8d56e6103e

+ 4 - 4
Libraries/LibJS/AST.cpp

@@ -97,7 +97,7 @@ CallExpression::ThisAndCallee CallExpression::compute_this_and_callee(Interprete
         auto object_value = member_expression.object().execute(interpreter, global_object);
         auto object_value = member_expression.object().execute(interpreter, global_object);
         if (interpreter.exception())
         if (interpreter.exception())
             return {};
             return {};
-        auto* this_value = object_value.to_object(interpreter);
+        auto* this_value = object_value.to_object(interpreter, global_object);
         if (interpreter.exception())
         if (interpreter.exception())
             return {};
             return {};
         auto callee = this_value->get(member_expression.computed_property_name(interpreter, global_object)).value_or(js_undefined());
         auto callee = this_value->get(member_expression.computed_property_name(interpreter, global_object)).value_or(js_undefined());
@@ -365,7 +365,7 @@ Value ForInStatement::execute(Interpreter& interpreter, GlobalObject& global_obj
     auto rhs_result = m_rhs->execute(interpreter, global_object);
     auto rhs_result = m_rhs->execute(interpreter, global_object);
     if (interpreter.exception())
     if (interpreter.exception())
         return {};
         return {};
-    auto* object = rhs_result.to_object(interpreter);
+    auto* object = rhs_result.to_object(interpreter, global_object);
     while (object) {
     while (object) {
         auto property_names = object->get_own_properties(*object, Object::GetOwnPropertyMode::Key, true);
         auto property_names = object->get_own_properties(*object, Object::GetOwnPropertyMode::Key, true);
         for (auto& property_name : property_names.as_object().indexed_properties()) {
         for (auto& property_name : property_names.as_object().indexed_properties()) {
@@ -587,7 +587,7 @@ Value UnaryExpression::execute(Interpreter& interpreter, GlobalObject& global_ob
         ASSERT(!reference.is_local_variable());
         ASSERT(!reference.is_local_variable());
         if (reference.is_global_variable())
         if (reference.is_global_variable())
             return global_object.delete_property(reference.name());
             return global_object.delete_property(reference.name());
-        auto* base_object = reference.base().to_object(interpreter);
+        auto* base_object = reference.base().to_object(interpreter, global_object);
         if (!base_object)
         if (!base_object)
             return {};
             return {};
         return base_object->delete_property(reference.name());
         return base_object->delete_property(reference.name());
@@ -1435,7 +1435,7 @@ Value MemberExpression::execute(Interpreter& interpreter, GlobalObject& global_o
     auto object_value = m_object->execute(interpreter, global_object);
     auto object_value = m_object->execute(interpreter, global_object);
     if (interpreter.exception())
     if (interpreter.exception())
         return {};
         return {};
-    auto* object_result = object_value.to_object(interpreter);
+    auto* object_result = object_value.to_object(interpreter, global_object);
     if (interpreter.exception())
     if (interpreter.exception())
         return {};
         return {};
     return object_result->get(computed_property_name(interpreter, global_object)).value_or(js_undefined());
     return object_result->get(computed_property_name(interpreter, global_object)).value_or(js_undefined());

+ 1 - 1
Libraries/LibJS/Runtime/Array.cpp

@@ -51,7 +51,7 @@ Array::~Array()
 
 
 Array* Array::typed_this(Interpreter& interpreter, GlobalObject& global_object)
 Array* Array::typed_this(Interpreter& interpreter, GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     if (!this_object->is_array()) {
     if (!this_object->is_array()) {

+ 15 - 15
Libraries/LibJS/Runtime/ArrayPrototype.cpp

@@ -105,7 +105,7 @@ static size_t get_length(Interpreter& interpreter, Object& object)
 
 
 static void for_each_item(Interpreter& interpreter, GlobalObject& global_object, const String& name, AK::Function<IterationDecision(size_t index, Value value, Value callback_result)> callback, bool skip_empty = true)
 static void for_each_item(Interpreter& interpreter, GlobalObject& global_object, const String& name, AK::Function<IterationDecision(size_t index, Value value, Value callback_result)> callback, bool skip_empty = true)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return;
         return;
 
 
@@ -164,7 +164,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::for_each)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::map)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::map)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     auto initial_length = get_length(interpreter, *this_object);
     auto initial_length = get_length(interpreter, *this_object);
@@ -183,7 +183,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::map)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::push)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::push)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     if (this_object->is_array()) {
     if (this_object->is_array()) {
@@ -223,7 +223,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::unshift)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::pop)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::pop)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     if (this_object->is_array()) {
     if (this_object->is_array()) {
@@ -265,7 +265,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::shift)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::to_string)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::to_string)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     auto join_function = this_object->get("join");
     auto join_function = this_object->get("join");
@@ -278,7 +278,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::to_string)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::to_locale_string)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::to_locale_string)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     String separator = ","; // NOTE: This is implementation-specific.
     String separator = ","; // NOTE: This is implementation-specific.
@@ -294,7 +294,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::to_locale_string)
             return {};
             return {};
         if (value.is_undefined() || value.is_null())
         if (value.is_undefined() || value.is_null())
             continue;
             continue;
-        auto* value_object = value.to_object(interpreter);
+        auto* value_object = value.to_object(interpreter, global_object);
         ASSERT(value_object);
         ASSERT(value_object);
         auto locale_string_result = value_object->invoke("toLocaleString");
         auto locale_string_result = value_object->invoke("toLocaleString");
         if (interpreter.exception())
         if (interpreter.exception())
@@ -309,7 +309,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::to_locale_string)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::join)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::join)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     String separator = ",";
     String separator = ",";
@@ -411,7 +411,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::slice)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::index_of)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::index_of)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     i32 length = get_length(interpreter, *this_object);
     i32 length = get_length(interpreter, *this_object);
@@ -442,7 +442,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::index_of)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::reduce)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::reduce)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
 
 
@@ -501,7 +501,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::reduce)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::reduce_right)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::reduce_right)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
 
 
@@ -584,7 +584,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::reverse)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::last_index_of)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::last_index_of)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     i32 length = get_length(interpreter, *this_object);
     i32 length = get_length(interpreter, *this_object);
@@ -615,7 +615,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::last_index_of)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::includes)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::includes)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     i32 length = get_length(interpreter, *this_object);
     i32 length = get_length(interpreter, *this_object);
@@ -702,7 +702,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::every)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::splice)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::splice)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
 
 
@@ -805,7 +805,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::splice)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::fill)
 JS_DEFINE_NATIVE_FUNCTION(ArrayPrototype::fill)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
 
 

+ 1 - 1
Libraries/LibJS/Runtime/BigIntPrototype.cpp

@@ -51,7 +51,7 @@ BigIntPrototype::~BigIntPrototype()
 
 
 static BigIntObject* bigint_object_from(Interpreter& interpreter, GlobalObject& global_object)
 static BigIntObject* bigint_object_from(Interpreter& interpreter, GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return nullptr;
         return nullptr;
     if (!this_object->is_bigint_object()) {
     if (!this_object->is_bigint_object()) {

+ 1 - 1
Libraries/LibJS/Runtime/DatePrototype.cpp

@@ -38,7 +38,7 @@ namespace JS {
 
 
 static Date* typed_this(Interpreter& interpreter, GlobalObject& global_object)
 static Date* typed_this(Interpreter& interpreter, GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return nullptr;
         return nullptr;
     if (!this_object->is_date()) {
     if (!this_object->is_date()) {

+ 3 - 3
Libraries/LibJS/Runtime/ErrorPrototype.cpp

@@ -54,7 +54,7 @@ ErrorPrototype::~ErrorPrototype()
 
 
 JS_DEFINE_NATIVE_GETTER(ErrorPrototype::name_getter)
 JS_DEFINE_NATIVE_GETTER(ErrorPrototype::name_getter)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     if (!this_object->is_error())
     if (!this_object->is_error())
@@ -64,7 +64,7 @@ JS_DEFINE_NATIVE_GETTER(ErrorPrototype::name_getter)
 
 
 JS_DEFINE_NATIVE_SETTER(ErrorPrototype::name_setter)
 JS_DEFINE_NATIVE_SETTER(ErrorPrototype::name_setter)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return;
         return;
     if (!this_object->is_error()) {
     if (!this_object->is_error()) {
@@ -79,7 +79,7 @@ JS_DEFINE_NATIVE_SETTER(ErrorPrototype::name_setter)
 
 
 JS_DEFINE_NATIVE_GETTER(ErrorPrototype::message_getter)
 JS_DEFINE_NATIVE_GETTER(ErrorPrototype::message_getter)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     if (!this_object->is_error())
     if (!this_object->is_error())

+ 1 - 1
Libraries/LibJS/Runtime/Function.cpp

@@ -61,7 +61,7 @@ BoundFunction* Function::bind(Value bound_this_value, Vector<Value> arguments)
                 return bound_this_value;
                 return bound_this_value;
             return &global_object();
             return &global_object();
         default:
         default:
-            return bound_this_value.to_object(interpreter());
+            return bound_this_value.to_object(interpreter(), global_object());
         }
         }
     }();
     }();
 
 

+ 4 - 4
Libraries/LibJS/Runtime/FunctionPrototype.cpp

@@ -60,7 +60,7 @@ FunctionPrototype::~FunctionPrototype()
 
 
 JS_DEFINE_NATIVE_FUNCTION(FunctionPrototype::apply)
 JS_DEFINE_NATIVE_FUNCTION(FunctionPrototype::apply)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     if (!this_object->is_function())
     if (!this_object->is_function())
@@ -90,7 +90,7 @@ JS_DEFINE_NATIVE_FUNCTION(FunctionPrototype::apply)
 
 
 JS_DEFINE_NATIVE_FUNCTION(FunctionPrototype::bind)
 JS_DEFINE_NATIVE_FUNCTION(FunctionPrototype::bind)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     if (!this_object->is_function())
     if (!this_object->is_function())
@@ -110,7 +110,7 @@ JS_DEFINE_NATIVE_FUNCTION(FunctionPrototype::bind)
 
 
 JS_DEFINE_NATIVE_FUNCTION(FunctionPrototype::call)
 JS_DEFINE_NATIVE_FUNCTION(FunctionPrototype::call)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     if (!this_object->is_function())
     if (!this_object->is_function())
@@ -127,7 +127,7 @@ JS_DEFINE_NATIVE_FUNCTION(FunctionPrototype::call)
 
 
 JS_DEFINE_NATIVE_FUNCTION(FunctionPrototype::to_string)
 JS_DEFINE_NATIVE_FUNCTION(FunctionPrototype::to_string)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     if (!this_object->is_function())
     if (!this_object->is_function())

+ 7 - 7
Libraries/LibJS/Runtime/ObjectConstructor.cpp

@@ -77,7 +77,7 @@ JS_DEFINE_NATIVE_FUNCTION(ObjectConstructor::get_own_property_names)
 {
 {
     if (!interpreter.argument_count())
     if (!interpreter.argument_count())
         return {};
         return {};
-    auto* object = interpreter.argument(0).to_object(interpreter);
+    auto* object = interpreter.argument(0).to_object(interpreter, global_object);
     if (interpreter.exception())
     if (interpreter.exception())
         return {};
         return {};
     auto* result = Array::create(global_object);
     auto* result = Array::create(global_object);
@@ -93,7 +93,7 @@ JS_DEFINE_NATIVE_FUNCTION(ObjectConstructor::get_prototype_of)
 {
 {
     if (!interpreter.argument_count())
     if (!interpreter.argument_count())
         return {};
         return {};
-    auto* object = interpreter.argument(0).to_object(interpreter);
+    auto* object = interpreter.argument(0).to_object(interpreter, global_object);
     if (interpreter.exception())
     if (interpreter.exception())
         return {};
         return {};
     return object->prototype();
     return object->prototype();
@@ -103,7 +103,7 @@ JS_DEFINE_NATIVE_FUNCTION(ObjectConstructor::set_prototype_of)
 {
 {
     if (interpreter.argument_count() < 2)
     if (interpreter.argument_count() < 2)
         return interpreter.throw_exception<TypeError>(ErrorType::ObjectSetPrototypeOfTwoArgs);
         return interpreter.throw_exception<TypeError>(ErrorType::ObjectSetPrototypeOfTwoArgs);
-    auto* object = interpreter.argument(0).to_object(interpreter);
+    auto* object = interpreter.argument(0).to_object(interpreter, global_object);
     if (interpreter.exception())
     if (interpreter.exception())
         return {};
         return {};
     auto prototype_value = interpreter.argument(1);
     auto prototype_value = interpreter.argument(1);
@@ -147,7 +147,7 @@ JS_DEFINE_NATIVE_FUNCTION(ObjectConstructor::prevent_extensions)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ObjectConstructor::get_own_property_descriptor)
 JS_DEFINE_NATIVE_FUNCTION(ObjectConstructor::get_own_property_descriptor)
 {
 {
-    auto* object = interpreter.argument(0).to_object(interpreter);
+    auto* object = interpreter.argument(0).to_object(interpreter, global_object);
     if (interpreter.exception())
     if (interpreter.exception())
         return {};
         return {};
     auto property_key = interpreter.argument(1).to_string(interpreter);
     auto property_key = interpreter.argument(1).to_string(interpreter);
@@ -190,7 +190,7 @@ JS_DEFINE_NATIVE_FUNCTION(ObjectConstructor::keys)
     if (!interpreter.argument_count())
     if (!interpreter.argument_count())
         return interpreter.throw_exception<TypeError>(ErrorType::ConvertUndefinedToObject);
         return interpreter.throw_exception<TypeError>(ErrorType::ConvertUndefinedToObject);
 
 
-    auto* obj_arg = interpreter.argument(0).to_object(interpreter);
+    auto* obj_arg = interpreter.argument(0).to_object(interpreter, global_object);
     if (interpreter.exception())
     if (interpreter.exception())
         return {};
         return {};
 
 
@@ -202,7 +202,7 @@ JS_DEFINE_NATIVE_FUNCTION(ObjectConstructor::values)
     if (!interpreter.argument_count())
     if (!interpreter.argument_count())
         return interpreter.throw_exception<TypeError>(ErrorType::ConvertUndefinedToObject);
         return interpreter.throw_exception<TypeError>(ErrorType::ConvertUndefinedToObject);
 
 
-    auto* obj_arg = interpreter.argument(0).to_object(interpreter);
+    auto* obj_arg = interpreter.argument(0).to_object(interpreter, global_object);
     if (interpreter.exception())
     if (interpreter.exception())
         return {};
         return {};
 
 
@@ -214,7 +214,7 @@ JS_DEFINE_NATIVE_FUNCTION(ObjectConstructor::entries)
     if (!interpreter.argument_count())
     if (!interpreter.argument_count())
         return interpreter.throw_exception<TypeError>(ErrorType::ConvertUndefinedToObject);
         return interpreter.throw_exception<TypeError>(ErrorType::ConvertUndefinedToObject);
 
 
-    auto* obj_arg = interpreter.argument(0).to_object(interpreter);
+    auto* obj_arg = interpreter.argument(0).to_object(interpreter, global_object);
     if (interpreter.exception())
     if (interpreter.exception())
         return {};
         return {};
 
 

+ 4 - 4
Libraries/LibJS/Runtime/ObjectPrototype.cpp

@@ -56,7 +56,7 @@ ObjectPrototype::~ObjectPrototype()
 
 
 JS_DEFINE_NATIVE_FUNCTION(ObjectPrototype::has_own_property)
 JS_DEFINE_NATIVE_FUNCTION(ObjectPrototype::has_own_property)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     auto name = interpreter.argument(0).to_string(interpreter);
     auto name = interpreter.argument(0).to_string(interpreter);
@@ -67,7 +67,7 @@ JS_DEFINE_NATIVE_FUNCTION(ObjectPrototype::has_own_property)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ObjectPrototype::to_string)
 JS_DEFINE_NATIVE_FUNCTION(ObjectPrototype::to_string)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     return js_string(interpreter, String::format("[object %s]", this_object->class_name()));
     return js_string(interpreter, String::format("[object %s]", this_object->class_name()));
@@ -75,7 +75,7 @@ JS_DEFINE_NATIVE_FUNCTION(ObjectPrototype::to_string)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ObjectPrototype::to_locale_string)
 JS_DEFINE_NATIVE_FUNCTION(ObjectPrototype::to_locale_string)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     return this_object->invoke("toString");
     return this_object->invoke("toString");
@@ -83,7 +83,7 @@ JS_DEFINE_NATIVE_FUNCTION(ObjectPrototype::to_locale_string)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ObjectPrototype::value_of)
 JS_DEFINE_NATIVE_FUNCTION(ObjectPrototype::value_of)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     return this_object->value_of();
     return this_object->value_of();

+ 2 - 2
Libraries/LibJS/Runtime/Reference.cpp

@@ -55,7 +55,7 @@ void Reference::put(Interpreter& interpreter, Value value)
         return;
         return;
     }
     }
 
 
-    auto* object = base().to_object(interpreter);
+    auto* object = base().to_object(interpreter, interpreter.global_object());
     if (!object)
     if (!object)
         return;
         return;
 
 
@@ -97,7 +97,7 @@ Value Reference::get(Interpreter& interpreter)
         return value;
         return value;
     }
     }
 
 
-    auto* object = base().to_object(interpreter);
+    auto* object = base().to_object(interpreter, interpreter.global_object());
     if (!object)
     if (!object)
         return {};
         return {};
 
 

+ 1 - 1
Libraries/LibJS/Runtime/ScriptFunction.cpp

@@ -37,7 +37,7 @@ namespace JS {
 
 
 static ScriptFunction* typed_this(Interpreter& interpreter, GlobalObject& global_object)
 static ScriptFunction* typed_this(Interpreter& interpreter, GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return nullptr;
         return nullptr;
     if (!this_object->is_function()) {
     if (!this_object->is_function()) {

+ 2 - 2
Libraries/LibJS/Runtime/StringConstructor.cpp

@@ -78,7 +78,7 @@ Value StringConstructor::construct(Interpreter& interpreter)
 
 
 JS_DEFINE_NATIVE_FUNCTION(StringConstructor::raw)
 JS_DEFINE_NATIVE_FUNCTION(StringConstructor::raw)
 {
 {
-    auto* template_object = interpreter.argument(0).to_object(interpreter);
+    auto* template_object = interpreter.argument(0).to_object(interpreter, global_object);
     if (interpreter.exception())
     if (interpreter.exception())
         return {};
         return {};
 
 
@@ -92,7 +92,7 @@ JS_DEFINE_NATIVE_FUNCTION(StringConstructor::raw)
     if (!raw.is_array())
     if (!raw.is_array())
         return js_string(interpreter, "");
         return js_string(interpreter, "");
 
 
-    auto* array = static_cast<Array*>(raw.to_object(interpreter));
+    auto* array = static_cast<Array*>(raw.to_object(interpreter, global_object));
     auto& raw_array_elements = array->indexed_properties();
     auto& raw_array_elements = array->indexed_properties();
     StringBuilder builder;
     StringBuilder builder;
 
 

+ 2 - 2
Libraries/LibJS/Runtime/StringPrototype.cpp

@@ -41,7 +41,7 @@ namespace JS {
 
 
 static StringObject* typed_this(Interpreter& interpreter, GlobalObject& global_object)
 static StringObject* typed_this(Interpreter& interpreter, GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return nullptr;
         return nullptr;
     if (!this_object->is_string_object()) {
     if (!this_object->is_string_object()) {
@@ -53,7 +53,7 @@ static StringObject* typed_this(Interpreter& interpreter, GlobalObject& global_o
 
 
 static String ak_string_from(Interpreter& interpreter, GlobalObject& global_object)
 static String ak_string_from(Interpreter& interpreter, GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     return Value(this_object).to_string(interpreter);
     return Value(this_object).to_string(interpreter);

+ 1 - 1
Libraries/LibJS/Runtime/SymbolPrototype.cpp

@@ -58,7 +58,7 @@ SymbolPrototype::~SymbolPrototype()
 
 
 static SymbolObject* typed_this(Interpreter& interpreter, GlobalObject& global_object)
 static SymbolObject* typed_this(Interpreter& interpreter, GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return nullptr;
         return nullptr;
     if (!this_object->is_symbol_object()) {
     if (!this_object->is_symbol_object()) {

+ 1 - 1
Libraries/LibJS/Runtime/Uint8ClampedArray.cpp

@@ -55,7 +55,7 @@ Uint8ClampedArray::~Uint8ClampedArray()
 
 
 JS_DEFINE_NATIVE_GETTER(Uint8ClampedArray::length_getter)
 JS_DEFINE_NATIVE_GETTER(Uint8ClampedArray::length_getter)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     if (StringView(this_object->class_name()) != "Uint8ClampedArray")
     if (StringView(this_object->class_name()) != "Uint8ClampedArray")

+ 6 - 6
Libraries/LibJS/Runtime/Value.cpp

@@ -207,7 +207,7 @@ Value Value::to_primitive(Interpreter&, PreferredType preferred_type) const
     return *this;
     return *this;
 }
 }
 
 
-Object* Value::to_object(Interpreter& interpreter) const
+Object* Value::to_object(Interpreter& interpreter, GlobalObject& global_object) const
 {
 {
     switch (m_type) {
     switch (m_type) {
     case Type::Undefined:
     case Type::Undefined:
@@ -215,15 +215,15 @@ Object* Value::to_object(Interpreter& interpreter) const
         interpreter.throw_exception<TypeError>(ErrorType::ToObjectNullOrUndef);
         interpreter.throw_exception<TypeError>(ErrorType::ToObjectNullOrUndef);
         return nullptr;
         return nullptr;
     case Type::Boolean:
     case Type::Boolean:
-        return BooleanObject::create(interpreter.global_object(), m_value.as_bool);
+        return BooleanObject::create(global_object, m_value.as_bool);
     case Type::Number:
     case Type::Number:
-        return NumberObject::create(interpreter.global_object(), m_value.as_double);
+        return NumberObject::create(global_object, m_value.as_double);
     case Type::String:
     case Type::String:
-        return StringObject::create(interpreter.global_object(), *m_value.as_string);
+        return StringObject::create(global_object, *m_value.as_string);
     case Type::Symbol:
     case Type::Symbol:
-        return SymbolObject::create(interpreter.global_object(), *m_value.as_symbol);
+        return SymbolObject::create(global_object, *m_value.as_symbol);
     case Type::BigInt:
     case Type::BigInt:
-        return BigIntObject::create(interpreter.global_object(), *m_value.as_bigint);
+        return BigIntObject::create(global_object, *m_value.as_bigint);
     case Type::Object:
     case Type::Object:
         return &const_cast<Object&>(as_object());
         return &const_cast<Object&>(as_object());
     default:
     default:

+ 1 - 1
Libraries/LibJS/Runtime/Value.h

@@ -229,7 +229,7 @@ public:
     String to_string(Interpreter&) const;
     String to_string(Interpreter&) const;
     PrimitiveString* to_primitive_string(Interpreter&);
     PrimitiveString* to_primitive_string(Interpreter&);
     Value to_primitive(Interpreter&, PreferredType preferred_type = PreferredType::Default) const;
     Value to_primitive(Interpreter&, PreferredType preferred_type = PreferredType::Default) const;
-    Object* to_object(Interpreter&) const;
+    Object* to_object(Interpreter&, GlobalObject&) const;
     Value to_numeric(Interpreter&) const;
     Value to_numeric(Interpreter&) const;
     Value to_number(Interpreter&) const;
     Value to_number(Interpreter&) const;
     BigInt* to_bigint(Interpreter&) const;
     BigInt* to_bigint(Interpreter&) const;

+ 25 - 25
Libraries/LibWeb/Bindings/CanvasRenderingContext2DWrapper.cpp

@@ -76,9 +76,9 @@ CanvasRenderingContext2DWrapper::~CanvasRenderingContext2DWrapper()
 {
 {
 }
 }
 
 
-static CanvasRenderingContext2D* impl_from(JS::Interpreter& interpreter)
+static CanvasRenderingContext2D* impl_from(JS::Interpreter& interpreter, JS::GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(interpreter.global_object()).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return nullptr;
         return nullptr;
     // FIXME: Verify that it's a CanvasRenderingContext2DWrapper somehow!
     // FIXME: Verify that it's a CanvasRenderingContext2DWrapper somehow!
@@ -87,7 +87,7 @@ static CanvasRenderingContext2D* impl_from(JS::Interpreter& interpreter)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::fill_rect)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::fill_rect)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     if (interpreter.argument_count() >= 4) {
     if (interpreter.argument_count() >= 4) {
@@ -110,7 +110,7 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::fill_rect)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::stroke_rect)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::stroke_rect)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     if (interpreter.argument_count() >= 4) {
     if (interpreter.argument_count() >= 4) {
@@ -133,12 +133,12 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::stroke_rect)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::draw_image)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::draw_image)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     if (interpreter.argument_count() < 3)
     if (interpreter.argument_count() < 3)
         return interpreter.throw_exception<JS::TypeError>(JS::ErrorType::DrawImageArgumentCount);
         return interpreter.throw_exception<JS::TypeError>(JS::ErrorType::DrawImageArgumentCount);
-    auto* image_argument = interpreter.argument(0).to_object(interpreter);
+    auto* image_argument = interpreter.argument(0).to_object(interpreter, global_object);
     if (!image_argument)
     if (!image_argument)
         return {};
         return {};
     if (StringView(image_argument->class_name()) != "HTMLImageElementWrapper")
     if (StringView(image_argument->class_name()) != "HTMLImageElementWrapper")
@@ -156,7 +156,7 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::draw_image)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::scale)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::scale)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     if (interpreter.argument_count() >= 2) {
     if (interpreter.argument_count() >= 2) {
@@ -174,7 +174,7 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::scale)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::translate)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::translate)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     if (interpreter.argument_count() >= 2) {
     if (interpreter.argument_count() >= 2) {
@@ -192,7 +192,7 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::translate)
 
 
 JS_DEFINE_NATIVE_GETTER(CanvasRenderingContext2DWrapper::fill_style_getter)
 JS_DEFINE_NATIVE_GETTER(CanvasRenderingContext2DWrapper::fill_style_getter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     return JS::js_string(interpreter, impl->fill_style());
     return JS::js_string(interpreter, impl->fill_style());
@@ -200,7 +200,7 @@ JS_DEFINE_NATIVE_GETTER(CanvasRenderingContext2DWrapper::fill_style_getter)
 
 
 JS_DEFINE_NATIVE_SETTER(CanvasRenderingContext2DWrapper::fill_style_setter)
 JS_DEFINE_NATIVE_SETTER(CanvasRenderingContext2DWrapper::fill_style_setter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return;
         return;
     auto string = value.to_string(interpreter);
     auto string = value.to_string(interpreter);
@@ -211,7 +211,7 @@ JS_DEFINE_NATIVE_SETTER(CanvasRenderingContext2DWrapper::fill_style_setter)
 
 
 JS_DEFINE_NATIVE_GETTER(CanvasRenderingContext2DWrapper::stroke_style_getter)
 JS_DEFINE_NATIVE_GETTER(CanvasRenderingContext2DWrapper::stroke_style_getter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     return JS::js_string(interpreter, impl->stroke_style());
     return JS::js_string(interpreter, impl->stroke_style());
@@ -219,7 +219,7 @@ JS_DEFINE_NATIVE_GETTER(CanvasRenderingContext2DWrapper::stroke_style_getter)
 
 
 JS_DEFINE_NATIVE_SETTER(CanvasRenderingContext2DWrapper::stroke_style_setter)
 JS_DEFINE_NATIVE_SETTER(CanvasRenderingContext2DWrapper::stroke_style_setter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return;
         return;
     auto string = value.to_string(interpreter);
     auto string = value.to_string(interpreter);
@@ -230,7 +230,7 @@ JS_DEFINE_NATIVE_SETTER(CanvasRenderingContext2DWrapper::stroke_style_setter)
 
 
 JS_DEFINE_NATIVE_GETTER(CanvasRenderingContext2DWrapper::line_width_getter)
 JS_DEFINE_NATIVE_GETTER(CanvasRenderingContext2DWrapper::line_width_getter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     return JS::Value(impl->line_width());
     return JS::Value(impl->line_width());
@@ -238,7 +238,7 @@ JS_DEFINE_NATIVE_GETTER(CanvasRenderingContext2DWrapper::line_width_getter)
 
 
 JS_DEFINE_NATIVE_SETTER(CanvasRenderingContext2DWrapper::line_width_setter)
 JS_DEFINE_NATIVE_SETTER(CanvasRenderingContext2DWrapper::line_width_setter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return;
         return;
     auto line_width = value.to_double(interpreter);
     auto line_width = value.to_double(interpreter);
@@ -249,7 +249,7 @@ JS_DEFINE_NATIVE_SETTER(CanvasRenderingContext2DWrapper::line_width_setter)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::begin_path)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::begin_path)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     impl->begin_path();
     impl->begin_path();
@@ -258,7 +258,7 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::begin_path)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::close_path)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::close_path)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     impl->close_path();
     impl->close_path();
@@ -267,7 +267,7 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::close_path)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::stroke)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::stroke)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     impl->stroke();
     impl->stroke();
@@ -276,7 +276,7 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::stroke)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::fill)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::fill)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     auto winding = Gfx::Painter::WindingRule::Nonzero;
     auto winding = Gfx::Painter::WindingRule::Nonzero;
@@ -303,7 +303,7 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::fill)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::move_to)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::move_to)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     auto x = interpreter.argument(0).to_double(interpreter);
     auto x = interpreter.argument(0).to_double(interpreter);
@@ -318,7 +318,7 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::move_to)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::line_to)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::line_to)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     auto x = interpreter.argument(0).to_double(interpreter);
     auto x = interpreter.argument(0).to_double(interpreter);
@@ -333,7 +333,7 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::line_to)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::quadratic_curve_to)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::quadratic_curve_to)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     auto cx = interpreter.argument(0).to_double(interpreter);
     auto cx = interpreter.argument(0).to_double(interpreter);
@@ -354,7 +354,7 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::quadratic_curve_to)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::create_image_data)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::create_image_data)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     auto width = interpreter.argument(0).to_i32(interpreter);
     auto width = interpreter.argument(0).to_i32(interpreter);
@@ -369,11 +369,11 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::create_image_data)
 
 
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::put_image_data)
 JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::put_image_data)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
 
 
-    auto* image_data_object = interpreter.argument(0).to_object(interpreter);
+    auto* image_data_object = interpreter.argument(0).to_object(interpreter, global_object);
     if (!image_data_object)
     if (!image_data_object)
         return {};
         return {};
 
 
@@ -394,7 +394,7 @@ JS_DEFINE_NATIVE_FUNCTION(CanvasRenderingContext2DWrapper::put_image_data)
 
 
 JS_DEFINE_NATIVE_GETTER(CanvasRenderingContext2DWrapper::canvas_getter)
 JS_DEFINE_NATIVE_GETTER(CanvasRenderingContext2DWrapper::canvas_getter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     auto* element = impl->element();
     auto* element = impl->element();

+ 5 - 5
Libraries/LibWeb/Bindings/DocumentWrapper.cpp

@@ -60,9 +60,9 @@ const Document& DocumentWrapper::node() const
     return static_cast<const Document&>(NodeWrapper::node());
     return static_cast<const Document&>(NodeWrapper::node());
 }
 }
 
 
-static Document* document_from(JS::Interpreter& interpreter)
+static Document* impl_from(JS::Interpreter& interpreter, JS::GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(interpreter.global_object()).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     if (StringView("DocumentWrapper") != this_object->class_name()) {
     if (StringView("DocumentWrapper") != this_object->class_name()) {
@@ -74,7 +74,7 @@ static Document* document_from(JS::Interpreter& interpreter)
 
 
 JS_DEFINE_NATIVE_FUNCTION(DocumentWrapper::get_element_by_id)
 JS_DEFINE_NATIVE_FUNCTION(DocumentWrapper::get_element_by_id)
 {
 {
-    auto* document = document_from(interpreter);
+    auto* document = impl_from(interpreter, global_object);
     if (!document)
     if (!document)
         return {};
         return {};
     if (!interpreter.argument_count())
     if (!interpreter.argument_count())
@@ -90,7 +90,7 @@ JS_DEFINE_NATIVE_FUNCTION(DocumentWrapper::get_element_by_id)
 
 
 JS_DEFINE_NATIVE_FUNCTION(DocumentWrapper::query_selector)
 JS_DEFINE_NATIVE_FUNCTION(DocumentWrapper::query_selector)
 {
 {
-    auto* document = document_from(interpreter);
+    auto* document = impl_from(interpreter, global_object);
     if (!document)
     if (!document)
         return {};
         return {};
     if (!interpreter.argument_count())
     if (!interpreter.argument_count())
@@ -107,7 +107,7 @@ JS_DEFINE_NATIVE_FUNCTION(DocumentWrapper::query_selector)
 
 
 JS_DEFINE_NATIVE_FUNCTION(DocumentWrapper::query_selector_all)
 JS_DEFINE_NATIVE_FUNCTION(DocumentWrapper::query_selector_all)
 {
 {
-    auto* document = document_from(interpreter);
+    auto* document = impl_from(interpreter, global_object);
     if (!document)
     if (!document)
         return {};
         return {};
     if (!interpreter.argument_count())
     if (!interpreter.argument_count())

+ 8 - 8
Libraries/LibWeb/Bindings/ElementWrapper.cpp

@@ -63,9 +63,9 @@ const Element& ElementWrapper::node() const
     return static_cast<const Element&>(NodeWrapper::node());
     return static_cast<const Element&>(NodeWrapper::node());
 }
 }
 
 
-static Element* impl_from(JS::Interpreter& interpreter)
+static Element* impl_from(JS::Interpreter& interpreter, JS::GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(interpreter.global_object()).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return nullptr;
         return nullptr;
     // FIXME: Verify that it's an ElementWrapper somehow!
     // FIXME: Verify that it's an ElementWrapper somehow!
@@ -74,7 +74,7 @@ static Element* impl_from(JS::Interpreter& interpreter)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ElementWrapper::get_attribute)
 JS_DEFINE_NATIVE_FUNCTION(ElementWrapper::get_attribute)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
 
 
@@ -94,7 +94,7 @@ JS_DEFINE_NATIVE_FUNCTION(ElementWrapper::get_attribute)
 
 
 JS_DEFINE_NATIVE_FUNCTION(ElementWrapper::set_attribute)
 JS_DEFINE_NATIVE_FUNCTION(ElementWrapper::set_attribute)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
 
 
@@ -115,14 +115,14 @@ JS_DEFINE_NATIVE_FUNCTION(ElementWrapper::set_attribute)
 
 
 JS_DEFINE_NATIVE_GETTER(ElementWrapper::inner_html_getter)
 JS_DEFINE_NATIVE_GETTER(ElementWrapper::inner_html_getter)
 {
 {
-    if (auto* impl = impl_from(interpreter))
+    if (auto* impl = impl_from(interpreter, global_object))
         return JS::js_string(interpreter, impl->inner_html());
         return JS::js_string(interpreter, impl->inner_html());
     return {};
     return {};
 }
 }
 
 
 JS_DEFINE_NATIVE_SETTER(ElementWrapper::inner_html_setter)
 JS_DEFINE_NATIVE_SETTER(ElementWrapper::inner_html_setter)
 {
 {
-    if (auto* impl = impl_from(interpreter)) {
+    if (auto* impl = impl_from(interpreter, global_object)) {
         auto string = value.to_string(interpreter);
         auto string = value.to_string(interpreter);
         if (interpreter.exception())
         if (interpreter.exception())
             return;
             return;
@@ -132,14 +132,14 @@ JS_DEFINE_NATIVE_SETTER(ElementWrapper::inner_html_setter)
 
 
 JS_DEFINE_NATIVE_GETTER(ElementWrapper::id_getter)
 JS_DEFINE_NATIVE_GETTER(ElementWrapper::id_getter)
 {
 {
-    if (auto* impl = impl_from(interpreter))
+    if (auto* impl = impl_from(interpreter, global_object))
         return JS::js_string(interpreter, impl->attribute(HTML::AttributeNames::id));
         return JS::js_string(interpreter, impl->attribute(HTML::AttributeNames::id));
     return {};
     return {};
 }
 }
 
 
 JS_DEFINE_NATIVE_SETTER(ElementWrapper::id_setter)
 JS_DEFINE_NATIVE_SETTER(ElementWrapper::id_setter)
 {
 {
-    if (auto* impl = impl_from(interpreter)) {
+    if (auto* impl = impl_from(interpreter, global_object)) {
         auto string = value.to_string(interpreter);
         auto string = value.to_string(interpreter);
         if (interpreter.exception())
         if (interpreter.exception())
             return;
             return;

+ 1 - 1
Libraries/LibWeb/Bindings/EventTargetWrapper.cpp

@@ -51,7 +51,7 @@ EventTargetWrapper::~EventTargetWrapper()
 
 
 JS_DEFINE_NATIVE_FUNCTION(EventTargetWrapper::add_event_listener)
 JS_DEFINE_NATIVE_FUNCTION(EventTargetWrapper::add_event_listener)
 {
 {
-    auto* this_object = interpreter.this_value(global_object).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return {};
         return {};
     if (interpreter.argument_count() < 2)
     if (interpreter.argument_count() < 2)

+ 5 - 5
Libraries/LibWeb/Bindings/HTMLCanvasElementWrapper.cpp

@@ -61,9 +61,9 @@ const HTMLCanvasElement& HTMLCanvasElementWrapper::node() const
     return static_cast<const HTMLCanvasElement&>(NodeWrapper::node());
     return static_cast<const HTMLCanvasElement&>(NodeWrapper::node());
 }
 }
 
 
-static HTMLCanvasElement* impl_from(JS::Interpreter& interpreter)
+static HTMLCanvasElement* impl_from(JS::Interpreter& interpreter, JS::GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(interpreter.global_object()).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return nullptr;
         return nullptr;
     // FIXME: Verify that it's a HTMLCanvasElementWrapper somehow!
     // FIXME: Verify that it's a HTMLCanvasElementWrapper somehow!
@@ -72,7 +72,7 @@ static HTMLCanvasElement* impl_from(JS::Interpreter& interpreter)
 
 
 JS_DEFINE_NATIVE_FUNCTION(HTMLCanvasElementWrapper::get_context)
 JS_DEFINE_NATIVE_FUNCTION(HTMLCanvasElementWrapper::get_context)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     auto context_type = interpreter.argument(0).to_string(interpreter);
     auto context_type = interpreter.argument(0).to_string(interpreter);
@@ -86,14 +86,14 @@ JS_DEFINE_NATIVE_FUNCTION(HTMLCanvasElementWrapper::get_context)
 
 
 JS_DEFINE_NATIVE_GETTER(HTMLCanvasElementWrapper::width_getter)
 JS_DEFINE_NATIVE_GETTER(HTMLCanvasElementWrapper::width_getter)
 {
 {
-    if (auto* impl = impl_from(interpreter))
+    if (auto* impl = impl_from(interpreter, global_object))
         return JS::Value(impl->requested_width());
         return JS::Value(impl->requested_width());
     return {};
     return {};
 }
 }
 
 
 JS_DEFINE_NATIVE_GETTER(HTMLCanvasElementWrapper::height_getter)
 JS_DEFINE_NATIVE_GETTER(HTMLCanvasElementWrapper::height_getter)
 {
 {
-    if (auto* impl = impl_from(interpreter))
+    if (auto* impl = impl_from(interpreter, global_object))
         return JS::Value(impl->requested_height());
         return JS::Value(impl->requested_height());
     return {};
     return {};
 }
 }

+ 5 - 5
Libraries/LibWeb/Bindings/ImageDataWrapper.cpp

@@ -53,9 +53,9 @@ ImageDataWrapper::~ImageDataWrapper()
 {
 {
 }
 }
 
 
-static ImageData* impl_from(JS::Interpreter& interpreter)
+static ImageData* impl_from(JS::Interpreter& interpreter, JS::GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(interpreter.global_object()).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object) {
     if (!this_object) {
         ASSERT_NOT_REACHED();
         ASSERT_NOT_REACHED();
         return nullptr;
         return nullptr;
@@ -69,7 +69,7 @@ static ImageData* impl_from(JS::Interpreter& interpreter)
 
 
 JS_DEFINE_NATIVE_GETTER(ImageDataWrapper::width_getter)
 JS_DEFINE_NATIVE_GETTER(ImageDataWrapper::width_getter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     return JS::Value(impl->width());
     return JS::Value(impl->width());
@@ -77,7 +77,7 @@ JS_DEFINE_NATIVE_GETTER(ImageDataWrapper::width_getter)
 
 
 JS_DEFINE_NATIVE_GETTER(ImageDataWrapper::height_getter)
 JS_DEFINE_NATIVE_GETTER(ImageDataWrapper::height_getter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     return JS::Value(impl->height());
     return JS::Value(impl->height());
@@ -85,7 +85,7 @@ JS_DEFINE_NATIVE_GETTER(ImageDataWrapper::height_getter)
 
 
 JS_DEFINE_NATIVE_GETTER(ImageDataWrapper::data_getter)
 JS_DEFINE_NATIVE_GETTER(ImageDataWrapper::data_getter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     return impl->data();
     return impl->data();

+ 4 - 4
Libraries/LibWeb/Bindings/MouseEventWrapper.cpp

@@ -56,9 +56,9 @@ MouseEvent& MouseEventWrapper::event()
     return static_cast<MouseEvent&>(EventWrapper::event());
     return static_cast<MouseEvent&>(EventWrapper::event());
 }
 }
 
 
-static MouseEvent* impl_from(JS::Interpreter& interpreter)
+static MouseEvent* impl_from(JS::Interpreter& interpreter, JS::GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(interpreter.global_object()).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return nullptr;
         return nullptr;
     // FIXME: Verify that it's a CanvasRenderingContext2DWrapper somehow!
     // FIXME: Verify that it's a CanvasRenderingContext2DWrapper somehow!
@@ -67,14 +67,14 @@ static MouseEvent* impl_from(JS::Interpreter& interpreter)
 
 
 JS_DEFINE_NATIVE_GETTER(MouseEventWrapper::offset_x_getter)
 JS_DEFINE_NATIVE_GETTER(MouseEventWrapper::offset_x_getter)
 {
 {
-    if (auto* impl = impl_from(interpreter))
+    if (auto* impl = impl_from(interpreter, global_object))
         return JS::Value(impl->offset_x());
         return JS::Value(impl->offset_x());
     return {};
     return {};
 }
 }
 
 
 JS_DEFINE_NATIVE_GETTER(MouseEventWrapper::offset_y_getter)
 JS_DEFINE_NATIVE_GETTER(MouseEventWrapper::offset_y_getter)
 {
 {
-    if (auto* impl = impl_from(interpreter))
+    if (auto* impl = impl_from(interpreter, global_object))
         return JS::Value(impl->offset_y());
         return JS::Value(impl->offset_y());
     return {};
     return {};
 }
 }

+ 12 - 12
Libraries/LibWeb/Bindings/WindowObject.cpp

@@ -80,9 +80,9 @@ void WindowObject::visit_children(Visitor& visitor)
     visitor.visit(m_xhr_prototype);
     visitor.visit(m_xhr_prototype);
 }
 }
 
 
-static Window* impl_from(JS::Interpreter& interpreter)
+static Window* impl_from(JS::Interpreter& interpreter, JS::GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(interpreter.global_object()).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object) {
     if (!this_object) {
         ASSERT_NOT_REACHED();
         ASSERT_NOT_REACHED();
         return nullptr;
         return nullptr;
@@ -96,7 +96,7 @@ static Window* impl_from(JS::Interpreter& interpreter)
 
 
 JS_DEFINE_NATIVE_FUNCTION(WindowObject::alert)
 JS_DEFINE_NATIVE_FUNCTION(WindowObject::alert)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     String message = "";
     String message = "";
@@ -111,7 +111,7 @@ JS_DEFINE_NATIVE_FUNCTION(WindowObject::alert)
 
 
 JS_DEFINE_NATIVE_FUNCTION(WindowObject::confirm)
 JS_DEFINE_NATIVE_FUNCTION(WindowObject::confirm)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     String message = "";
     String message = "";
@@ -125,12 +125,12 @@ JS_DEFINE_NATIVE_FUNCTION(WindowObject::confirm)
 
 
 JS_DEFINE_NATIVE_FUNCTION(WindowObject::set_interval)
 JS_DEFINE_NATIVE_FUNCTION(WindowObject::set_interval)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     if (!interpreter.argument_count())
     if (!interpreter.argument_count())
         return interpreter.throw_exception<JS::TypeError>(JS::ErrorType::BadArgCountAtLeastOne, "setInterval");
         return interpreter.throw_exception<JS::TypeError>(JS::ErrorType::BadArgCountAtLeastOne, "setInterval");
-    auto* callback_object = interpreter.argument(0).to_object(interpreter);
+    auto* callback_object = interpreter.argument(0).to_object(interpreter, global_object);
     if (!callback_object)
     if (!callback_object)
         return {};
         return {};
     if (!callback_object->is_function())
     if (!callback_object->is_function())
@@ -151,12 +151,12 @@ JS_DEFINE_NATIVE_FUNCTION(WindowObject::set_interval)
 
 
 JS_DEFINE_NATIVE_FUNCTION(WindowObject::set_timeout)
 JS_DEFINE_NATIVE_FUNCTION(WindowObject::set_timeout)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     if (!interpreter.argument_count())
     if (!interpreter.argument_count())
         return interpreter.throw_exception<JS::TypeError>(JS::ErrorType::BadArgCountAtLeastOne, "setTimeout");
         return interpreter.throw_exception<JS::TypeError>(JS::ErrorType::BadArgCountAtLeastOne, "setTimeout");
-    auto* callback_object = interpreter.argument(0).to_object(interpreter);
+    auto* callback_object = interpreter.argument(0).to_object(interpreter, global_object);
     if (!callback_object)
     if (!callback_object)
         return {};
         return {};
     if (!callback_object->is_function())
     if (!callback_object->is_function())
@@ -177,12 +177,12 @@ JS_DEFINE_NATIVE_FUNCTION(WindowObject::set_timeout)
 
 
 JS_DEFINE_NATIVE_FUNCTION(WindowObject::request_animation_frame)
 JS_DEFINE_NATIVE_FUNCTION(WindowObject::request_animation_frame)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     if (!interpreter.argument_count())
     if (!interpreter.argument_count())
         return interpreter.throw_exception<JS::TypeError>(JS::ErrorType::BadArgCountOne, "requestAnimationFrame");
         return interpreter.throw_exception<JS::TypeError>(JS::ErrorType::BadArgCountOne, "requestAnimationFrame");
-    auto* callback_object = interpreter.argument(0).to_object(interpreter);
+    auto* callback_object = interpreter.argument(0).to_object(interpreter, global_object);
     if (!callback_object)
     if (!callback_object)
         return {};
         return {};
     if (!callback_object->is_function())
     if (!callback_object->is_function())
@@ -192,7 +192,7 @@ JS_DEFINE_NATIVE_FUNCTION(WindowObject::request_animation_frame)
 
 
 JS_DEFINE_NATIVE_FUNCTION(WindowObject::cancel_animation_frame)
 JS_DEFINE_NATIVE_FUNCTION(WindowObject::cancel_animation_frame)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     if (!interpreter.argument_count())
     if (!interpreter.argument_count())
@@ -206,7 +206,7 @@ JS_DEFINE_NATIVE_FUNCTION(WindowObject::cancel_animation_frame)
 
 
 JS_DEFINE_NATIVE_GETTER(WindowObject::document_getter)
 JS_DEFINE_NATIVE_GETTER(WindowObject::document_getter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     return wrap(interpreter.heap(), impl->document());
     return wrap(interpreter.heap(), impl->document());

+ 6 - 6
Libraries/LibWeb/Bindings/XMLHttpRequestPrototype.cpp

@@ -58,9 +58,9 @@ XMLHttpRequestPrototype::~XMLHttpRequestPrototype()
 {
 {
 }
 }
 
 
-static XMLHttpRequest* impl_from(JS::Interpreter& interpreter)
+static XMLHttpRequest* impl_from(JS::Interpreter& interpreter, JS::GlobalObject& global_object)
 {
 {
-    auto* this_object = interpreter.this_value(interpreter.global_object()).to_object(interpreter);
+    auto* this_object = interpreter.this_value(global_object).to_object(interpreter, global_object);
     if (!this_object)
     if (!this_object)
         return nullptr;
         return nullptr;
     if (StringView("XMLHttpRequestWrapper") != this_object->class_name()) {
     if (StringView("XMLHttpRequestWrapper") != this_object->class_name()) {
@@ -72,7 +72,7 @@ static XMLHttpRequest* impl_from(JS::Interpreter& interpreter)
 
 
 JS_DEFINE_NATIVE_FUNCTION(XMLHttpRequestPrototype::open)
 JS_DEFINE_NATIVE_FUNCTION(XMLHttpRequestPrototype::open)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     auto arg0 = interpreter.argument(0).to_string(interpreter);
     auto arg0 = interpreter.argument(0).to_string(interpreter);
@@ -87,7 +87,7 @@ JS_DEFINE_NATIVE_FUNCTION(XMLHttpRequestPrototype::open)
 
 
 JS_DEFINE_NATIVE_FUNCTION(XMLHttpRequestPrototype::send)
 JS_DEFINE_NATIVE_FUNCTION(XMLHttpRequestPrototype::send)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     impl->send();
     impl->send();
@@ -96,7 +96,7 @@ JS_DEFINE_NATIVE_FUNCTION(XMLHttpRequestPrototype::send)
 
 
 JS_DEFINE_NATIVE_GETTER(XMLHttpRequestPrototype::ready_state_getter)
 JS_DEFINE_NATIVE_GETTER(XMLHttpRequestPrototype::ready_state_getter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     return JS::Value((i32)impl->ready_state());
     return JS::Value((i32)impl->ready_state());
@@ -104,7 +104,7 @@ JS_DEFINE_NATIVE_GETTER(XMLHttpRequestPrototype::ready_state_getter)
 
 
 JS_DEFINE_NATIVE_GETTER(XMLHttpRequestPrototype::response_text_getter)
 JS_DEFINE_NATIVE_GETTER(XMLHttpRequestPrototype::response_text_getter)
 {
 {
-    auto* impl = impl_from(interpreter);
+    auto* impl = impl_from(interpreter, global_object);
     if (!impl)
     if (!impl)
         return {};
         return {};
     return JS::js_string(interpreter, impl->response_text());
     return JS::js_string(interpreter, impl->response_text());

+ 1 - 1
Userland/js.cpp

@@ -832,7 +832,7 @@ int main(int argc, char** argv)
                 if (!variable.is_object())
                 if (!variable.is_object())
                     break;
                     break;
 
 
-                const auto* object = variable.to_object(*interpreter);
+                const auto* object = variable.to_object(*interpreter, interpreter->global_object());
                 const auto& shape = object->shape();
                 const auto& shape = object->shape();
                 list_all_properties(shape, property_name);
                 list_all_properties(shape, property_name);
                 if (results.size())
                 if (results.size())