mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-10 10:01:13 +09: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: 7b92889e6b
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…
Add table
Add a link
Reference in a new issue