mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-26 09:30:24 +00:00
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.
This commit is contained in:
parent
106f295916
commit
7b92889e6b
Notes:
sideshowbarker
2024-07-18 04:09:45 +09:00
Author: https://github.com/linusg Commit: https://github.com/SerenityOS/serenity/commit/7b92889e6bb Pull-request: https://github.com/SerenityOS/serenity/pull/9988 Reviewed-by: https://github.com/alimpfard
5 changed files with 7 additions and 5 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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())
|
||||
|
|
Loading…
Reference in a new issue