1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 15:54:58 +00:00

LibJS: Make ScriptOrModule use WeakPtr instead of raw pointers

This commit is contained in:
Andreas Kling 2022-02-07 16:28:39 +01:00
parent 6ee597369d
commit 85cf80507f
9 changed files with 23 additions and 18 deletions

View file

@ -280,7 +280,7 @@ ThrowCompletionOr<Vector<FlyString>> SourceTextModule::get_exported_names(VM& vm
// 7. For each ExportEntry Record e of module.[[StarExportEntries]], do
for (auto& entry : m_star_export_entries) {
// a. Let requestedModule be ? HostResolveImportedModule(module, e.[[ModuleRequest]]).
auto requested_module = TRY(vm.host_resolve_imported_module(this, entry.module_request()));
auto requested_module = TRY(vm.host_resolve_imported_module(this->make_weak_ptr(), entry.module_request()));
// b. Let starNames be ? requestedModule.GetExportedNames(exportStarSet).
auto star_names = TRY(requested_module->get_exported_names(vm, export_star_set));
@ -336,7 +336,7 @@ Completion SourceTextModule::initialize_environment(VM& vm)
// 7. For each ImportEntry Record in of module.[[ImportEntries]], do
for (auto& import_entry : m_import_entries) {
// a. Let importedModule be ! HostResolveImportedModule(module, in.[[ModuleRequest]]).
auto imported_module = MUST(vm.host_resolve_imported_module(this, import_entry.module_request()));
auto imported_module = MUST(vm.host_resolve_imported_module(this->make_weak_ptr(), import_entry.module_request()));
// b. NOTE: The above call cannot fail because imported module requests are a subset of module.[[RequestedModules]], and these have been resolved earlier in this algorithm.
// c. If in.[[ImportName]] is namespace-object, then
@ -390,7 +390,7 @@ Completion SourceTextModule::initialize_environment(VM& vm)
m_execution_context.realm = &realm();
// 12. Set the ScriptOrModule of moduleContext to module.
m_execution_context.script_or_module = this;
m_execution_context.script_or_module = this->make_weak_ptr();
// 13. Set the VariableEnvironment of moduleContext to module.[[Environment]].
m_execution_context.variable_environment = environment;
@ -536,7 +536,7 @@ ThrowCompletionOr<ResolvedBinding> SourceTextModule::resolve_export(VM& vm, FlyS
continue;
// i. Let importedModule be ? HostResolveImportedModule(module, e.[[ModuleRequest]]).
auto imported_module = TRY(vm.host_resolve_imported_module(this, entry.module_request()));
auto imported_module = TRY(vm.host_resolve_imported_module(this->make_weak_ptr(), entry.module_request()));
// ii. If e.[[ImportName]] is all, then
if (entry.kind == ExportStatement::ExportEntry::Kind::ModuleRequestAll) {
@ -576,7 +576,7 @@ ThrowCompletionOr<ResolvedBinding> SourceTextModule::resolve_export(VM& vm, FlyS
// 8. For each ExportEntry Record e of module.[[StarExportEntries]], do
for (auto& entry : m_star_export_entries) {
// a. Let importedModule be ? HostResolveImportedModule(module, e.[[ModuleRequest]]).
auto imported_module = TRY(vm.host_resolve_imported_module(this, entry.module_request()));
auto imported_module = TRY(vm.host_resolve_imported_module(this->make_weak_ptr(), entry.module_request()));
// b. Let resolution be ? importedModule.ResolveExport(exportName, resolveSet).
auto resolution = TRY(imported_module->resolve_export(vm, export_name, resolve_set));
@ -638,7 +638,7 @@ Completion SourceTextModule::execute_module(VM& vm, Optional<PromiseCapability>
module_context.realm = &realm();
// 4. Set the ScriptOrModule of moduleContext to module.
module_context.script_or_module = this;
module_context.script_or_module = this->make_weak_ptr();
// 5. Assert: module has been linked and declarations in its module environment have been instantiated.
VERIFY(m_status != ModuleStatus::Unlinked && m_status != ModuleStatus::Linking && environment());