| Index: test/cctest/test-spaces.cc
 | 
| diff --git a/test/cctest/test-spaces.cc b/test/cctest/test-spaces.cc
 | 
| index de0c41e2b83dfb9e32e46ebe7f72aedc8d2807cd..0f22ce1a9bafd468e90b3485cafaf1dd0c91e9d5 100644
 | 
| --- a/test/cctest/test-spaces.cc
 | 
| +++ b/test/cctest/test-spaces.cc
 | 
| @@ -91,46 +91,74 @@ TEST(Page) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +namespace v8 {
 | 
| +namespace internal {
 | 
| +
 | 
| +// Temporarily sets a given allocator in an isolate.
 | 
| +class TestMemoryAllocatorScope {
 | 
| + public:
 | 
| +  TestMemoryAllocatorScope(Isolate* isolate, MemoryAllocator* allocator)
 | 
| +      : isolate_(isolate),
 | 
| +        old_allocator_(isolate->memory_allocator_) {
 | 
| +    isolate->memory_allocator_ = allocator;
 | 
| +  }
 | 
| +
 | 
| +  ~TestMemoryAllocatorScope() {
 | 
| +    isolate_->memory_allocator_ = old_allocator_;
 | 
| +  }
 | 
| +
 | 
| + private:
 | 
| +  Isolate* isolate_;
 | 
| +  MemoryAllocator* old_allocator_;
 | 
| +
 | 
| +  DISALLOW_COPY_AND_ASSIGN(TestMemoryAllocatorScope);
 | 
| +};
 | 
| +
 | 
| +} }  // namespace v8::internal
 | 
| +
 | 
| +
 | 
