Index: src/scopes.h |
diff --git a/src/scopes.h b/src/scopes.h |
index d909b81fc1f420d41ca273e702522c70b015ad2c..09901ade615237a771a34653a9922d08206ce788 100644 |
--- a/src/scopes.h |
+++ b/src/scopes.h |
@@ -302,6 +302,14 @@ class Scope: public ZoneObject { |
explicit Scope(Type type); |
+ void InsertAfterScope(Scope* scope) { |
+ inner_scopes_.Add(scope); |
+ outer_scope_ = scope->outer_scope_; |
+ outer_scope_->inner_scopes_.RemoveElement(scope); |
+ outer_scope_->inner_scopes_.Add(this); |
+ scope->outer_scope_ = this; |
+ } |
+ |
// Scope tree. |
Scope* outer_scope_; // the immediately enclosing outer scope, or NULL |
ZoneList<Scope*> inner_scopes_; // the immediately enclosed inner scopes |
@@ -355,6 +363,10 @@ class Scope: public ZoneObject { |
int num_stack_slots_; |
int num_heap_slots_; |
+ // Serialized scopes support. |
+ SerializedScopeInfo* scope_info_; |
+ bool resolved() { return scope_info_ != NULL; } |
+ |
// Create a non-local variable with a given name. |
// These variables are looked up dynamically at runtime. |
Variable* NonLocal(Handle<String> name, Variable::Mode mode); |
@@ -386,6 +398,33 @@ class Scope: public ZoneObject { |
void AllocateNonParameterLocal(Variable* var); |
void AllocateNonParameterLocals(); |
void AllocateVariablesRecursively(); |
+ |
+ private: |
+ Scope(Scope* inner_scope, SerializedScopeInfo* scope_info); |
+ |
+ void SetDefaults(Type type, |
+ Scope* outer_scope, |
+ SerializedScopeInfo* scope_info) { |
+ outer_scope_ = outer_scope; |
+ type_ = type; |
+ scope_name_ = Factory::empty_symbol(); |
+ dynamics_ = NULL; |
+ receiver_ = NULL; |
+ function_ = NULL; |
+ arguments_ = NULL; |
+ arguments_shadow_ = NULL; |
+ illegal_redecl_ = NULL; |
+ scope_inside_with_ = false; |
+ scope_contains_with_ = false; |
+ scope_calls_eval_ = false; |
+ outer_scope_calls_eval_ = false; |
+ inner_scope_calls_eval_ = false; |
+ outer_scope_is_eval_scope_ = false; |
+ force_eager_compilation_ = false; |
+ num_stack_slots_ = 0; |
+ num_heap_slots_ = 0; |
+ scope_info_ = scope_info; |
+ } |
}; |