Index: src/ast/modules.cc |
diff --git a/src/ast/modules.cc b/src/ast/modules.cc |
index 70772997b5890cc5ed0c961fe41d35e7f6086019..d4855d8e4111c3d45045b3d9769f252e45af9b07 100644 |
--- a/src/ast/modules.cc |
+++ b/src/ast/modules.cc |
@@ -15,7 +15,7 @@ void ModuleDescriptor::AddImport( |
Entry* entry = new (zone) Entry(loc); |
entry->local_name = local_name; |
entry->import_name = import_name; |
- entry->module_request = module_request; |
+ entry->module_request = AddModuleRequest(module_request); |
AddRegularImport(entry); |
} |
@@ -24,10 +24,9 @@ void ModuleDescriptor::AddStarImport( |
const AstRawString* local_name, const AstRawString* module_request, |
Scanner::Location loc, Zone* zone) { |
DCHECK_NOT_NULL(local_name); |
- DCHECK_NOT_NULL(module_request); |
Entry* entry = new (zone) Entry(loc); |
entry->local_name = local_name; |
- entry->module_request = module_request; |
+ entry->module_request = AddModuleRequest(module_request); |
AddSpecialImport(entry, zone); |
} |
@@ -35,7 +34,7 @@ void ModuleDescriptor::AddStarImport( |
void ModuleDescriptor::AddEmptyImport( |
const AstRawString* module_request, Scanner::Location loc, Zone* zone) { |
Entry* entry = new (zone) Entry(loc); |
- entry->module_request = module_request; |
+ entry->module_request = AddModuleRequest(module_request); |
AddSpecialImport(entry, zone); |
} |
@@ -58,7 +57,7 @@ void ModuleDescriptor::AddExport( |
Entry* entry = new (zone) Entry(loc); |
entry->export_name = export_name; |
entry->import_name = import_name; |
- entry->module_request = module_request; |
+ entry->module_request = AddModuleRequest(module_request); |
AddSpecialExport(entry, zone); |
} |
@@ -66,7 +65,7 @@ void ModuleDescriptor::AddExport( |
void ModuleDescriptor::AddStarExport( |
const AstRawString* module_request, Scanner::Location loc, Zone* zone) { |
Entry* entry = new (zone) Entry(loc); |
- entry->module_request = module_request; |
+ entry->module_request = AddModuleRequest(module_request); |
AddSpecialExport(entry, zone); |
} |
@@ -89,11 +88,12 @@ const AstRawString* FromStringOrUndefined(Isolate* isolate, |
Handle<ModuleInfoEntry> ModuleDescriptor::Entry::Serialize( |
Isolate* isolate) const { |
- return ModuleInfoEntry::New(isolate, |
- ToStringOrUndefined(isolate, export_name), |
- ToStringOrUndefined(isolate, local_name), |
- ToStringOrUndefined(isolate, import_name), |
- ToStringOrUndefined(isolate, module_request)); |
+ CHECK(Smi::IsValid(module_request)); // TODO(neis): Check earlier? |
+ return ModuleInfoEntry::New( |
+ isolate, ToStringOrUndefined(isolate, export_name), |
+ ToStringOrUndefined(isolate, local_name), |
+ ToStringOrUndefined(isolate, import_name), |
+ Handle<Object>(Smi::FromInt(module_request), isolate)); |
} |
ModuleDescriptor::Entry* ModuleDescriptor::Entry::Deserialize( |
@@ -106,8 +106,7 @@ ModuleDescriptor::Entry* ModuleDescriptor::Entry::Deserialize( |
isolate, avfactory, handle(entry->local_name(), isolate)); |
result->import_name = FromStringOrUndefined( |
isolate, avfactory, handle(entry->import_name(), isolate)); |
- result->module_request = FromStringOrUndefined( |
- isolate, avfactory, handle(entry->module_request(), isolate)); |
+ result->module_request = Smi::cast(entry->module_request())->value(); |
return result; |
} |
@@ -120,9 +119,11 @@ void ModuleDescriptor::MakeIndirectExportsExplicit(Zone* zone) { |
// Found an indirect export. Patch export entry and move it from regular |
// to special. |
DCHECK_NULL(entry->import_name); |
- DCHECK_NULL(entry->module_request); |
+ DCHECK_LT(entry->module_request, 0); |
DCHECK_NOT_NULL(import->second->import_name); |
- DCHECK_NOT_NULL(import->second->module_request); |
+ DCHECK_LE(0, import->second->module_request); |
+ DCHECK_LT(import->second->module_request, |
+ static_cast<int>(module_requests_.size())); |
entry->import_name = import->second->import_name; |
entry->module_request = import->second->module_request; |
entry->local_name = nullptr; |
@@ -160,8 +161,8 @@ const ModuleDescriptor::Entry* ModuleDescriptor::FindDuplicateExport( |
const ModuleDescriptor::Entry* duplicate = nullptr; |
ZoneMap<const AstRawString*, const ModuleDescriptor::Entry*> export_names( |
zone); |
- for (const auto& it : regular_exports_) { |
- duplicate = BetterDuplicate(it.second, export_names, duplicate); |
+ for (const auto& elem : regular_exports_) { |
+ duplicate = BetterDuplicate(elem.second, export_names, duplicate); |
} |
for (auto entry : special_exports_) { |
if (entry->export_name == nullptr) continue; // Star export. |
@@ -188,8 +189,8 @@ bool ModuleDescriptor::Validate(ModuleScope* module_scope, |
} |
// Report error iff there are exports of non-existent local names. |
- for (const auto& it : regular_exports_) { |
- const Entry* entry = it.second; |
+ for (const auto& elem : regular_exports_) { |
+ const Entry* entry = elem.second; |
DCHECK_NOT_NULL(entry->local_name); |
if (module_scope->LookupLocal(entry->local_name) == nullptr) { |
error_handler->ReportMessageAt( |