Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index bd45f9d54ade55aaaff721e6be2d1c70b4577713..184f0a2a27efd2c7104c67dcfa63469b1f71ed84 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -412,14 +412,6 @@ Scope* Parser::NewScope(Scope* parent, Scope::Type type, bool inside_with) { |
} |
-Scope* Parser::DeclarationScope() { |
- Scope* scope = top_scope_; |
- while (scope->is_catch_scope()) { |
- scope = scope->outer_scope(); |
- } |
- return scope; |
-} |
- |
// ---------------------------------------------------------------------------- |
// Target is a support class to facilitate manipulation of the |
// Parser's target_stack_ (the stack of potential 'break' and |
@@ -1310,7 +1302,7 @@ VariableProxy* Parser::Declare(Handle<String> name, |
// to the calling function context. |
// Similarly, strict mode eval scope does not leak variable declarations to |
// the caller's scope so we declare all locals, too. |
- Scope* declaration_scope = DeclarationScope(); |
+ Scope* declaration_scope = top_scope_->DeclarationScope(); |
if (declaration_scope->is_function_scope() || |
declaration_scope->is_strict_mode_eval_scope()) { |
// Declare the variable in the function scope. |
@@ -1421,7 +1413,7 @@ Statement* Parser::ParseNativeDeclaration(bool* ok) { |
// isn't lazily compiled. The extension structures are only |
// accessible while parsing the first time not when reparsing |
// because of lazy compilation. |
- DeclarationScope()->ForceEagerCompilation(); |
+ top_scope_->DeclarationScope()->ForceEagerCompilation(); |
// Compute the function template for the native function. |
v8::Handle<v8::FunctionTemplate> fun_template = |
@@ -1525,7 +1517,7 @@ Block* Parser::ParseVariableDeclarations(bool accept_IN, |
Variable::Mode mode = Variable::VAR; |
bool is_const = false; |
- Scope* declaration_scope = DeclarationScope(); |
+ Scope* declaration_scope = top_scope_->DeclarationScope(); |
if (peek() == Token::VAR) { |
Consume(Token::VAR); |
} else if (peek() == Token::CONST) { |
@@ -1915,7 +1907,7 @@ Statement* Parser::ParseReturnStatement(bool* ok) { |
// function. See ECMA-262, section 12.9, page 67. |
// |
// To be consistent with KJS we report the syntax error at runtime. |
- Scope* declaration_scope = DeclarationScope(); |
+ Scope* declaration_scope = top_scope_->DeclarationScope(); |
if (declaration_scope->is_global_scope() || |
declaration_scope->is_eval_scope()) { |
Handle<String> type = isolate()->factory()->illegal_return_symbol(); |
@@ -1944,7 +1936,7 @@ Block* Parser::WithHelper(Expression* obj, ZoneStringList* labels, bool* ok) { |
Statement* stat; |
{ Target target(&this->target_stack_, &collector); |
with_nesting_level_++; |
- DeclarationScope()->RecordWithStatement(); |
+ top_scope_->DeclarationScope()->RecordWithStatement(); |
stat = ParseStatement(labels, CHECK_OK); |
with_nesting_level_--; |
} |
@@ -3802,7 +3794,7 @@ Expression* Parser::ParseV8Intrinsic(bool* ok) { |
if (extension_ != NULL) { |
// The extension structures are only accessible while parsing the |
// very first time not when reparsing because of lazy compilation. |
- DeclarationScope()->ForceEagerCompilation(); |
+ top_scope_->DeclarationScope()->ForceEagerCompilation(); |
} |
const Runtime::Function* function = Runtime::FunctionForSymbol(name); |