Index: src/ast/modules.h |
diff --git a/src/ast/modules.h b/src/ast/modules.h |
index 5b6a86cc2de613db45073d74440ab580c038ad91..7e78ac2bad9927332d1ee64a5cc5dfa252d16c0d 100644 |
--- a/src/ast/modules.h |
+++ b/src/ast/modules.h |
@@ -24,6 +24,9 @@ class ModuleDescriptor : public ZoneObject { |
regular_exports_(zone), |
regular_imports_(zone) {} |
+ // The following Add* methods are high-level convenience functions for use by |
+ // the parser. |
+ |
// import x from "foo.js"; |
// import {x} from "foo.js"; |
// import {x as y} from "foo.js"; |
@@ -83,6 +86,10 @@ class ModuleDescriptor : public ZoneObject { |
local_name(nullptr), |
import_name(nullptr), |
module_request(nullptr) {} |
+ |
+ Handle<FixedArray> Serialize(Isolate* isolate) const; |
+ static Entry* Deserialize(Isolate* isolate, AstValueFactory* avfactory, |
+ Handle<FixedArray> data); |
}; |
// Empty imports and namespace imports. |
@@ -105,6 +112,34 @@ class ModuleDescriptor : public ZoneObject { |
return regular_exports_; |
} |
+ void AddRegularExport(Entry* entry) { |
+ DCHECK_NOT_NULL(entry->export_name); |
+ DCHECK_NOT_NULL(entry->local_name); |
+ DCHECK_NULL(entry->import_name); |
+ regular_exports_.insert(std::make_pair(entry->local_name, entry)); |
+ } |
+ |
+ void AddSpecialExport(const Entry* entry, Zone* zone) { |
+ DCHECK_NOT_NULL(entry->module_request); |
+ special_exports_.Add(entry, zone); |
+ } |
+ |
+ void AddRegularImport(const Entry* entry) { |
+ DCHECK_NOT_NULL(entry->import_name); |
+ DCHECK_NOT_NULL(entry->local_name); |
+ DCHECK_NOT_NULL(entry->module_request); |
+ DCHECK_NULL(entry->export_name); |
+ regular_imports_.insert(std::make_pair(entry->local_name, entry)); |
+ // We don't care if there's already an entry for this local name, as in that |
+ // case we will report an error when declaring the variable. |
+ } |
+ |
+ void AddSpecialImport(const Entry* entry, Zone* zone) { |
+ DCHECK_NOT_NULL(entry->module_request); |
+ DCHECK_NULL(entry->export_name); |
+ special_imports_.Add(entry, zone); |
+ } |
+ |
private: |
// TODO(neis): Use STL datastructure instead of ZoneList? |
ZoneList<const Entry*> special_exports_; |