| Index: src/scopes.cc | 
| diff --git a/src/scopes.cc b/src/scopes.cc | 
| index 4ac9d0e6a463047319ef43317ebd6551b798e110..77e644b25c046e369f3fa4d0133026f594ec008d 100644 | 
| --- a/src/scopes.cc | 
| +++ b/src/scopes.cc | 
| @@ -190,6 +190,7 @@ void Scope::SetDefaults(ScopeType type, | 
| illegal_redecl_ = NULL; | 
| scope_inside_with_ = false; | 
| scope_contains_with_ = false; | 
| +  scope_inside_generator_ = false; | 
| scope_calls_eval_ = false; | 
| // Inherit the strict mode from the parent scope. | 
| language_mode_ = (outer_scope != NULL) | 
| @@ -248,6 +249,25 @@ Scope* Scope::DeserializeScopeChain(Context* context, Scope* global_scope, | 
| FUNCTION_SCOPE, | 
| Handle<ScopeInfo>(scope_info), | 
| zone); | 
| +      if (context->closure()->shared()->is_generator()) { | 
| +        if (innermost_scope) { | 
| +          // Find the deepest scope that's still in this function. | 
| +          Scope *inner_scope = innermost_scope; | 
| +          for (Scope *s = innermost_scope; | 
| +               s != current_scope; | 
| +               s = s->outer_scope()) { | 
| +            inner_scope = s; | 
| +            while (!s->is_function_scope()) | 
| +              s = s->outer_scope(); | 
| +          } | 
| +          // Mark intervening scopes (inclusive) as being inside a generator. | 
| +          while (inner_scope != current_scope) { | 
| +            inner_scope->scope_inside_generator_ = true; | 
| +            inner_scope = inner_scope->outer_scope(); | 
| +          } | 
| +        } | 
| +        current_scope->scope_inside_generator_ = true; | 
| +      } | 
| } else if (context->IsBlockContext()) { | 
| ScopeInfo* scope_info = ScopeInfo::cast(context->extension()); | 
| current_scope = new(zone) Scope(current_scope, | 
| @@ -320,6 +340,7 @@ void Scope::Initialize() { | 
| if (outer_scope_ != NULL) { | 
| outer_scope_->inner_scopes_.Add(this, zone()); | 
| scope_inside_with_ = outer_scope_->scope_inside_with_ || is_with_scope(); | 
| +    scope_inside_generator_ = outer_scope_->inside_generator(); | 
| } else { | 
| scope_inside_with_ = is_with_scope(); | 
| } | 
|  |