25 if (
int specifier_comparison =
27 return specifier_comparison < 0;
35 if (
int assertion_key_comparison =
37 return assertion_key_comparison < 0;
40 if (
int assertion_value_comparison =
42 return assertion_value_comparison < 0;
67 specifier, import_phase, import_attributes, specifier_loc, zone);
79 import_attributes, specifier_loc, zone);
111 import_attributes, specifier_loc, zone);
122 import_attributes, specifier_loc, zone);
127template <
typename IsolateT>
130 if (s ==
nullptr)
return isolate->factory()->undefined_value();
135template <
typename IsolateT>
136DirectHandle<ModuleRequest>
138 IsolateT* isolate)
const {
142 isolate->factory()->NewFixedArray(
143 static_cast<int>(import_attributes()->
size() *
150 for (
auto iter = import_attributes()->cbegin();
151 iter != import_attributes()->cend();
153 raw_import_attributes->set(
i, *iter->
first->string());
154 raw_import_attributes->set(
i + 1, *iter->second.
first->string());
155 raw_import_attributes->set(
i + 2,
160 phase_, import_attributes_array,
169template <
typename IsolateT>
174 isolate, ToStringOrUndefined(isolate, export_name),
175 ToStringOrUndefined(isolate, local_name),
176 ToStringOrUndefined(isolate, import_name), module_request, cell_index,
177 location.beg_pos, location.end_pos);
184template <
typename IsolateT>
186 IsolateT* isolate,
Zone* zone)
const {
201 DCHECK_EQ(it->second->local_name, next->second->local_name);
202 DCHECK_EQ(it->second->cell_index, next->second->cell_index);
210 it->second->local_name->string();
219 for (; it != next; ++it) {
220 export_names->set(
i++, *it->second->export_name->
string());
227 DCHECK_LE(index,
static_cast<int>(data.size()));
248 Entry* entry = it->second;
250 auto import = regular_imports_.find(entry->local_name);
257 DCHECK_LE(0, import->second->module_request);
258 DCHECK_LT(import->second->module_request,
268 entry->
location =
import->second->location;
280 if (cell_index > 0)
return kExport;
281 if (cell_index < 0)
return kImport;
286 int export_index = 1;
288 auto current_key = it->first;
292 Entry* entry = it->second;
303 int import_index = -1;
305 Entry* entry = elem.second;
325 export_names.insert(std::make_pair(candidate->
export_name, candidate));
326 if (insert_result.second)
return current_duplicate;
327 if (current_duplicate ==
nullptr) {
328 current_duplicate = insert_result.first->second;
337const SourceTextModuleDescriptor::Entry*
343 duplicate = BetterDuplicate(elem.second, export_names, duplicate);
346 if (entry->export_name ==
nullptr)
continue;
347 duplicate = BetterDuplicate(entry, export_names, duplicate);
361 if (entry !=
nullptr) {
364 MessageTemplate::kDuplicateExport, entry->
export_name);
371 const Entry* entry = elem.second;
376 MessageTemplate::kModuleExportUndefined, entry->
local_name);
union v8::internal::@341::BuiltinMetadata::KindSpecificData data
static int Compare(const AstRawString *lhs, const AstRawString *rhs)
static NEVER_READ_ONLY_SPACE Handle< ModuleRequest > New(IsolateT *isolate, DirectHandle< String > specifier, ModuleImportPhase phase, DirectHandle< FixedArray > import_attributes, int position)
static const size_t kAttributeEntrySize
SourceTextModuleDescriptor * module() const
void ReportMessageAt(int start_position, int end_position, MessageTemplate message, const char *arg=nullptr)
Variable * LookupLocal(const AstRawString *name)
static constexpr Tagged< Smi > FromInt(int value)
static bool constexpr IsValid(T value)
const AstRawString * specifier() const
ModuleImportPhase phase() const
DirectHandle< v8::internal::ModuleRequest > Serialize(IsolateT *isolate) const
const ImportAttributes * import_attributes() const
void AddStarExport(const AstRawString *specifier, const ImportAttributes *import_attributes, const Scanner::Location loc, const Scanner::Location specifier_loc, Zone *zone)
ModuleRequestMap module_requests_
bool Validate(ModuleScope *module_scope, PendingCompilationErrorHandler *error_handler, Zone *zone)
RegularImportMap regular_imports_
void AddNamespaceImport(const Entry *entry, Zone *zone)
const Entry * FindDuplicateExport(Zone *zone) const
void AddRegularImport(Entry *entry)
void AddStarImport(const AstRawString *local_name, const AstRawString *specifier, const ImportAttributes *import_attributes, const Scanner::Location loc, const Scanner::Location specifier_loc, Zone *zone)
static CellIndexKind GetCellIndexKind(int cell_index)
int AddModuleRequest(const AstRawString *specifier, const ModuleImportPhase import_phase, const ImportAttributes *import_attributes, Scanner::Location specifier_loc, Zone *zone)
DirectHandle< FixedArray > SerializeRegularExports(IsolateT *isolate, Zone *zone) const
void AddEmptyImport(const AstRawString *specifier, const ImportAttributes *import_attributes, const Scanner::Location specifier_loc, Zone *zone)
void MakeIndirectExportsExplicit(Zone *zone)
RegularExportMap regular_exports_
ZoneVector< const Entry * > special_exports_
void AddImport(const AstRawString *import_name, const AstRawString *local_name, const AstRawString *specifier, const ModuleImportPhase import_phase, const ImportAttributes *import_attributes, const Scanner::Location loc, const Scanner::Location specifier_loc, Zone *zone)
void AddExport(const AstRawString *local_name, const AstRawString *export_name, const Scanner::Location loc, Zone *zone)
void AddRegularExport(Entry *entry)
void AddSpecialExport(const Entry *entry, Zone *zone)
static Handle< SourceTextModuleInfoEntry > New(IsolateT *isolate, DirectHandle< UnionOf< String, Undefined > > export_name, DirectHandle< UnionOf< String, Undefined > > local_name, DirectHandle< UnionOf< String, Undefined > > import_name, int module_request, int cell_index, int beg_pos, int end_pos)
@ kRegularExportLocalNameOffset
@ kRegularExportCellIndexOffset
@ kRegularExportExportNamesOffset
ZoneVector< RpoNumber > & result
V8_INLINE IndirectHandle< T > handle(Tagged< T > object, Isolate *isolate)
#define DCHECK_LE(v1, v2)
#define DCHECK_NOT_NULL(val)
#define DCHECK(condition)
#define DCHECK_LT(v1, v2)
#define DCHECK_EQ(v1, v2)
bool operator()(const AstRawString *lhs, const AstRawString *rhs) const
DirectHandle< SourceTextModuleInfoEntry > Serialize(IsolateT *isolate) const
const AstRawString * export_name
const AstRawString * local_name
Scanner::Location location
const AstRawString * import_name
bool operator()(const AstModuleRequest *lhs, const AstModuleRequest *rhs) const