Index: src/scopes.h |
diff --git a/src/scopes.h b/src/scopes.h |
index 58b683b8d3e506f9ac5a54feabefbed35987a212..72f1e31878efb744ac8d1210f531d1d16b7a0026 100644 |
--- a/src/scopes.h |
+++ b/src/scopes.h |
@@ -89,7 +89,16 @@ class Scope: public ZoneObject { |
// --------------------------------------------------------------------------- |
// Construction |
- Scope(Scope* outer_scope, ScopeType type); |
+ enum Type { |
+ EVAL_SCOPE, // The top-level scope for an eval source. |
+ FUNCTION_SCOPE, // The top-level scope for a function. |
+ GLOBAL_SCOPE, // The top-level scope for a program or a top-level eval. |
+ CATCH_SCOPE, // The scope introduced by catch. |
+ BLOCK_SCOPE, // The scope introduced by a new block. |
+ WITH_SCOPE // The scope introduced by with. |
+ }; |
+ |
+ Scope(Scope* outer_scope, Type type); |
// Compute top scope and allocate variables. For lazy compilation the top |
// scope only contains the single lazily compiled function, so this |
@@ -197,37 +206,6 @@ class Scope: public ZoneObject { |
strict_mode_ = FLAG_strict_mode; |
} |
- // Position in the source where this scope begins and ends. |
- // |
- // * For the scope of a with statement |
- // with (obj) stmt |
- // start position: start position of first token of 'stmt' |
- // end position: end position of last token of 'stmt' |
- // * For the scope of a block |
- // { stmts } |
- // start position: start position of '{' |
- // end position: end position of '}' |
- // * For the scope of a function literal or decalaration |
- // function fun(a,b) { stmts } |
- // start position: start position of '(' |
- // end position: end position of '}' |
- // * For the scope of a catch block |
- // try { stms } catch(e) { stmts } |
- // start position: start position of '(' |
- // end position: end position of ')' |
- // * For the scope of a for-statement |
- // for (let x ...) stmt |
- // start position: start position of '(' |
- // end position: end position of last token of 'stmt' |
- int start_position() const { return start_position_; } |
- void set_start_position(int statement_pos) { |
- start_position_ = statement_pos; |
- } |
- int end_position() const { return end_position_; } |
- void set_end_position(int statement_pos) { |
- end_position_ = statement_pos; |
- } |
- |
// --------------------------------------------------------------------------- |
// Predicates. |
@@ -266,9 +244,6 @@ class Scope: public ZoneObject { |
// --------------------------------------------------------------------------- |
// Accessors. |
- // The type of this scope. |
- ScopeType type() const { return type_; } |
- |
// The variable corresponding the 'this' value. |
Variable* receiver() { return receiver_; } |
@@ -295,8 +270,6 @@ class Scope: public ZoneObject { |
// Declarations list. |
ZoneList<Declaration*>* declarations() { return &decls_; } |
- // Inner scope list. |
- ZoneList<Scope*>* inner_scopes() { return &inner_scopes_; } |
// --------------------------------------------------------------------------- |
// Variable allocation. |
@@ -340,13 +313,6 @@ class Scope: public ZoneObject { |
Handle<SerializedScopeInfo> GetSerializedScopeInfo(); |
- // Get the chain of nested scopes within this scope for the source statement |
- // position. The scopes will be added to the list from the outermost scope to |
- // the innermost scope. Only nested block, catch or with scopes are tracked |
- // and will be returned, but no inner function scopes. |
- void GetNestedScopeChain(List<Handle<SerializedScopeInfo> >* chain, |
- int statement_position); |
- |
// --------------------------------------------------------------------------- |
// Strict mode support. |
bool IsDeclared(Handle<String> name) { |
@@ -370,7 +336,7 @@ class Scope: public ZoneObject { |
protected: |
friend class ParserFactory; |
- explicit Scope(ScopeType type); |
+ explicit Scope(Type type); |
Isolate* const isolate_; |
@@ -379,7 +345,7 @@ class Scope: public ZoneObject { |
ZoneList<Scope*> inner_scopes_; // the immediately enclosed inner scopes |
// The scope type. |
- ScopeType type_; |
+ Type type_; |
// Debugging support. |
Handle<String> scope_name_; |
@@ -421,9 +387,6 @@ class Scope: public ZoneObject { |
bool scope_calls_eval_; |
// This scope is a strict mode scope. |
bool strict_mode_; |
- // Source positions. |
- int start_position_; |
- int end_position_; |
// Computed via PropagateScopeInfo. |
bool outer_scope_calls_non_strict_eval_; |
@@ -526,9 +489,7 @@ class Scope: public ZoneObject { |
private: |
// Construct a scope based on the scope info. |
- Scope(Scope* inner_scope, |
- ScopeType type, |
- Handle<SerializedScopeInfo> scope_info); |
+ Scope(Scope* inner_scope, Type type, Handle<SerializedScopeInfo> scope_info); |
// Construct a catch scope with a binding for the name. |
Scope(Scope* inner_scope, Handle<String> catch_variable_name); |
@@ -540,7 +501,7 @@ class Scope: public ZoneObject { |
} |
} |
- void SetDefaults(ScopeType type, |
+ void SetDefaults(Type type, |
Scope* outer_scope, |
Handle<SerializedScopeInfo> scope_info); |
}; |