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

Unified Diff: src/objects.cc

Issue 2460233003: [modules] Assign cell indices at validation time. (Closed)
Patch Set: Created 4 years, 1 month 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
« src/objects.h ('K') | « src/objects.h ('k') | src/objects-inl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index 5a4143b086403aa92d1ed6b87196705edf7a273c..a8b25d2a8002cf2a186f81268ecf91d25e843c31 100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -19907,7 +19907,6 @@ MaybeHandle<Cell> Module::ResolveExport(Handle<Module> module,
if (object->IsModuleInfoEntry()) {
// Not yet resolved indirect export.
Handle<ModuleInfoEntry> entry = Handle<ModuleInfoEntry>::cast(object);
- int module_request = Smi::cast(entry->module_request())->value();
Handle<String> import_name(String::cast(entry->import_name()), isolate);
Handle<Script> script(
Script::cast(JSFunction::cast(module->code())->shared()->script()),
@@ -19915,8 +19914,8 @@ MaybeHandle<Cell> Module::ResolveExport(Handle<Module> module,
MessageLocation new_loc(script, entry->beg_pos(), entry->end_pos());
Handle<Cell> cell;
- if (!ResolveImport(module, import_name, module_request, new_loc, true,
- resolve_set)
+ if (!ResolveImport(module, import_name, entry->module_request(), new_loc,
+ true, resolve_set)
.ToHandle(&cell)) {
DCHECK(isolate->has_pending_exception());
return MaybeHandle<Cell>();
@@ -19953,7 +19952,6 @@ MaybeHandle<Cell> Module::ResolveExportUsingStarExports(
if (!entry->export_name()->IsUndefined(isolate)) {
continue; // Indirect export.
}
- int module_request = Smi::cast(entry->module_request())->value();
Handle<Script> script(
Script::cast(JSFunction::cast(module->code())->shared()->script()),
@@ -19961,7 +19959,7 @@ MaybeHandle<Cell> Module::ResolveExportUsingStarExports(
MessageLocation new_loc(script, entry->beg_pos(), entry->end_pos());
Handle<Cell> cell;
- if (ResolveImport(module, name, module_request, new_loc, false,
+ if (ResolveImport(module, name, entry->module_request(), new_loc, false,
resolve_set)
.ToHandle(&cell)) {
if (unique_cell.is_null()) unique_cell = cell;
@@ -20014,9 +20012,10 @@ bool Module::Instantiate(Handle<Module> module, v8::Local<v8::Context> context,
// Set up local exports.
Handle<FixedArray> regular_exports(module_info->regular_exports(), isolate);
- for (int i = 0, n = regular_exports->length(); i < n; i += 2) {
+ for (int i = 0, n = regular_exports->length(); i < n; i += 3) {
+ // TODO(neis): Make this more robust.
adamk 2016/10/31 18:25:04 Related to robustness, seems like this loop should
neis 2016/11/03 10:43:48 Sure, that's part of it.
Handle<FixedArray> export_names(
- FixedArray::cast(regular_exports->get(i + 1)), isolate);
+ FixedArray::cast(regular_exports->get(i + 2)), isolate);
CreateExport(module, export_names);
}
@@ -20064,13 +20063,13 @@ bool Module::Instantiate(Handle<Module> module, v8::Local<v8::Context> context,
Handle<ModuleInfoEntry> entry(
ModuleInfoEntry::cast(regular_imports->get(i)), isolate);
Handle<String> name(String::cast(entry->import_name()), isolate);
- int module_request = Smi::cast(entry->module_request())->value();
Handle<Script> script(
Script::cast(JSFunction::cast(module->code())->shared()->script()),
isolate);
MessageLocation loc(script, entry->beg_pos(), entry->end_pos());
ResolveSet resolve_set(&zone);
- if (ResolveImport(module, name, module_request, loc, true, &resolve_set)
+ if (ResolveImport(module, name, entry->module_request(), loc, true,
+ &resolve_set)
.is_null()) {
return false;
}
@@ -20154,9 +20153,8 @@ void FetchStarExports(Handle<Module> module, Zone* zone,
continue; // Indirect export.
}
- int module_request = Smi::cast(entry->module_request())->value();
Handle<Module> requested_module(
- Module::cast(module->requested_modules()->get(module_request)),
+ Module::cast(module->requested_modules()->get(entry->module_request())),
isolate);
// Recurse.
« src/objects.h ('K') | « src/objects.h ('k') | src/objects-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698