| Index: src/scopes.cc
 | 
| ===================================================================
 | 
| --- src/scopes.cc	(revision 7267)
 | 
| +++ src/scopes.cc	(working copy)
 | 
| @@ -40,12 +40,14 @@
 | 
|  // ----------------------------------------------------------------------------
 | 
|  // A Zone allocator for use with LocalsMap.
 | 
|  
 | 
| +// TODO(isolates): It is probably worth it to change the Allocator class to
 | 
| +//                 take a pointer to an isolate.
 | 
|  class ZoneAllocator: public Allocator {
 | 
|   public:
 | 
|    /* nothing to do */
 | 
|    virtual ~ZoneAllocator()  {}
 | 
|  
 | 
| -  virtual void* New(size_t size)  { return Zone::New(static_cast<int>(size)); }
 | 
| +  virtual void* New(size_t size)  { return ZONE->New(static_cast<int>(size)); }
 | 
|  
 | 
|    /* ignored - Zone is freed in one fell swoop */
 | 
|    virtual void Delete(void* p)  {}
 | 
| @@ -159,16 +161,19 @@
 | 
|    // This scope's arguments shadow (if present) is context-allocated if an inner
 | 
|    // scope accesses this one's parameters.  Allocate the arguments_shadow_
 | 
|    // variable if necessary.
 | 
| +  Isolate* isolate = Isolate::Current();
 | 
|    Variable::Mode mode;
 | 
|    int arguments_shadow_index =
 | 
| -      scope_info_->ContextSlotIndex(Heap::arguments_shadow_symbol(), &mode);
 | 
| +      scope_info_->ContextSlotIndex(
 | 
| +          isolate->heap()->arguments_shadow_symbol(), &mode);
 | 
|    if (arguments_shadow_index >= 0) {
 | 
|      ASSERT(mode == Variable::INTERNAL);
 | 
| -    arguments_shadow_ = new Variable(this,
 | 
| -                                     Factory::arguments_shadow_symbol(),
 | 
| -                                     Variable::INTERNAL,
 | 
| -                                     true,
 | 
| -                                     Variable::ARGUMENTS);
 | 
| +    arguments_shadow_ = new Variable(
 | 
| +        this,
 | 
| +        isolate->factory()->arguments_shadow_symbol(),
 | 
| +        Variable::INTERNAL,
 | 
| +        true,
 | 
| +        Variable::ARGUMENTS);
 | 
|      arguments_shadow_->set_rewrite(
 | 
|          new Slot(arguments_shadow_, Slot::CONTEXT, arguments_shadow_index));
 | 
|      arguments_shadow_->set_is_used(true);
 | 
| @@ -213,7 +218,7 @@
 | 
|    top->AllocateVariables(info->calling_context());
 | 
|  
 | 
|  #ifdef DEBUG
 | 
| -  if (Bootstrapper::IsActive()
 | 
| +  if (info->isolate()->bootstrapper()->IsActive()
 | 
|            ? FLAG_print_builtin_scopes
 | 
|            : FLAG_print_scopes) {
 | 
|      info->function()->scope()->Print();
 | 
| @@ -245,7 +250,7 @@
 | 
|    // such parameter is 'this' which is passed on the stack when
 | 
|    // invoking scripts
 | 
|    Variable* var =
 | 
| -      variables_.Declare(this, Factory::this_symbol(), Variable::VAR,
 | 
| +      variables_.Declare(this, FACTORY->this_symbol(), Variable::VAR,
 | 
|                           false, Variable::THIS);
 | 
|    var->set_rewrite(new Slot(var, Slot::PARAMETER, -1));
 | 
|    receiver_ = var;
 | 
| @@ -254,7 +259,7 @@
 | 
|      // Declare 'arguments' variable which exists in all functions.
 | 
|      // Note that it might never be accessed, in which case it won't be
 | 
|      // allocated during variable allocation.
 | 
| -    variables_.Declare(this, Factory::arguments_symbol(), Variable::VAR,
 | 
| +    variables_.Declare(this, FACTORY->arguments_symbol(), Variable::VAR,
 | 
|                         true, Variable::ARGUMENTS);
 | 
|    }
 | 
|  }
 | 
| @@ -269,7 +274,7 @@
 | 
|  
 | 
|    // We should never lookup 'arguments' in this scope
 | 
|    // as it is implicitly present in any scope.
 | 
| -  ASSERT(*name != *Factory::arguments_symbol());
 | 
| +  ASSERT(*name != *FACTORY->arguments_symbol());
 | 
|  
 | 
|    // Assert that there is no local slot with the given name.
 | 
|    ASSERT(scope_info_->StackSlotIndex(*name) < 0);
 | 
| @@ -868,7 +873,7 @@
 | 
|  
 | 
|  bool Scope::HasArgumentsParameter() {
 | 
|    for (int i = 0; i < params_.length(); i++) {
 | 
| -    if (params_[i]->name().is_identical_to(Factory::arguments_symbol()))
 | 
| +    if (params_[i]->name().is_identical_to(FACTORY->arguments_symbol()))
 | 
|        return true;
 | 
|    }
 | 
|    return false;
 | 
| @@ -887,7 +892,7 @@
 | 
|  
 | 
|  void Scope::AllocateParameterLocals() {
 | 
|    ASSERT(is_function_scope());
 | 
| -  Variable* arguments = LocalLookup(Factory::arguments_symbol());
 | 
| +  Variable* arguments = LocalLookup(FACTORY->arguments_symbol());
 | 
|    ASSERT(arguments != NULL);  // functions have 'arguments' declared implicitly
 | 
|  
 | 
|    // Parameters are rewritten to arguments[i] if 'arguments' is used in
 | 
| @@ -942,7 +947,7 @@
 | 
|      // variable may be allocated in the heap-allocated context (temporaries
 | 
|      // are never allocated in the context).
 | 
|      arguments_shadow_ = new Variable(this,
 | 
| -                                     Factory::arguments_shadow_symbol(),
 | 
| +                                     FACTORY->arguments_shadow_symbol(),
 | 
|                                       Variable::INTERNAL,
 | 
|                                       true,
 | 
|                                       Variable::ARGUMENTS);
 | 
| @@ -1008,7 +1013,7 @@
 | 
|  void Scope::AllocateNonParameterLocal(Variable* var) {
 | 
|    ASSERT(var->scope() == this);
 | 
|    ASSERT(var->rewrite() == NULL ||
 | 
| -         (!var->IsVariable(Factory::result_symbol())) ||
 | 
| +         (!var->IsVariable(FACTORY->result_symbol())) ||
 | 
|           (var->AsSlot() == NULL || var->AsSlot()->type() != Slot::LOCAL));
 | 
|    if (var->rewrite() == NULL && MustAllocate(var)) {
 | 
|      if (MustAllocateInContext(var)) {
 | 
| 
 |