| Index: src/scopes.cc | 
| diff --git a/src/scopes.cc b/src/scopes.cc | 
| index e05ca172518cdf8cdc7abf4eb9ef697673bd1c9e..9092499ee907b0f006d4ccf31e965c5684343674 100644 | 
| --- a/src/scopes.cc | 
| +++ b/src/scopes.cc | 
| @@ -148,6 +148,7 @@ Scope::Scope(Scope* inner_scope, | 
| SetDefaults(type, NULL, scope_info); | 
| if (!scope_info.is_null()) { | 
| num_heap_slots_ = scope_info_->ContextLength(); | 
| +    stack_slots_depth_ = scope_info_->StackSlotsDepth(); | 
| if (*scope_info != ScopeInfo::Empty()) { | 
| language_mode_ = scope_info->language_mode(); | 
| } | 
| @@ -207,6 +208,7 @@ void Scope::SetDefaults(ScopeType type, | 
| scope_info_ = scope_info; | 
| start_position_ = RelocInfo::kNoPosition; | 
| end_position_ = RelocInfo::kNoPosition; | 
| +  stack_slots_depth_ = 0; | 
| if (!scope_info.is_null()) { | 
| scope_calls_eval_ = scope_info->CallsEval(); | 
| language_mode_ = scope_info->language_mode(); | 
| @@ -1007,8 +1009,7 @@ bool Scope::MustAllocate(Variable* var) { | 
| scope_calls_eval_ || | 
| inner_scope_calls_eval_ || | 
| scope_contains_with_ || | 
| -       is_catch_scope() || | 
| -       is_block_scope())) { | 
| +       is_catch_scope())) { | 
| var->set_is_used(true); | 
| } | 
| // Global variables do not need to be allocated. | 
| @@ -1025,7 +1026,7 @@ bool Scope::MustAllocateInContext(Variable* var) { | 
| // Exceptions: temporary variables are never allocated in a context; | 
| // catch-bound variables are always allocated in a context. | 
| if (var->mode() == TEMPORARY) return false; | 
| -  if (is_catch_scope() || is_block_scope()) return true; | 
| +  if (is_catch_scope()) return true; | 
| return var->has_forced_context_allocation() || | 
| scope_calls_eval_ || | 
| inner_scope_calls_eval_ || | 
|  |