Index: src/ast/scopes.h |
diff --git a/src/ast/scopes.h b/src/ast/scopes.h |
index 478470eadbc776c83df449469e3ac99f8dda4897..427fab15c226580978eba1505229acb38bef0b46 100644 |
--- a/src/ast/scopes.h |
+++ b/src/ast/scopes.h |
@@ -369,6 +369,7 @@ class Scope: public ZoneObject { |
// the scope for which a function prologue allocates a context) or declaring |
// temporaries. |
DeclarationScope* GetClosureScope(); |
+ const DeclarationScope* GetClosureScope() const; |
// Find the first (non-arrow) function or script scope. This is where |
// 'this' is bound, and what determines the function kind. |
@@ -417,14 +418,6 @@ class Scope: public ZoneObject { |
void set_is_debug_evaluate_scope() { is_debug_evaluate_scope_ = true; } |
bool is_debug_evaluate_scope() const { return is_debug_evaluate_scope_; } |
- bool is_lazily_parsed() const { return is_lazily_parsed_; } |
- |
- bool ShouldEagerCompile() const; |
- |
- // Marks this scope and all inner scopes (except for inner function scopes) |
- // such that they get eagerly compiled. |
- void SetShouldEagerCompile(); |
- |
protected: |
explicit Scope(Zone* zone); |
@@ -449,16 +442,7 @@ class Scope: public ZoneObject { |
// not deserialized from a context). Also, since NeedsContext() is only |
// returning a valid result after variables are resolved, NeedsScopeInfo() |
// should also be invoked after resolution. |
- bool NeedsScopeInfo() const { |
- DCHECK(!already_resolved_); |
- // A lazily parsed scope doesn't contain enough information to create a |
- // ScopeInfo from it. |
- if (!ShouldEagerCompile()) return false; |
- // The debugger expects all functions to have scope infos. |
- // TODO(jochen|yangguo): Remove this requirement. |
- if (is_function_scope()) return true; |
- return NeedsContext(); |
- } |
+ bool NeedsScopeInfo() const; |
Zone* zone_; |
@@ -528,9 +512,6 @@ class Scope: public ZoneObject { |
// True if it holds 'var' declarations. |
bool is_declaration_scope_ : 1; |
- bool is_lazily_parsed_ : 1; |
- bool should_eager_compile_ : 1; |
- |
// Create a non-local variable with a given name. |
// These variables are looked up dynamically at runtime. |
Variable* NonLocal(const AstRawString* name, VariableMode mode); |
@@ -636,6 +617,10 @@ class DeclarationScope : public Scope { |
IsClassConstructor(function_kind()))); |
} |
+ bool is_lazily_parsed() const { return is_lazily_parsed_; } |
+ bool ShouldEagerCompile() const; |
+ void set_should_eager_compile(); |
+ |
void SetScriptScopeInfo(Handle<ScopeInfo> scope_info) { |
DCHECK(is_script_scope()); |
DCHECK(scope_info_.is_null()); |
@@ -839,6 +824,8 @@ class DeclarationScope : public Scope { |
bool has_arguments_parameter_ : 1; |
// This scope uses "super" property ('super.foo'). |
bool scope_uses_super_property_ : 1; |
+ bool should_eager_compile_ : 1; |
+ bool is_lazily_parsed_ : 1; |
// Parameter list in source order. |
ZoneList<Variable*> params_; |