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

Unified Diff: src/ast/scopes.h

Issue 2201763004: Shuffle fields around in Scope to save more zone memory (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comment Created 4 years, 5 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 | « no previous file | src/ast/scopes.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/ast/scopes.h
diff --git a/src/ast/scopes.h b/src/ast/scopes.h
index d8edf9148fe91a6cbc5221b095eee599962017cc..9ebc7961c6eb49d8587bea7bdbf93aeeabb74556 100644
--- a/src/ast/scopes.h
+++ b/src/ast/scopes.h
@@ -118,10 +118,12 @@ class Scope: public ZoneObject {
Context* context, Scope* script_scope,
AstValueFactory* ast_value_factory);
+#ifdef DEBUG
// The scope name is only used for printing/debugging.
void SetScopeName(const AstRawString* scope_name) {
scope_name_ = scope_name;
}
+#endif
void DeclareThis(AstValueFactory* ast_value_factory);
void DeclareDefaultFunctionVariables(AstValueFactory* ast_value_factory);
@@ -519,7 +521,7 @@ class Scope: public ZoneObject {
const AstRawString* catch_variable_name() const {
DCHECK(is_catch_scope());
- DCHECK(num_var() == 1);
+ DCHECK_EQ(1, num_var());
return static_cast<AstRawString*>(variables_.Start()->key);
}
@@ -533,9 +535,6 @@ class Scope: public ZoneObject {
ZoneList<Variable*>* context_locals,
ZoneList<Variable*>* context_globals);
- // Current number of var locals.
- int num_var() const { return num_var_; }
-
// Result of variable allocation.
int num_stack_slots() const { return num_stack_slots_; }
int num_heap_slots() const { return num_heap_slots_; }
@@ -604,6 +603,8 @@ class Scope: public ZoneObject {
return params_.Contains(variables_.Lookup(name));
}
+ int num_var() const { return variables_.occupancy(); }
adamk 2016/08/01 22:47:07 You might have noticed that this slightly changes
+
SloppyBlockFunctionMap* sloppy_block_function_map() {
return &sloppy_block_function_map_;
}
@@ -626,13 +627,10 @@ class Scope: public ZoneObject {
Scope* inner_scope_; // an inner scope of this scope
Scope* sibling_; // a sibling inner scope of the outer scope of this scope.
- // The scope type.
- const ScopeType scope_type_;
- // If the scope is a function scope, this is the function kind.
- const FunctionKind function_kind_;
-
// Debugging support.
+#ifdef DEBUG
const AstRawString* scope_name_;
+#endif
// The variables declared in this scope:
//
@@ -669,45 +667,51 @@ class Scope: public ZoneObject {
// Map of function names to lists of functions defined in sloppy blocks
SloppyBlockFunctionMap sloppy_block_function_map_;
+ // The scope type.
+ const ScopeType scope_type_;
+ // If the scope is a function scope, this is the function kind.
+ const FunctionKind function_kind_;
+
// Scope-specific information computed during parsing.
//
+ // The language mode of this scope.
+ STATIC_ASSERT(LANGUAGE_END == 3);
+ LanguageMode language_mode_ : 2;
// This scope is inside a 'with' of some outer scope.
- bool scope_inside_with_;
+ bool scope_inside_with_ : 1;
// This scope or a nested catch scope or with scope contain an 'eval' call. At
// the 'eval' call site this scope is the declaration scope.
- bool scope_calls_eval_;
+ bool scope_calls_eval_ : 1;
// This scope uses "super" property ('super.foo').
- bool scope_uses_super_property_;
+ bool scope_uses_super_property_ : 1;
// This scope has a parameter called "arguments".
- bool has_arguments_parameter_;
+ bool has_arguments_parameter_ : 1;
// This scope contains an "use asm" annotation.
- bool asm_module_;
+ bool asm_module_ : 1;
// This scope's outer context is an asm module.
- bool asm_function_;
+ bool asm_function_ : 1;
// This scope's declarations might not be executed in order (e.g., switch).
- bool scope_nonlinear_;
- // The language mode of this scope.
- LanguageMode language_mode_;
- // Source positions.
- int start_position_;
- int end_position_;
- bool is_hidden_;
+ bool scope_nonlinear_ : 1;
+ bool is_hidden_ : 1;
+ bool has_simple_parameters_ : 1;
// Computed via PropagateScopeInfo.
- bool outer_scope_calls_sloppy_eval_;
- bool inner_scope_calls_eval_;
- bool force_eager_compilation_;
- bool force_context_allocation_;
+ bool outer_scope_calls_sloppy_eval_ : 1;
+ bool inner_scope_calls_eval_ : 1;
+ bool force_eager_compilation_ : 1;
+ bool force_context_allocation_ : 1;
// True if it doesn't need scope resolution (e.g., if the scope was
// constructed based on a serialized scope info or a catch context).
- bool already_resolved_;
+ bool already_resolved_ : 1;
+ bool already_resolved() { return already_resolved_; }
// True if it holds 'var' declarations.
- bool is_declaration_scope_;
+ bool is_declaration_scope_ : 1;
- // Computed as variables are declared.
- int num_var_;
+ // Source positions.
+ int start_position_;
+ int end_position_;
// Computed via AllocateVariables; function, block and catch scopes only.
int num_stack_slots_;
@@ -716,13 +720,11 @@ class Scope: public ZoneObject {
// Info about the parameter list of a function.
int arity_;
- bool has_simple_parameters_;
- Variable* rest_parameter_;
int rest_index_;
+ Variable* rest_parameter_;
// Serialized scope info support.
Handle<ScopeInfo> scope_info_;
- bool already_resolved() { return already_resolved_; }
// Create a non-local variable with a given name.
// These variables are looked up dynamically at runtime.
« no previous file with comments | « no previous file | src/ast/scopes.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698