| Index: src/full-codegen.cc
|
| diff --git a/src/full-codegen.cc b/src/full-codegen.cc
|
| index 1a60f33d8f1736f59c37776b5f1eb124e2ea6e76..0c82eb3d82b0186c5f061273b351836742d1da7b 100644
|
| --- a/src/full-codegen.cc
|
| +++ b/src/full-codegen.cc
|
| @@ -1052,7 +1052,9 @@ void FullCodeGenerator::VisitBlock(Block* stmt) {
|
|
|
| Scope* saved_scope = scope();
|
| // Push a block context when entering a block with block scoped variables.
|
| - if (stmt->scope() != NULL) {
|
| + if (stmt->scope() == NULL) {
|
| + PrepareForBailoutForId(stmt->EntryId(), NO_REGISTERS);
|
| + } else {
|
| scope_ = stmt->scope();
|
| ASSERT(!scope_->is_module_scope());
|
| { Comment cmnt(masm_, "[ Extend block context");
|
| @@ -1063,17 +1065,17 @@ void FullCodeGenerator::VisitBlock(Block* stmt) {
|
| // Replace the context stored in the frame.
|
| StoreToFrameField(StandardFrameConstants::kContextOffset,
|
| context_register());
|
| + PrepareForBailoutForId(stmt->EntryId(), NO_REGISTERS);
|
| }
|
| { Comment cmnt(masm_, "[ Declarations");
|
| VisitDeclarations(scope_->declarations());
|
| + PrepareForBailoutForId(stmt->DeclsId(), NO_REGISTERS);
|
| }
|
| }
|
|
|
| - PrepareForBailoutForId(stmt->EntryId(), NO_REGISTERS);
|
| VisitStatements(stmt->statements());
|
| scope_ = saved_scope;
|
| __ bind(nested_block.break_label());
|
| - PrepareForBailoutForId(stmt->ExitId(), NO_REGISTERS);
|
|
|
| // Pop block context if necessary.
|
| if (stmt->scope() != NULL) {
|
| @@ -1082,6 +1084,7 @@ void FullCodeGenerator::VisitBlock(Block* stmt) {
|
| StoreToFrameField(StandardFrameConstants::kContextOffset,
|
| context_register());
|
| }
|
| + PrepareForBailoutForId(stmt->ExitId(), NO_REGISTERS);
|
| }
|
|
|
|
|
|
|