| Index: test/cctest/test-spaces.cc
|
| ===================================================================
|
| --- test/cctest/test-spaces.cc (revision 7267)
|
| +++ test/cctest/test-spaces.cc (working copy)
|
| @@ -65,6 +65,8 @@
|
| Address page_start = RoundUp(start, Page::kPageSize);
|
|
|
| Page* p = Page::FromAddress(page_start);
|
| + // Initialized Page has heap pointer, normally set by memory_allocator.
|
| + p->heap_ = HEAP;
|
| CHECK(p->address() == page_start);
|
| CHECK(p->is_valid());
|
|
|
| @@ -90,37 +92,45 @@
|
|
|
|
|
| TEST(MemoryAllocator) {
|
| - CHECK(Heap::ConfigureHeapDefault());
|
| - CHECK(MemoryAllocator::Setup(Heap::MaxReserved(), Heap::MaxExecutableSize()));
|
| + OS::Setup();
|
| + Isolate* isolate = Isolate::Current();
|
| + CHECK(HEAP->ConfigureHeapDefault());
|
| + CHECK(isolate->memory_allocator()->Setup(HEAP->MaxReserved(),
|
| + HEAP->MaxExecutableSize()));
|
|
|
| - OldSpace faked_space(Heap::MaxReserved(), OLD_POINTER_SPACE, NOT_EXECUTABLE);
|
| + 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 =
|
| - MemoryAllocator::AllocatePages(requested, &allocated, &faked_space);
|
| + isolate->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(MemoryAllocator::IsPageInSpace(p, &faked_space));
|
| + CHECK(isolate->memory_allocator()->IsPageInSpace(p, &faked_space));
|
| last_page = p;
|
| }
|
|
|
| // Again, we should get n or n - 1 pages.
|
| Page* others =
|
| - MemoryAllocator::AllocatePages(requested, &allocated, &faked_space);
|
| + isolate->memory_allocator()->AllocatePages(
|
| + requested, &allocated, &faked_space);
|
| CHECK(others->is_valid());
|
| CHECK(allocated == requested || allocated == requested - 1);
|
| total_pages += allocated;
|
|
|
| - MemoryAllocator::SetNextPage(last_page, others);
|
| + isolate->memory_allocator()->SetNextPage(last_page, others);
|
| int page_count = 0;
|
| for (Page* p = first_page; p->is_valid(); p = p->next_page()) {
|
| - CHECK(MemoryAllocator::IsPageInSpace(p, &faked_space));
|
| + CHECK(isolate->memory_allocator()->IsPageInSpace(p, &faked_space));
|
| page_count++;
|
| }
|
| CHECK(total_pages == page_count);
|
| @@ -131,31 +141,34 @@
|
| // 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 = MemoryAllocator::FreePages(second_page);
|
| + Page* free_return = isolate->memory_allocator()->FreePages(second_page);
|
| CHECK(free_return == second_page);
|
| - MemoryAllocator::SetNextPage(first_page, free_return);
|
| + isolate->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 = MemoryAllocator::FreePages(first_page);
|
| + Page* invalid_page = isolate->memory_allocator()->FreePages(first_page);
|
| CHECK(!invalid_page->is_valid());
|
|
|
| - MemoryAllocator::TearDown();
|
| + isolate->memory_allocator()->TearDown();
|
| }
|
|
|
|
|
| TEST(NewSpace) {
|
| - CHECK(Heap::ConfigureHeapDefault());
|
| - CHECK(MemoryAllocator::Setup(Heap::MaxReserved(), Heap::MaxExecutableSize()));
|
| + OS::Setup();
|
| + CHECK(HEAP->ConfigureHeapDefault());
|
| + CHECK(Isolate::Current()->memory_allocator()->Setup(
|
| + HEAP->MaxReserved(), HEAP->MaxExecutableSize()));
|
|
|
| - NewSpace new_space;
|
| + NewSpace new_space(HEAP);
|
|
|
| void* chunk =
|
| - MemoryAllocator::ReserveInitialChunk(4 * Heap::ReservedSemiSpaceSize());
|
| + Isolate::Current()->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) {
|
| @@ -165,24 +178,28 @@
|
| }
|
|
|
| new_space.TearDown();
|
| - MemoryAllocator::TearDown();
|
| + Isolate::Current()->memory_allocator()->TearDown();
|
| }
|
|
|
|
|
| TEST(OldSpace) {
|
| - CHECK(Heap::ConfigureHeapDefault());
|
| - CHECK(MemoryAllocator::Setup(Heap::MaxReserved(), Heap::MaxExecutableSize()));
|
| + OS::Setup();
|
| + CHECK(HEAP->ConfigureHeapDefault());
|
| + CHECK(Isolate::Current()->memory_allocator()->Setup(
|
| + HEAP->MaxReserved(), HEAP->MaxExecutableSize()));
|
|
|
| - OldSpace* s = new OldSpace(Heap::MaxOldGenerationSize(),
|
| + OldSpace* s = new OldSpace(HEAP,
|
| + HEAP->MaxOldGenerationSize(),
|
| OLD_POINTER_SPACE,
|
| NOT_EXECUTABLE);
|
| CHECK(s != NULL);
|
|
|
| void* chunk =
|
| - MemoryAllocator::ReserveInitialChunk(4 * Heap::ReservedSemiSpaceSize());
|
| + Isolate::Current()->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));
|
|
|
| @@ -192,14 +209,15 @@
|
|
|
| s->TearDown();
|
| delete s;
|
| - MemoryAllocator::TearDown();
|
| + Isolate::Current()->memory_allocator()->TearDown();
|
| }
|
|
|
|
|
| TEST(LargeObjectSpace) {
|
| - CHECK(Heap::Setup(false));
|
| + OS::Setup();
|
| + CHECK(HEAP->Setup(false));
|
|
|
| - LargeObjectSpace* lo = Heap::lo_space();
|
| + LargeObjectSpace* lo = HEAP->lo_space();
|
| CHECK(lo != NULL);
|
|
|
| Map* faked_map = reinterpret_cast<Map*>(HeapObject::FromAddress(0));
|
| @@ -233,5 +251,5 @@
|
| lo->TearDown();
|
| delete lo;
|
|
|
| - MemoryAllocator::TearDown();
|
| + Isolate::Current()->memory_allocator()->TearDown();
|
| }
|
|
|