Index: src/api.cc |
diff --git a/src/api.cc b/src/api.cc |
index b962909ee29470f91bf061d21cf1974c15ec575d..14c93487d1915b2dbd5cb79519e6612717aeec8d 100644 |
--- a/src/api.cc |
+++ b/src/api.cc |
@@ -46,6 +46,7 @@ |
#include "src/json-parser.h" |
#include "src/json-stringifier.h" |
#include "src/messages.h" |
+#include "src/module-resolve-set-inl.h" |
#include "src/parsing/parser.h" |
#include "src/parsing/scanner-character-streams.h" |
#include "src/pending-compilation-error-handler.h" |
@@ -73,6 +74,7 @@ |
#include "src/version.h" |
#include "src/vm-state-inl.h" |
#include "src/wasm/wasm-module.h" |
+#include "src/zone/zone.h" |
namespace v8 { |
@@ -1976,19 +1978,25 @@ static bool InstantiateModule(Local<Module> v8_module, |
isolate->ThrowIllegalOperation(); |
return false; |
} |
- if (!requested_module->Instantiate(v8_context, callback, callback_data)) { |
+ module->requested_modules()->set(i, *Utils::OpenHandle(*requested_module)); |
+ if (!InstantiateModule(requested_module, v8_context, callback, |
+ callback_data)) { |
return false; |
} |
- module->requested_modules()->set(i, *Utils::OpenHandle(*requested_module)); |
} |
+ i::Zone zone(isolate->allocator()); |
+ |
// Resolve imports. |
for (int i = 0, n = regular_imports->length(); i < n; ++i) { |
i::Handle<i::ModuleInfoEntry> entry( |
i::ModuleInfoEntry::cast(regular_imports->get(i)), isolate); |
i::Handle<i::String> name(i::String::cast(entry->import_name()), isolate); |
int module_request = i::Smi::cast(entry->module_request())->value(); |
- if (i::Module::ResolveImport(module, name, module_request).is_null()) { |
+ i::Module::ResolveSet resolve_set(&zone); |
+ if (i::Module::ResolveImport(module, name, module_request, &resolve_set, |
+ &zone) |
+ .is_null()) { |
return false; |
} |
} |
@@ -1998,7 +2006,8 @@ static bool InstantiateModule(Local<Module> v8_module, |
i::Handle<i::ModuleInfoEntry> entry( |
i::ModuleInfoEntry::cast(special_exports->get(i)), isolate); |
i::Handle<i::String> name(i::String::cast(entry->export_name()), isolate); |
- if (i::Module::ResolveExport(module, name).is_null()) { |
+ i::Module::ResolveSet resolve_set(&zone); |
+ if (i::Module::ResolveExport(module, name, &resolve_set, &zone).is_null()) { |
return false; |
} |
} |