diff --git a/Userland/Applications/Spreadsheet/Workbook.cpp b/Userland/Applications/Spreadsheet/Workbook.cpp index ec53f15969..31bbce44da 100644 --- a/Userland/Applications/Spreadsheet/Workbook.cpp +++ b/Userland/Applications/Spreadsheet/Workbook.cpp @@ -23,7 +23,7 @@ Workbook::Workbook(Vector>&& sheets, GUI::Window& parent_wi : m_sheets(move(sheets)) , m_vm(JS::VM::create().release_value_but_fixme_should_propagate_errors()) , m_root_execution_context(JS::create_simple_execution_context(m_vm)) - , m_main_execution_context(m_vm->heap()) + , m_main_execution_context(JS::ExecutionContext::create(m_vm->heap())) , m_parent_window(parent_window) { auto& realm = *m_root_execution_context->realm; @@ -31,13 +31,13 @@ Workbook::Workbook(Vector>&& sheets, GUI::Window& parent_wi m_workbook_object = vm.heap().allocate(realm, realm, *this); realm.global_object().define_direct_property("workbook", workbook_object(), JS::default_attributes); - m_main_execution_context.this_value = &realm.global_object(); - m_main_execution_context.function_name = "(global execution context)"sv; - m_main_execution_context.lexical_environment = &realm.global_environment(); - m_main_execution_context.variable_environment = &realm.global_environment(); - m_main_execution_context.realm = &realm; - m_main_execution_context.is_strict_mode = true; - m_vm->push_execution_context(m_main_execution_context); + m_main_execution_context->this_value = &realm.global_object(); + m_main_execution_context->function_name = JS::PrimitiveString::create(vm, "(global execution context)"sv); + m_main_execution_context->lexical_environment = &realm.global_environment(); + m_main_execution_context->variable_environment = &realm.global_environment(); + m_main_execution_context->realm = &realm; + m_main_execution_context->is_strict_mode = true; + m_vm->push_execution_context(*m_main_execution_context); m_vm->enable_default_host_import_module_dynamically_hook(); } diff --git a/Userland/Applications/Spreadsheet/Workbook.h b/Userland/Applications/Spreadsheet/Workbook.h index b6bf8ac59e..864eba764a 100644 --- a/Userland/Applications/Spreadsheet/Workbook.h +++ b/Userland/Applications/Spreadsheet/Workbook.h @@ -47,7 +47,7 @@ private: NonnullOwnPtr m_root_execution_context; JS::GCPtr m_workbook_object; - JS::ExecutionContext m_main_execution_context; + NonnullOwnPtr m_main_execution_context; GUI::Window& m_parent_window; DeprecatedString m_current_filename; diff --git a/Userland/Libraries/LibJS/AST.cpp b/Userland/Libraries/LibJS/AST.cpp index 0f911e3322..b7ae469ccc 100644 --- a/Userland/Libraries/LibJS/AST.cpp +++ b/Userland/Libraries/LibJS/AST.cpp @@ -1666,7 +1666,7 @@ void ScopeNode::block_declaration_instantiation(VM& vm, Environment* environment // iii. Perform ! env.InitializeBinding(fn, fo). NOTE: This step is replaced in section B.3.2.6. if (function_declaration.name_identifier()->is_local()) { - vm.running_execution_context().local_variables[function_declaration.name_identifier()->local_variable_index()] = function; + vm.running_execution_context().local(function_declaration.name_identifier()->local_variable_index()) = function; } else { VERIFY(is(*environment)); static_cast(*environment).initialize_or_set_mutable_binding({}, vm, function_declaration.name(), function); diff --git a/Userland/Libraries/LibJS/Bytecode/Interpreter.cpp b/Userland/Libraries/LibJS/Bytecode/Interpreter.cpp index 2b5b8a5b20..78d3f65b37 100644 --- a/Userland/Libraries/LibJS/Bytecode/Interpreter.cpp +++ b/Userland/Libraries/LibJS/Bytecode/Interpreter.cpp @@ -65,36 +65,36 @@ ThrowCompletionOr Interpreter::run(Script& script_record, JS::GCPtrrealm = &script_record.realm(); // 5. Set the ScriptOrModule of scriptContext to scriptRecord. - script_context.script_or_module = NonnullGCPtr