| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index 7ad59a1050b297ef76860197bb11d53d3c1b4ba7..4bc1017c23bbaa1374b5193dab03359e03d1736f 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -94,6 +94,7 @@
|
| // - TemplateList
|
| // - TransitionArray
|
| // - ScopeInfo
|
| +// - ModuleInfo
|
| // - ScriptContextTable
|
| // - WeakFixedArray
|
| // - FixedDoubleArray
|
| @@ -879,6 +880,8 @@ class LayoutDescriptor;
|
| class LiteralsArray;
|
| class LookupIterator;
|
| class FieldType;
|
| +class ModuleDescriptor;
|
| +class ModuleInfo;
|
| class ObjectHashTable;
|
| class ObjectVisitor;
|
| class PropertyCell;
|
| @@ -979,6 +982,7 @@ template <class C> inline bool Is(Object* obj);
|
| V(ScriptContextTable) \
|
| V(NativeContext) \
|
| V(ScopeInfo) \
|
| + V(ModuleInfo) \
|
| V(JSBoundFunction) \
|
| V(JSFunction) \
|
| V(Code) \
|
| @@ -4313,6 +4317,8 @@ class ScopeInfo : public FixedArray {
|
| // Return the function_name if present.
|
| String* FunctionName();
|
|
|
| + ModuleInfo* ModuleDescriptorInfo();
|
| +
|
| // Return the name of the given parameter.
|
| String* ParameterName(int var);
|
|
|
| @@ -4366,6 +4372,12 @@ class ScopeInfo : public FixedArray {
|
| InitializationFlag* init_flag,
|
| MaybeAssignedFlag* maybe_assigned_flag);
|
|
|
| + // Lookup metadata of a MODULE-allocated variable. Return a negative value if
|
| + // there is no module variable with the given name.
|
| + static int ModuleIndex(Handle<ScopeInfo> scope_info, Handle<String> name,
|
| + VariableMode* mode, InitializationFlag* init_flag,
|
| + MaybeAssignedFlag* maybe_assigned_flag);
|
| +
|
| // Lookup the name of a certain context slot by its index.
|
| String* ContextSlotName(int slot_index);
|
|
|
| @@ -4400,8 +4412,7 @@ class ScopeInfo : public FixedArray {
|
| // The layout of the static part of a ScopeInfo is as follows. Each entry is
|
| // numeric and occupies one array slot.
|
| // 1. A set of properties of the scope
|
| - // 2. The number of parameters. This only applies to function scopes. For
|
| - // non-function scopes this is 0.
|
| + // 2. The number of parameters. For non-function scopes this is 0.
|
| // 3. The number of non-parameter variables allocated on the stack.
|
| // 4. The number of non-parameter and parameter variables allocated in the
|
| // context.
|
| @@ -4460,6 +4471,12 @@ class ScopeInfo : public FixedArray {
|
| // information about the function variable. It always occupies two array
|
| // slots: a. The name of the function variable.
|
| // b. The context or stack slot index for the variable.
|
| + // 8. ModuleInfoEntryIndex:
|
| + // For a module scope, this part contains module-specific information (for
|
| + // non-module scopes it is empty):
|
| + // The first slot contains the ModuleInfo. The second slot contains the
|
| + // number n of MODULE-allocated variables. The remaining 3*n slots contain
|
| + // the metadata of those variables.
|
| int ParameterEntriesIndex();
|
| int StackLocalFirstSlotIndex();
|
| int StackLocalEntriesIndex();
|
| @@ -4469,6 +4486,7 @@ class ScopeInfo : public FixedArray {
|
| int ContextGlobalInfoEntriesIndex();
|
| int ReceiverEntryIndex();
|
| int FunctionNameEntryIndex();
|
| + int ModuleInfoEntryIndex();
|
|
|
| int Lookup(Handle<String> name, int start, int end, VariableMode* mode,
|
| VariableLocation* location, InitializationFlag* init_flag,
|
| @@ -4511,6 +4529,13 @@ class ScopeInfo : public FixedArray {
|
| friend class ScopeIterator;
|
| };
|
|
|
| +class ModuleInfo : public FixedArray {
|
| + public:
|
| + DECLARE_CAST(ModuleInfo)
|
| + static Handle<ModuleInfo> New(Isolate* isolate, ModuleDescriptor* descr);
|
| + inline FixedArray* special_exports() const;
|
| + inline FixedArray* regular_exports() const;
|
| +};
|
|
|
| // The cache for maps used by normalized (dictionary mode) objects.
|
| // Such maps do not have property descriptors, so a typical program
|
|
|