| Index: src/parser.cc | 
| diff --git a/src/parser.cc b/src/parser.cc | 
| index d685b8a34453d4e470f5df9737e0d456b5f19fe3..a863165b015ac78d883a88f5ffc5bfab5e727e51 100644 | 
| --- a/src/parser.cc | 
| +++ b/src/parser.cc | 
| @@ -1559,9 +1559,6 @@ Block* Parser::ParseScopedBlock(ZoneStringList* labels, bool* ok) { | 
| Scope* block_scope = NewScope(top_scope_, | 
| Scope::BLOCK_SCOPE, | 
| inside_with()); | 
| -  body->set_block_scope(block_scope); | 
| -  block_scope->DeclareLocal(isolate()->factory()->block_scope_symbol(), | 
| -                            Variable::VAR); | 
| if (top_scope_->is_strict_mode()) { | 
| block_scope->EnableStrictMode(); | 
| } | 
| @@ -1584,21 +1581,28 @@ Block* Parser::ParseScopedBlock(ZoneStringList* labels, bool* ok) { | 
| } | 
| } | 
| Expect(Token::RBRACE, CHECK_OK); | 
| +  top_scope_ = saved_scope; | 
|  | 
| -  // Create exit block. | 
| -  Block* exit = new(zone()) Block(isolate(), NULL, 1, false); | 
| -  exit->AddStatement(new(zone()) ExitContextStatement()); | 
| +  block_scope = block_scope->FinalizeBlockScope(); | 
| +  body->set_block_scope(block_scope); | 
|  | 
| -  // Create a try-finally statement. | 
| -  TryFinallyStatement* try_finally = | 
| -      new(zone()) TryFinallyStatement(body, exit); | 
| -  try_finally->set_escaping_targets(collector.targets()); | 
| -  top_scope_ = saved_scope; | 
| +  if (block_scope != NULL) { | 
| +    // Create exit block. | 
| +    Block* exit = new(zone()) Block(isolate(), NULL, 1, false); | 
| +    exit->AddStatement(new(zone()) ExitContextStatement()); | 
|  | 
| -  // Create a result block. | 
| -  Block* result = new(zone()) Block(isolate(), NULL, 1, false); | 
| -  result->AddStatement(try_finally); | 
| -  return result; | 
| +    // Create a try-finally statement. | 
| +    TryFinallyStatement* try_finally = | 
| +        new(zone()) TryFinallyStatement(body, exit); | 
| +    try_finally->set_escaping_targets(collector.targets()); | 
| + | 
| +    // Create a result block. | 
| +    Block* result = new(zone()) Block(isolate(), NULL, 1, false); | 
| +    result->AddStatement(try_finally); | 
| +    return result; | 
| +  } else { | 
| +    return body; | 
| +  } | 
| } | 
|  | 
|  | 
|  |