| Index: src/scopeinfo.cc | 
| diff --git a/src/scopeinfo.cc b/src/scopeinfo.cc | 
| index 47b541ea460543d72218ddb8da1cbbc423b64e23..8ea5f1e734151684828637ea1138dbc8250bbe34 100644 | 
| --- a/src/scopeinfo.cc | 
| +++ b/src/scopeinfo.cc | 
| @@ -139,7 +139,7 @@ ScopeInfo<Allocator>::ScopeInfo(Scope* scope) | 
| ASSERT(proxy->var()->index() - Context::MIN_CONTEXT_SLOTS == | 
| context_modes_.length()); | 
| context_slots_.Add(FACTORY->empty_symbol()); | 
| -      context_modes_.Add(INTERNAL); | 
| +      context_modes_.Add(proxy->var()->mode()); | 
| } | 
| } | 
| } | 
| @@ -540,16 +540,24 @@ int SerializedScopeInfo::ParameterIndex(String* name) { | 
| } | 
|  | 
|  | 
| -int SerializedScopeInfo::FunctionContextSlotIndex(String* name) { | 
| +int SerializedScopeInfo::FunctionContextSlotIndex(String* name, | 
| +                                                  VariableMode* mode) { | 
| ASSERT(name->IsSymbol()); | 
| if (length() > 0) { | 
| Object** p = data_start(); | 
| if (*p == name) { | 
| p = ContextEntriesAddr(); | 
| int number_of_context_slots; | 
| -      ReadInt(p, &number_of_context_slots); | 
| +      p = ReadInt(p, &number_of_context_slots); | 
| ASSERT(number_of_context_slots != 0); | 
| // The function context slot is the last entry. | 
| +      if (mode != NULL) { | 
| +        // Seek to context slot entry. | 
| +        p += (number_of_context_slots - 1) * 2; | 
| +        // Seek to mode. | 
| +        ++p; | 
| +        ReadInt(p, mode); | 
| +      } | 
| return number_of_context_slots + Context::MIN_CONTEXT_SLOTS - 1; | 
| } | 
| } | 
|  |