| Index: test/cctest/test-mark-compact.cc
|
| diff --git a/test/cctest/test-mark-compact.cc b/test/cctest/test-mark-compact.cc
|
| index 624969f45f09820ee4a22183e77f1431a1619e06..e62bdeb074d57a5bba30ff91873357014c4c2e4f 100644
|
| --- a/test/cctest/test-mark-compact.cc
|
| +++ b/test/cctest/test-mark-compact.cc
|
| @@ -73,33 +73,23 @@ TEST(MarkingDeque) {
|
|
|
|
|
| TEST(Promotion) {
|
| - // This test requires compaction. If compaction is turned off, we
|
| - // skip the entire test.
|
| - if (FLAG_never_compact) return;
|
| -
|
| CcTest::InitializeVM();
|
| -
|
| - // Ensure that we get a compacting collection so that objects are promoted
|
| - // from new space.
|
| - FLAG_gc_global = true;
|
| - FLAG_always_compact = true;
|
| Heap* heap = CcTest::heap();
|
| - heap->ConfigureHeap(2*256*KB, 8*MB, 8*MB);
|
| + heap->ConfigureHeap(2*256*KB, 1*MB, 1*MB);
|
|
|
| v8::HandleScope sc(CcTest::isolate());
|
|
|
| // Allocate a fixed array in the new space.
|
| - int array_size =
|
| + int array_length =
|
| (Page::kMaxNonCodeHeapObjectSize - FixedArray::kHeaderSize) /
|
| - (kPointerSize * 4);
|
| - Object* obj = heap->AllocateFixedArray(array_size)->ToObjectChecked();
|
| -
|
| + (4 * kPointerSize);
|
| + Object* obj = heap->AllocateFixedArray(array_length)->ToObjectChecked();
|
| Handle<FixedArray> array(FixedArray::cast(obj));
|
|
|
| // Array should be in the new space.
|
| CHECK(heap->InSpace(*array, NEW_SPACE));
|
|
|
| - // Call the m-c collector, so array becomes an old object.
|
| + // Call mark compact GC, so array becomes an old object.
|
| heap->CollectGarbage(OLD_POINTER_SPACE);
|
|
|
| // Array now sits in the old space
|
| @@ -108,42 +98,27 @@ TEST(Promotion) {
|
|
|
|
|
| TEST(NoPromotion) {
|
| - // Test the situation that some objects in new space are promoted to
|
| - // the old space
|
| CcTest::InitializeVM();
|
| -
|
| - CcTest::heap()->ConfigureHeap(2*256*KB, 8*MB, 8*MB);
|
| + Heap* heap = CcTest::heap();
|
| + heap->ConfigureHeap(2*256*KB, 1*MB, 1*MB);
|
|
|
| v8::HandleScope sc(CcTest::isolate());
|
|
|
| - // Do a mark compact GC to shrink the heap.
|
| - CcTest::heap()->CollectGarbage(OLD_POINTER_SPACE);
|
| -
|
| - // Allocate a big Fixed array in the new space.
|
| - int length = (Page::kMaxNonCodeHeapObjectSize -
|
| - FixedArray::kHeaderSize) / (2 * kPointerSize);
|
| - Object* obj = CcTest::heap()->AllocateFixedArray(length)->
|
| - ToObjectChecked();
|
| -
|
| + // Allocate a big fixed array in the new space.
|
| + int array_length =
|
| + (Page::kMaxNonCodeHeapObjectSize - FixedArray::kHeaderSize) /
|
| + (2 * kPointerSize);
|
| + Object* obj = heap->AllocateFixedArray(array_length)->ToObjectChecked();
|
| Handle<FixedArray> array(FixedArray::cast(obj));
|
|
|
| - // Array still stays in the new space.
|
| - CHECK(CcTest::heap()->InSpace(*array, NEW_SPACE));
|
| -
|
| - // Allocate objects in the old space until out of memory.
|
| - FixedArray* host = *array;
|
| - while (true) {
|
| - Object* obj;
|
| - { MaybeObject* maybe_obj = CcTest::heap()->AllocateFixedArray(100, TENURED);
|
| - if (!maybe_obj->ToObject(&obj)) break;
|
| - }
|
| + // Array should be in the new space.
|
| + CHECK(heap->InSpace(*array, NEW_SPACE));
|
|
|
| - host->set(0, obj);
|
| - host = FixedArray::cast(obj);
|
| - }
|
| + // Simulate a full old space to make promotion fail.
|
| + SimulateFullSpace(heap->old_pointer_space());
|
|
|
| // Call mark compact GC, and it should pass.
|
| - CcTest::heap()->CollectGarbage(OLD_POINTER_SPACE);
|
| + heap->CollectGarbage(OLD_POINTER_SPACE);
|
| }
|
|
|
|
|
|
|