Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(898)

Unified Diff: src/objects.h

Issue 2388153003: [modules] Implement namespace imports. (Closed)
Patch Set: Fix verifier. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index ea086931a4d53768ab85c93eeb9a98d5669e4aa8..e5ff128e28880b00bc5673f9db16de94df6f135a 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -71,6 +71,7 @@
// - JSValue
// - JSDate
// - JSMessageObject
+// - JSModuleNamespace
// - JSProxy
// - FixedArrayBase
// - ByteArray
@@ -416,6 +417,7 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1;
V(JS_ARGUMENTS_TYPE) \
V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \
V(JS_GENERATOR_OBJECT_TYPE) \
+ V(JS_MODULE_NAMESPACE_TYPE) \
V(JS_GLOBAL_OBJECT_TYPE) \
V(JS_GLOBAL_PROXY_TYPE) \
V(JS_API_OBJECT_TYPE) \
@@ -717,6 +719,7 @@ enum InstanceType {
JS_ARGUMENTS_TYPE,
JS_CONTEXT_EXTENSION_OBJECT_TYPE,
JS_GENERATOR_OBJECT_TYPE,
+ JS_MODULE_NAMESPACE_TYPE,
JS_ARRAY_TYPE,
JS_ARRAY_BUFFER_TYPE,
JS_TYPED_ARRAY_TYPE,
@@ -886,6 +889,7 @@ class LayoutDescriptor;
class LiteralsArray;
class LookupIterator;
class FieldType;
+class Module;
class ModuleDescriptor;
class ModuleInfoEntry;
class ModuleInfo;
@@ -970,6 +974,7 @@ template <class C> inline bool Is(Object* obj);
V(JSObject) \
V(JSContextExtensionObject) \
V(JSGeneratorObject) \
+ V(JSModuleNamespace) \
V(Map) \
V(DescriptorArray) \
V(FrameArray) \
@@ -3950,6 +3955,9 @@ class ObjectHashTable: public HashTable<ObjectHashTable,
Object* Lookup(Handle<Object> key, int32_t hash);
Object* Lookup(Isolate* isolate, Handle<Object> key, int32_t hash);
+ // Returns the value at entry.
+ Object* ValueAt(int entry);
+
// Adds (or overwrites) the value associated with the given key.
static Handle<ObjectHashTable> Put(Handle<ObjectHashTable> table,
Handle<Object> key,
@@ -7898,6 +7906,22 @@ class JSGeneratorObject: public JSObject {
DISALLOW_IMPLICIT_CONSTRUCTORS(JSGeneratorObject);
};
+class JSModuleNamespace : public JSObject {
adamk 2016/10/04 18:26:53 Please add a comment for those not as well-versed
neis 2016/10/05 08:18:41 Done.
+ public:
+ DECLARE_CAST(JSModuleNamespace)
+ DECLARE_VERIFIER(JSModuleNamespace)
+
+ DECL_ACCESSORS(module, Module)
adamk 2016/10/04 18:26:53 Comment please.
neis 2016/10/05 08:18:41 Done.
+
+ Object* Get(Handle<String> name);
adamk 2016/10/04 18:26:53 Please add a comment. Get what? Possible return va
neis 2016/10/05 08:18:41 Done.
adamk 2016/10/05 17:21:54 Ah, I didn't realize ObjectHashTable had this API
+
+ static const int kModuleOffset = JSObject::kHeaderSize;
+ static const int kSize = kModuleOffset + kPointerSize;
+
+ private:
+ DISALLOW_IMPLICIT_CONSTRUCTORS(JSModuleNamespace);
+};
+
// A Module object is a mapping from export names to cells
// This is still very much in flux.
class Module : public Struct {
@@ -7906,13 +7930,15 @@ class Module : public Struct {
DECLARE_VERIFIER(Module)
DECLARE_PRINTER(Module)
- // The code representing this Module, either a
- // SharedFunctionInfo or a JSFunction depending
- // on whether it's been instantiated.
+ // The code representing this Module, either a SharedFunctionInfo or a
+ // JSFunction depending on whether it's been instantiated.
DECL_ACCESSORS(code, Object)
DECL_ACCESSORS(exports, ObjectHashTable)
+ // The namespace object (or undefined).
+ DECL_ACCESSORS(module_namespace, HeapObject)
+
// [[RequestedModules]]: Modules imported or re-exported by this module.
// Corresponds 1-to-1 to the module specifier strings in
// ModuleInfo::module_requests.
@@ -7922,7 +7948,7 @@ class Module : public Struct {
// are only evaluated a single time.
DECL_BOOLEAN_ACCESSORS(evaluated)
- // Storage for [[Evaluated]]
+ // Storage for [[Evaluated]].
DECL_INT_ACCESSORS(flags)
// Embedder-specified data
@@ -7955,12 +7981,18 @@ class Module : public Struct {
static Handle<Object> LoadImport(Handle<Module> module, Handle<String> name,
int module_request);
+ static void FetchStarExports(Handle<Module> module, Zone* zone);
+ static Handle<JSModuleNamespace> GetModuleNamespace(Handle<Module> module);
adamk 2016/10/04 18:26:53 Should this function be private? It looks like the
neis 2016/10/05 08:18:41 Done.
+ static Handle<JSModuleNamespace> GetModuleNamespace(Handle<Module> module,
adamk 2016/10/04 18:26:53 Please add a comment (specifically, the second arg
neis 2016/10/05 08:18:41 Done.
+ int module_request);
+
static const int kCodeOffset = HeapObject::kHeaderSize;
static const int kExportsOffset = kCodeOffset + kPointerSize;
static const int kRequestedModulesOffset = kExportsOffset + kPointerSize;
static const int kFlagsOffset = kRequestedModulesOffset + kPointerSize;
static const int kEmbedderDataOffset = kFlagsOffset + kPointerSize;
- static const int kSize = kEmbedderDataOffset + kPointerSize;
+ static const int kModuleNamespaceOffset = kEmbedderDataOffset + kPointerSize;
+ static const int kSize = kModuleNamespaceOffset + kPointerSize;
private:
enum { kEvaluatedBit };

Powered by Google App Engine
This is Rietveld 408576698