| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index 8eb2f9efaf6ec510199a15339b10a703ebd97ffc..316a5969f6f5040f476f2159886bb627a5c2c4fb 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -97,7 +97,6 @@
|
| // - TemplateList
|
| // - TransitionArray
|
| // - ScopeInfo
|
| -// - ModuleInfoEntry
|
| // - ModuleInfo
|
| // - ScriptContextTable
|
| // - WeakFixedArray
|
| @@ -159,6 +158,7 @@
|
| // - CodeCache
|
| // - PrototypeInfo
|
| // - Module
|
| +// - ModuleInfoEntry
|
| // - WeakCell
|
| //
|
| // Formats of Object*:
|
| @@ -407,6 +407,7 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1;
|
| V(TUPLE3_TYPE) \
|
| V(CONTEXT_EXTENSION_TYPE) \
|
| V(MODULE_TYPE) \
|
| + V(MODULE_INFO_ENTRY_TYPE) \
|
| \
|
| V(FIXED_ARRAY_TYPE) \
|
| V(FIXED_DOUBLE_ARRAY_TYPE) \
|
| @@ -572,6 +573,7 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1;
|
| V(PROTOTYPE_INFO, PrototypeInfo, prototype_info) \
|
| V(TUPLE3, Tuple3, tuple3) \
|
| V(MODULE, Module, module) \
|
| + V(MODULE_INFO_ENTRY, ModuleInfoEntry, module_info_entry) \
|
| V(CONTEXT_EXTENSION, ContextExtension, context_extension)
|
|
|
| // We use the full 8 bits of the instance_type field to encode heap object
|
| @@ -751,6 +753,7 @@ enum InstanceType {
|
| TUPLE3_TYPE,
|
| CONTEXT_EXTENSION_TYPE,
|
| MODULE_TYPE,
|
| + MODULE_INFO_ENTRY_TYPE,
|
|
|
| // All the following types are subtypes of JSReceiver, which corresponds to
|
| // objects in the JS sense. The first and the last type in this range are
|
| @@ -1102,7 +1105,6 @@ template <class C> inline bool Is(Object* obj);
|
| V(ScriptContextTable) \
|
| V(NativeContext) \
|
| V(ScopeInfo) \
|
| - V(ModuleInfoEntry) \
|
| V(ModuleInfo) \
|
| V(JSBoundFunction) \
|
| V(JSFunction) \
|
| @@ -4734,71 +4736,6 @@ class ScopeInfo : public FixedArray {
|
| friend class ScopeIterator;
|
| };
|
|
|
| -class ModuleInfoEntry : public FixedArray {
|
| - public:
|
| - DECLARE_CAST(ModuleInfoEntry)
|
| - static Handle<ModuleInfoEntry> New(Isolate* isolate,
|
| - Handle<Object> export_name,
|
| - Handle<Object> local_name,
|
| - Handle<Object> import_name,
|
| - int module_request, int cell_index,
|
| - int beg_pos, int end_pos);
|
| - inline Object* export_name() const;
|
| - inline Object* local_name() const;
|
| - inline Object* import_name() const;
|
| - inline int module_request() const;
|
| - inline int cell_index() const;
|
| - inline int beg_pos() const;
|
| - inline int end_pos() const;
|
| -
|
| - private:
|
| - friend class Factory;
|
| - enum {
|
| - kExportNameIndex,
|
| - kLocalNameIndex,
|
| - kImportNameIndex,
|
| - kModuleRequestIndex,
|
| - kCellIndexIndex,
|
| - kBegPosIndex,
|
| - kEndPosIndex,
|
| - kLength
|
| - };
|
| -};
|
| -
|
| -// ModuleInfo is to ModuleDescriptor what ScopeInfo is to Scope.
|
| -// TODO(neis): Use Struct instead of FixedArray.
|
| -class ModuleInfo : public FixedArray {
|
| - public:
|
| - DECLARE_CAST(ModuleInfo)
|
| -
|
| - static Handle<ModuleInfo> New(Isolate* isolate, Zone* zone,
|
| - ModuleDescriptor* descr);
|
| -
|
| - inline FixedArray* module_requests() const;
|
| - inline FixedArray* special_exports() const;
|
| - inline FixedArray* regular_exports() const;
|
| - inline FixedArray* namespace_imports() const;
|
| - inline FixedArray* regular_imports() const;
|
| -
|
| - static Handle<ModuleInfoEntry> LookupRegularImport(Handle<ModuleInfo> info,
|
| - Handle<String> local_name);
|
| -
|
| -#ifdef DEBUG
|
| - inline bool Equals(ModuleInfo* other) const;
|
| -#endif
|
| -
|
| - private:
|
| - friend class Factory;
|
| - enum {
|
| - kModuleRequestsIndex,
|
| - kSpecialExportsIndex,
|
| - kRegularExportsIndex,
|
| - kNamespaceImportsIndex,
|
| - kRegularImportsIndex,
|
| - kLength
|
| - };
|
| -};
|
| -
|
| // The cache for maps used by normalized (dictionary mode) objects.
|
| // Such maps do not have property descriptors, so a typical program
|
| // needs very limited number of distinct normalized maps.
|
| @@ -8124,6 +8061,73 @@ class JSGeneratorObject: public JSObject {
|
| DISALLOW_IMPLICIT_CONSTRUCTORS(JSGeneratorObject);
|
| };
|
|
|
| +class ModuleInfoEntry : public Struct {
|
| + public:
|
| + DECLARE_CAST(ModuleInfoEntry)
|
| + DECLARE_PRINTER(ModuleInfoEntry)
|
| + DECLARE_VERIFIER(ModuleInfoEntry)
|
| +
|
| + DECL_ACCESSORS(export_name, Object)
|
| + DECL_ACCESSORS(local_name, Object)
|
| + DECL_ACCESSORS(import_name, Object)
|
| + DECL_INT_ACCESSORS(module_request)
|
| + DECL_INT_ACCESSORS(cell_index)
|
| + DECL_INT_ACCESSORS(beg_pos)
|
| + DECL_INT_ACCESSORS(end_pos)
|
| +
|
| + static Handle<ModuleInfoEntry> New(Isolate* isolate,
|
| + Handle<Object> export_name,
|
| + Handle<Object> local_name,
|
| + Handle<Object> import_name,
|
| + int module_request, int cell_index,
|
| + int beg_pos, int end_pos);
|
| +
|
| + static const int kExportNameOffset = HeapObject::kHeaderSize;
|
| + static const int kLocalNameOffset = kExportNameOffset + kPointerSize;
|
| + static const int kImportNameOffset = kLocalNameOffset + kPointerSize;
|
| + static const int kModuleRequestOffset = kImportNameOffset + kPointerSize;
|
| + static const int kCellIndexOffset = kModuleRequestOffset + kPointerSize;
|
| + static const int kBegPosOffset = kCellIndexOffset + kPointerSize;
|
| + static const int kEndPosOffset = kBegPosOffset + kPointerSize;
|
| + static const int kSize = kEndPosOffset + kPointerSize;
|
| +
|
| + private:
|
| + DISALLOW_IMPLICIT_CONSTRUCTORS(ModuleInfoEntry);
|
| +};
|
| +
|
| +// ModuleInfo is to ModuleDescriptor what ScopeInfo is to Scope.
|
| +class ModuleInfo : public FixedArray {
|
| + public:
|
| + DECLARE_CAST(ModuleInfo)
|
| +
|
| + static Handle<ModuleInfo> New(Isolate* isolate, Zone* zone,
|
| + ModuleDescriptor* descr);
|
| +
|
| + inline FixedArray* module_requests() const;
|
| + inline FixedArray* special_exports() const;
|
| + inline FixedArray* regular_exports() const;
|
| + inline FixedArray* namespace_imports() const;
|
| + inline FixedArray* regular_imports() const;
|
| +
|
| + static Handle<ModuleInfoEntry> LookupRegularImport(Handle<ModuleInfo> info,
|
| + Handle<String> local_name);
|
| +
|
| +#ifdef DEBUG
|
| + inline bool Equals(ModuleInfo* other) const;
|
| +#endif
|
| +
|
| + private:
|
| + friend class Factory;
|
| + enum {
|
| + kModuleRequestsIndex,
|
| + kSpecialExportsIndex,
|
| + kRegularExportsIndex,
|
| + kNamespaceImportsIndex,
|
| + kRegularImportsIndex,
|
| + kLength
|
| + };
|
| + DISALLOW_IMPLICIT_CONSTRUCTORS(ModuleInfo);
|
| +};
|
| // When importing a module namespace (import * as foo from "bar"), a
|
| // JSModuleNamespace object (representing module "bar") is created and bound to
|
| // the declared variable (foo). A module can have at most one namespace object.
|
|
|