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

Unified Diff: src/objects.h

Issue 2407183002: [modules] Don't unnecessarily keep function alive after evaluation. (Closed)
Patch Set: 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
« no previous file with comments | « src/factory.cc ('k') | src/objects.cc » ('j') | src/objects-debug.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index f77ac4bc8ea3664643a20395b970e03ab8a6ece3..56ef30b0bd178ad0bcce23a875233c3cd9c509f0 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -7907,9 +7907,11 @@ class Module : public Struct {
DECLARE_PRINTER(Module)
// The code representing this Module, either a SharedFunctionInfo or a
- // JSFunction depending on whether it's been instantiated.
+ // JSFunction or a ModuleInfo depending on whether it's been instantiated and
+ // evaluated. See Module::ModuleVerify() for the precise invariant.
DECL_ACCESSORS(code, Object)
adamk 2016/10/11 15:54:05 Some name ideas: impl internal module
+ // The export table.
DECL_ACCESSORS(exports, ObjectHashTable)
// The namespace object (or undefined).
@@ -7920,13 +7922,6 @@ class Module : public Struct {
// ModuleInfo::module_requests.
DECL_ACCESSORS(requested_modules, FixedArray)
- // [[Evaluated]]: Whether this module has been evaluated. Modules
- // are only evaluated a single time.
- DECL_BOOLEAN_ACCESSORS(evaluated)
-
- // Storage for [[Evaluated]].
- DECL_INT_ACCESSORS(flags)
-
// Embedder-specified data
DECL_ACCESSORS(embedder_data, Object)
@@ -7939,6 +7934,10 @@ class Module : public Struct {
// Get the ModuleInfo associated with the code.
inline ModuleInfo* info() const;
+ inline bool instantiated() const;
+ inline bool evaluated() const;
+ inline void set_evaluated();
+
// Implementation of spec operation ModuleDeclarationInstantiation.
// Returns false if an exception occurred during instantiation, true
// otherwise.
@@ -7965,8 +7964,7 @@ class Module : public Struct {
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 kEmbedderDataOffset = kRequestedModulesOffset + kPointerSize;
static const int kModuleNamespaceOffset = kEmbedderDataOffset + kPointerSize;
static const int kHashOffset = kModuleNamespaceOffset + kPointerSize;
static const int kSize = kHashOffset + kPointerSize;
« no previous file with comments | « src/factory.cc ('k') | src/objects.cc » ('j') | src/objects-debug.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698