| Index: src/scopes.cc
 | 
| ===================================================================
 | 
| --- src/scopes.cc	(revision 1937)
 | 
| +++ src/scopes.cc	(working copy)
 | 
| @@ -112,9 +112,7 @@
 | 
|      locals_(false),
 | 
|      temps_(0),
 | 
|      params_(0),
 | 
| -    dynamics_(false),
 | 
| -    dynamics_local_(false),
 | 
| -    dynamics_global_(false),
 | 
| +    dynamics_(NULL),
 | 
|      unresolved_(0),
 | 
|      decls_(0) {
 | 
|  }
 | 
| @@ -125,9 +123,9 @@
 | 
|      inner_scopes_(4),
 | 
|      type_(type),
 | 
|      scope_name_(Factory::empty_symbol()),
 | 
| -    locals_(),
 | 
|      temps_(4),
 | 
|      params_(4),
 | 
| +    dynamics_(NULL),
 | 
|      unresolved_(16),
 | 
|      decls_(4),
 | 
|      receiver_(NULL),
 | 
| @@ -477,9 +475,11 @@
 | 
|    PrintMap(&printer, n1, &locals_);
 | 
|  
 | 
|    Indent(n1, "// dynamic vars\n");
 | 
| -  PrintMap(&printer, n1, &dynamics_);
 | 
| -  PrintMap(&printer, n1, &dynamics_local_);
 | 
| -  PrintMap(&printer, n1, &dynamics_global_);
 | 
| +  if (dynamics_ != NULL) {
 | 
| +    PrintMap(&printer, n1, dynamics_->GetMap(Variable::DYNAMIC));
 | 
| +    PrintMap(&printer, n1, dynamics_->GetMap(Variable::DYNAMIC_LOCAL));
 | 
| +    PrintMap(&printer, n1, dynamics_->GetMap(Variable::DYNAMIC_GLOBAL));
 | 
| +  }
 | 
|  
 | 
|    // Print inner scopes (disable by providing negative n).
 | 
|    if (n >= 0) {
 | 
| @@ -495,23 +495,8 @@
 | 
|  
 | 
|  
 | 
|  Variable* Scope::NonLocal(Handle<String> name, Variable::Mode mode) {
 | 
| -  // Space optimization: reuse existing non-local with the same name
 | 
| -  // and mode.
 | 
| -  LocalsMap* map = NULL;
 | 
| -  switch (mode) {
 | 
| -    case Variable::DYNAMIC:
 | 
| -      map = &dynamics_;
 | 
| -      break;
 | 
| -    case Variable::DYNAMIC_LOCAL:
 | 
| -      map = &dynamics_local_;
 | 
| -      break;
 | 
| -    case Variable::DYNAMIC_GLOBAL:
 | 
| -      map = &dynamics_global_;
 | 
| -      break;
 | 
| -    default:
 | 
| -      UNREACHABLE();
 | 
| -      break;
 | 
| -  }
 | 
| +  if (dynamics_ == NULL) dynamics_ = new DynamicScopePart();
 | 
| +  LocalsMap* map = dynamics_->GetMap(mode);
 | 
|    Variable* var = map->Lookup(name);
 | 
|    if (var == NULL) {
 | 
|      // Declare a new non-local.
 | 
| 
 |