Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Unified Diff: src/api.cc

Issue 2367623004: [modules] Detect and throw exceptions for cyclic dependencies (Closed)
Patch Set: Update golden files Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « BUILD.gn ('k') | src/factory.cc » ('j') | src/objects.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
}
« no previous file with comments | « BUILD.gn ('k') | src/factory.cc » ('j') | src/objects.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698