| 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(
|
|
|