 Chromium Code Reviews
 Chromium Code Reviews Issue 7792100:
  Simplfy handling of exits from scoped blocks.  (Closed) 
  Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
    
  
    Issue 7792100:
  Simplfy handling of exits from scoped blocks.  (Closed) 
  Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge| Index: src/parser.cc | 
| diff --git a/src/parser.cc b/src/parser.cc | 
| index abd06591c4057e6c91e130ccee7f7d43821544da..4371093e8669768686fd80418b886b35f6fa4494 100644 | 
| --- a/src/parser.cc | 
| +++ b/src/parser.cc | 
| @@ -1587,19 +1587,11 @@ Block* Parser::ParseScopedBlock(ZoneStringList* labels, bool* ok) { | 
| body->set_block_scope(block_scope); | 
| if (block_scope != NULL) { | 
| - // Create exit block. | 
| - Block* exit = new(zone()) Block(isolate(), NULL, 1, false); | 
| + // Rewrite the block { B } to a block: { { B } ExitContext; } | 
| + Block* exit = new(zone()) Block(isolate(), NULL, 2, false); | 
| + exit->AddStatement(body); | 
| exit->AddStatement(new(zone()) ExitContextStatement()); | 
| 
Kevin Millikin (Chromium)
2011/09/02 15:17:44
Now we're no longer making essential use of ExitCo
 
Steven
2011/09/05 08:54:50
Will do it.
On 2011/09/02 15:17:44, Kevin Millikin
 | 
| - | 
| - // 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; | 
| + return exit; | 
| } else { | 
| return body; | 
| } |