Browse Source

LibJS: Change Interpreter::create_with_existing_{global_object => realm}

We need both a GlobalObject and Realm now, but can get the former from
the latter (once initialized).
This also fixes JS execution in LibWeb, as we failed to set the Realm of
the newly created Interpreter in this function.
Linus Groh 3 years ago
parent
commit
7b92889e6b

+ 3 - 1
Userland/Libraries/LibJS/Interpreter.cpp

@@ -18,11 +18,13 @@
 
 namespace JS {
 
-NonnullOwnPtr<Interpreter> Interpreter::create_with_existing_global_object(GlobalObject& global_object)
+NonnullOwnPtr<Interpreter> Interpreter::create_with_existing_realm(Realm& realm)
 {
+    auto& global_object = realm.global_object();
     DeferGC defer_gc(global_object.heap());
     auto interpreter = adopt_own(*new Interpreter(global_object.vm()));
     interpreter->m_global_object = make_handle(&global_object);
+    interpreter->m_realm = make_handle(&realm);
     return interpreter;
 }
 

+ 1 - 1
Userland/Libraries/LibJS/Interpreter.h

@@ -48,7 +48,7 @@ public:
         return interpreter;
     }
 
-    static NonnullOwnPtr<Interpreter> create_with_existing_global_object(GlobalObject&);
+    static NonnullOwnPtr<Interpreter> create_with_existing_realm(Realm&);
 
     ~Interpreter();
 

+ 1 - 1
Userland/Libraries/LibJS/Runtime/FunctionConstructor.cpp

@@ -90,7 +90,7 @@ Value FunctionConstructor::construct(FunctionObject& new_target)
     Interpreter* interpreter = vm().interpreter_if_exists();
 
     if (!interpreter) {
-        local_interpreter = Interpreter::create_with_existing_global_object(global_object());
+        local_interpreter = Interpreter::create_with_existing_realm(*realm());
         interpreter = local_interpreter.ptr();
     }
 

+ 1 - 1
Userland/Libraries/LibJS/Runtime/OrdinaryFunctionObject.cpp

@@ -203,7 +203,7 @@ Value OrdinaryFunctionObject::execute_function_body()
         ast_interpreter = vm.interpreter_if_exists();
 
         if (!ast_interpreter) {
-            local_interpreter = Interpreter::create_with_existing_global_object(global_object());
+            local_interpreter = Interpreter::create_with_existing_realm(*realm());
             ast_interpreter = local_interpreter.ptr();
         }
 

+ 1 - 1
Userland/Libraries/LibWeb/HTML/Scripting/ClassicScript.cpp

@@ -53,7 +53,7 @@ JS::Value ClassicScript::run(RethrowErrors rethrow_errors)
 {
     (void)rethrow_errors;
 
-    auto interpreter = JS::Interpreter::create_with_existing_global_object(m_script_record->realm().global_object());
+    auto interpreter = JS::Interpreter::create_with_existing_realm(m_script_record->realm());
     interpreter->run(interpreter->global_object(), m_script_record->parse_node());
     auto& vm = interpreter->vm();
     if (vm.exception())