浏览代码

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 年之前
父节点
当前提交
7b92889e6b

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

@@ -18,11 +18,13 @@
 
 
 namespace JS {
 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());
     DeferGC defer_gc(global_object.heap());
     auto interpreter = adopt_own(*new Interpreter(global_object.vm()));
     auto interpreter = adopt_own(*new Interpreter(global_object.vm()));
     interpreter->m_global_object = make_handle(&global_object);
     interpreter->m_global_object = make_handle(&global_object);
+    interpreter->m_realm = make_handle(&realm);
     return interpreter;
     return interpreter;
 }
 }
 
 

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

@@ -48,7 +48,7 @@ public:
         return interpreter;
         return interpreter;
     }
     }
 
 
-    static NonnullOwnPtr<Interpreter> create_with_existing_global_object(GlobalObject&);
+    static NonnullOwnPtr<Interpreter> create_with_existing_realm(Realm&);
 
 
     ~Interpreter();
     ~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();
     Interpreter* interpreter = vm().interpreter_if_exists();
 
 
     if (!interpreter) {
     if (!interpreter) {
-        local_interpreter = Interpreter::create_with_existing_global_object(global_object());
+        local_interpreter = Interpreter::create_with_existing_realm(*realm());
         interpreter = local_interpreter.ptr();
         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();
         ast_interpreter = vm.interpreter_if_exists();
 
 
         if (!ast_interpreter) {
         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();
             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;
     (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());
     interpreter->run(interpreter->global_object(), m_script_record->parse_node());
     auto& vm = interpreter->vm();
     auto& vm = interpreter->vm();
     if (vm.exception())
     if (vm.exception())