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); |
} |