|  TEST(MemoryAllocator) {
 | 
|    OS::Setup();
 | 
|    Isolate* isolate = Isolate::Current();
 | 
| -  CHECK(HEAP->ConfigureHeapDefault());
 | 
| -  CHECK(isolate->memory_allocator()->Setup(HEAP->MaxReserved(),
 | 
| -                                           HEAP->MaxExecutableSize()));
 | 
| -
 | 
| -  OldSpace faked_space(HEAP,
 | 
| -                       HEAP->MaxReserved(),
 | 
| +  isolate->InitializeLoggingAndCounters();
 | 
| +  Heap* heap = isolate->heap();
 | 
| +  CHECK(heap->ConfigureHeapDefault());
 | 
| +  MemoryAllocator* memory_allocator = new MemoryAllocator(isolate);
 | 
| +  CHECK(memory_allocator->Setup(heap->MaxReserved(),
 | 
| +                                heap->MaxExecutableSize()));
 | 
| +  TestMemoryAllocatorScope test_scope(isolate, memory_allocator);
 | 
| +
 | 
| +  OldSpace faked_space(heap,
 | 
| +                       heap->MaxReserved(),
 | 
|                         OLD_POINTER_SPACE,
 | 
|                         NOT_EXECUTABLE);
 | 
|    int total_pages = 0;
 | 
|    int requested = MemoryAllocator::kPagesPerChunk;
 | 
|    int allocated;
 | 
|    // If we request n pages, we should get n or n - 1.
 | 
| -  Page* first_page =
 | 
| -      isolate->memory_allocator()->AllocatePages(
 | 
| -          requested, &allocated, &faked_space);
 | 
| +  Page* first_page = memory_allocator->AllocatePages(
 | 
| +      requested, &allocated, &faked_space);
 | 
|    CHECK(first_page->is_valid());
 | 
|    CHECK(allocated == requested || allocated == requested - 1);
 | 
|    total_pages += allocated;
 | 
|  
 | 
|    Page* last_page = first_page;
 | 
|    for (Page* p = first_page; p->is_valid(); p = p->next_page()) {
 | 
| -    CHECK(isolate->memory_allocator()->IsPageInSpace(p, &faked_space));
 | 
| +    CHECK(memory_allocator->IsPageInSpace(p, &faked_space));
 | 
|      last_page = p;
 | 
|    }
 | 
|  
 | 
|    // Again, we should get n or n - 1 pages.
 | 
| -  Page* others =
 | 
| -      isolate->memory_allocator()->AllocatePages(
 | 
| -          requested, &allocated, &faked_space);
 | 
| +  Page* others = memory_allocator->AllocatePages(
 | 
| +      requested, &allocated, &faked_space);
 | 
|    CHECK(others->is_valid());
 | 
|    CHECK(allocated == requested || allocated == requested - 1);
 | 
|    total_pages += allocated;
 | 
|  
 | 
| -  isolate->memory_allocator()->SetNextPage(last_page, others);
 | 
| +  memory_allocator->SetNextPage(last_page, others);
 | 
|    int page_count = 0;
 | 
|    for (Page* p = first_page; p->is_valid(); p = p->next_page()) {
 | 
| -    CHECK(isolate->memory_allocator()->IsPageInSpace(p, &faked_space));
 | 
| +    CHECK(memory_allocator->IsPageInSpace(p, &faked_space));
 | 
|      page_count++;
 | 
|    }
 | 
|    CHECK(total_pages == page_count);
 | 
| @@ -141,34 +169,39 @@ TEST(MemoryAllocator) {
 | 
|    // Freeing pages at the first chunk starting at or after the second page
 | 
|    // should free the entire second chunk.  It will return the page it was passed
 | 
|    // (since the second page was in the first chunk).
 | 
| -  Page* free_return = isolate->memory_allocator()->FreePages(second_page);
 | 
| +  Page* free_return = memory_allocator->FreePages(second_page);
 | 
|    CHECK(free_return == second_page);
 | 
| -  isolate->memory_allocator()->SetNextPage(first_page, free_return);
 | 
| +  memory_allocator->SetNextPage(first_page, free_return);
 | 
|  
 | 
|    // Freeing pages in the first chunk starting at the first page should free
 | 
|    // the first chunk and return an invalid page.
 | 
| -  Page* invalid_page = isolate->memory_allocator()->FreePages(first_page);
 | 
| +  Page* invalid_page = memory_allocator->FreePages(first_page);
 | 
|    CHECK(!invalid_page->is_valid());
 | 
|  
 | 
| -  isolate->memory_allocator()->TearDown();
 | 
| +  memory_allocator->TearDown();
 | 
| +  delete memory_allocator;
 | 
|  }
 | 
|  
 | 
|  
 | 
|  TEST(NewSpace) {
 | 
|    OS::Setup();
 | 
| -  CHECK(HEAP->ConfigureHeapDefault());
 | 
| -  CHECK(Isolate::Current()->memory_allocator()->Setup(
 | 
| -      HEAP->MaxReserved(), HEAP->MaxExecutableSize()));
 | 
| +  Isolate* isolate = Isolate::Current();
 | 
| +  isolate->InitializeLoggingAndCounters();
 | 
| +  Heap* heap = isolate->heap();
 | 
| +  CHECK(heap->ConfigureHeapDefault());
 | 
| +  MemoryAllocator* memory_allocator = new MemoryAllocator(isolate);
 | 
| +  CHECK(memory_allocator->Setup(heap->MaxReserved(),
 | 
| +                                heap->MaxExecutableSize()));
 | 
| +  TestMemoryAllocatorScope test_scope(isolate, memory_allocator);
 | 
|  
 | 
| -  NewSpace new_space(HEAP);
 | 
| +  NewSpace new_space(heap);
 | 
|  
 | 
|    void* chunk =
 | 
| -      Isolate::Current()->memory_allocator()->ReserveInitialChunk(
 | 
| -          4 * HEAP->ReservedSemiSpaceSize());
 | 
| +      memory_allocator->ReserveInitialChunk(4 * heap->ReservedSemiSpaceSize());
 | 
|    CHECK(chunk != NULL);
 | 
|    Address start = RoundUp(static_cast<Address>(chunk),
 | 
| -                          2 * HEAP->ReservedSemiSpaceSize());
 | 
| -  CHECK(new_space.Setup(start, 2 * HEAP->ReservedSemiSpaceSize()));
 | 
| +                          2 * heap->ReservedSemiSpaceSize());
 | 
| +  CHECK(new_space.Setup(start, 2 * heap->ReservedSemiSpaceSize()));
 | 
|    CHECK(new_space.HasBeenSetup());
 | 
|  
 | 
|    while (new_space.Available() >= Page::kMaxHeapObjectSize) {
 | 
| @@ -178,28 +211,33 @@ TEST(NewSpace) {
 | 
|    }
 | 
|  
 | 
|    new_space.TearDown();
 | 
| -  Isolate::Current()->memory_allocator()->TearDown();
 | 
| +  memory_allocator->TearDown();
 | 
| +  delete memory_allocator;
 | 
|  }
 | 
|  
 | 
|  
 | 
|  TEST(OldSpace) {
 | 
|    OS::Setup();
 | 
| -  CHECK(HEAP->ConfigureHeapDefault());
 | 
| -  CHECK(Isolate::Current()->memory_allocator()->Setup(
 | 
| -      HEAP->MaxReserved(), HEAP->MaxExecutableSize()));
 | 
| -
 | 
| -  OldSpace* s = new OldSpace(HEAP,
 | 
| -                             HEAP->MaxOldGenerationSize(),
 | 
| +  Isolate* isolate = Isolate::Current();
 | 
| +  isolate->InitializeLoggingAndCounters();
 | 
| +  Heap* heap = isolate->heap();
 | 
| +  CHECK(heap->ConfigureHeapDefault());
 | 
| +  MemoryAllocator* memory_allocator = new MemoryAllocator(isolate);
 | 
| +  CHECK(memory_allocator->Setup(heap->MaxReserved(),
 | 
| +                                heap->MaxExecutableSize()));
 | 
| +  TestMemoryAllocatorScope test_scope(isolate, memory_allocator);
 | 
| +
 | 
| +  OldSpace* s = new OldSpace(heap,
 | 
| +                             heap->MaxOldGenerationSize(),
 | 
|                               OLD_POINTER_SPACE,
 | 
|                               NOT_EXECUTABLE);
 | 
|    CHECK(s != NULL);
 | 
|  
 | 
| -  void* chunk =
 | 
| -      Isolate::Current()->memory_allocator()->ReserveInitialChunk(
 | 
| -          4 * HEAP->ReservedSemiSpaceSize());
 | 
| +  void* chunk = memory_allocator->ReserveInitialChunk(
 | 
| +      4 * heap->ReservedSemiSpaceSize());
 | 
|    CHECK(chunk != NULL);
 | 
|    Address start = static_cast<Address>(chunk);
 | 
| -  size_t size = RoundUp(start, 2 * HEAP->ReservedSemiSpaceSize()) - start;
 | 
| +  size_t size = RoundUp(start, 2 * heap->ReservedSemiSpaceSize()) - start;
 | 
|  
 | 
|    CHECK(s->Setup(start, size));
 | 
|  
 | 
| @@ -209,13 +247,13 @@ TEST(OldSpace) {
 | 
|  
 | 
|    s->TearDown();
 | 
|    delete s;
 | 
| -  Isolate::Current()->memory_allocator()->TearDown();
 | 
| +  memory_allocator->TearDown();
 | 
| +  delete memory_allocator;
 | 
|  }
 | 
|  
 | 
|  
 | 
|  TEST(LargeObjectSpace) {
 | 
| -  OS::Setup();
 | 
| -  CHECK(HEAP->Setup(false));
 | 
| +  v8::V8::Initialize();
 | 
|  
 | 
|    LargeObjectSpace* lo = HEAP->lo_space();
 | 
|    CHECK(lo != NULL);
 | 
| @@ -247,9 +285,4 @@ TEST(LargeObjectSpace) {
 | 
|    CHECK(!lo->IsEmpty());
 | 
|  
 | 
|    CHECK(lo->AllocateRaw(lo_size)->IsFailure());
 | 
| -
 | 
| -  lo->TearDown();
 | 
| -  delete lo;
 | 
| -
 | 
| -  Isolate::Current()->memory_allocator()->TearDown();
 | 
|  }
 | 
| 
 |