Index: test/cctest/heap/test-heap.cc |
diff --git a/test/cctest/heap/test-heap.cc b/test/cctest/heap/test-heap.cc |
index d4ebd04898bea1c8e024c534115c3ab52faa6240..3837397ac1399446b11c9b2fbaed14d9fdeeb40d 100644 |
--- a/test/cctest/heap/test-heap.cc |
+++ b/test/cctest/heap/test-heap.cc |
@@ -6828,164 +6828,6 @@ TEST(Regress615489) { |
CHECK_LE(size_after, size_before); |
} |
-TEST(LeftTrimFixedArrayInBlackArea) { |
- FLAG_black_allocation = true; |
- CcTest::InitializeVM(); |
- v8::HandleScope scope(CcTest::isolate()); |
- Heap* heap = CcTest::heap(); |
- Isolate* isolate = heap->isolate(); |
- heap->CollectAllGarbage(); |
- |
- i::MarkCompactCollector* collector = heap->mark_compact_collector(); |
- i::IncrementalMarking* marking = heap->incremental_marking(); |
- if (collector->sweeping_in_progress()) { |
- collector->EnsureSweepingCompleted(); |
- } |
- CHECK(marking->IsMarking() || marking->IsStopped()); |
- if (marking->IsStopped()) { |
- heap->StartIncrementalMarking(); |
- } |
- CHECK(marking->IsMarking()); |
- marking->StartBlackAllocationForTesting(); |
- |
- // Ensure that we allocate a new page, set up a bump pointer area, and |
- // perform the allocation in a black area. |
- heap::SimulateFullSpace(heap->old_space()); |
- isolate->factory()->NewFixedArray(4, TENURED); |
- Handle<FixedArray> array = isolate->factory()->NewFixedArray(50, TENURED); |
- CHECK(heap->old_space()->Contains(*array)); |
- CHECK(Marking::IsBlack(ObjectMarking::MarkBitFrom(*array))); |
- |
- // Now left trim the allocated black area. A filler has to be installed |
- // for the trimmed area and all mark bits of the trimmed area have to be |
- // cleared. |
- FixedArrayBase* trimmed = heap->LeftTrimFixedArray(*array, 10); |
- CHECK(Marking::IsBlack(ObjectMarking::MarkBitFrom(trimmed))); |
- |
- heap::GcAndSweep(heap, OLD_SPACE); |
-} |
- |
-TEST(ContinuousLeftTrimFixedArrayInBlackArea) { |
- FLAG_black_allocation = true; |
- CcTest::InitializeVM(); |
- v8::HandleScope scope(CcTest::isolate()); |
- Heap* heap = CcTest::heap(); |
- Isolate* isolate = heap->isolate(); |
- heap->CollectAllGarbage(); |
- |
- i::MarkCompactCollector* collector = heap->mark_compact_collector(); |
- i::IncrementalMarking* marking = heap->incremental_marking(); |
- if (collector->sweeping_in_progress()) { |
- collector->EnsureSweepingCompleted(); |
- } |
- CHECK(marking->IsMarking() || marking->IsStopped()); |
- if (marking->IsStopped()) { |
- heap->StartIncrementalMarking(); |
- } |
- CHECK(marking->IsMarking()); |
- marking->StartBlackAllocationForTesting(); |
- |
- // Ensure that we allocate a new page, set up a bump pointer area, and |
- // perform the allocation in a black area. |
- heap::SimulateFullSpace(heap->old_space()); |
- isolate->factory()->NewFixedArray(10, TENURED); |
- |
- // Allocate the fixed array that will be trimmed later. |
- Handle<FixedArray> array = isolate->factory()->NewFixedArray(100, TENURED); |
- Address start_address = array->address(); |
- Address end_address = start_address + array->Size(); |
- Page* page = Page::FromAddress(start_address); |
- CHECK(Marking::IsBlack(ObjectMarking::MarkBitFrom(*array))); |
- CHECK(page->markbits()->AllBitsSetInRange( |
- page->AddressToMarkbitIndex(start_address), |
- page->AddressToMarkbitIndex(end_address))); |
- CHECK(heap->old_space()->Contains(*array)); |
- |
- FixedArrayBase* previous = *array; |
- FixedArrayBase* trimmed; |
- |
- // First trim in one word steps. |
- for (int i = 0; i < 10; i++) { |
- trimmed = heap->LeftTrimFixedArray(previous, 1); |
- HeapObject* filler = HeapObject::FromAddress(previous->address()); |
- CHECK(filler->IsFiller()); |
- CHECK(Marking::IsBlack(ObjectMarking::MarkBitFrom(trimmed))); |
- CHECK(Marking::IsImpossible(ObjectMarking::MarkBitFrom(previous))); |
- previous = trimmed; |
- } |
- |
- // Then trim in two and three word steps. |
- for (int i = 2; i <= 3; i++) { |
- for (int j = 0; j < 10; j++) { |
- trimmed = heap->LeftTrimFixedArray(previous, i); |
- HeapObject* filler = HeapObject::FromAddress(previous->address()); |
- CHECK(filler->IsFiller()); |
- CHECK(Marking::IsBlack(ObjectMarking::MarkBitFrom(trimmed))); |
- CHECK(Marking::IsWhite(ObjectMarking::MarkBitFrom(previous))); |
- previous = trimmed; |
- } |
- } |
- |
- heap::GcAndSweep(heap, OLD_SPACE); |
-} |
- |
-TEST(ContinuousRightTrimFixedArrayInBlackArea) { |
- FLAG_black_allocation = true; |
- CcTest::InitializeVM(); |
- v8::HandleScope scope(CcTest::isolate()); |
- Heap* heap = CcTest::heap(); |
- Isolate* isolate = heap->isolate(); |
- heap->CollectAllGarbage(); |
- |
- i::MarkCompactCollector* collector = heap->mark_compact_collector(); |
- i::IncrementalMarking* marking = heap->incremental_marking(); |
- if (collector->sweeping_in_progress()) { |
- collector->EnsureSweepingCompleted(); |
- } |
- CHECK(marking->IsMarking() || marking->IsStopped()); |
- if (marking->IsStopped()) { |
- heap->StartIncrementalMarking(); |
- } |
- CHECK(marking->IsMarking()); |
- marking->StartBlackAllocationForTesting(); |
- |
- // Ensure that we allocate a new page, set up a bump pointer area, and |
- // perform the allocation in a black area. |
- heap::SimulateFullSpace(heap->old_space()); |
- isolate->factory()->NewFixedArray(10, TENURED); |
- |
- // Allocate the fixed array that will be trimmed later. |
- Handle<FixedArray> array = isolate->factory()->NewFixedArray(100, TENURED); |
- Address start_address = array->address(); |
- Address end_address = start_address + array->Size(); |
- Page* page = Page::FromAddress(start_address); |
- CHECK(Marking::IsBlack(ObjectMarking::MarkBitFrom(*array))); |
- CHECK(page->markbits()->AllBitsSetInRange( |
- page->AddressToMarkbitIndex(start_address), |
- page->AddressToMarkbitIndex(end_address))); |
- CHECK(heap->old_space()->Contains(*array)); |
- |
- // Trim it once by one word to make checking for white marking color uniform. |
- Address previous = end_address - kPointerSize; |
- heap->RightTrimFixedArray<Heap::SEQUENTIAL_TO_SWEEPER>(*array, 1); |
- HeapObject* filler = HeapObject::FromAddress(previous); |
- CHECK(filler->IsFiller()); |
- CHECK(Marking::IsImpossible(ObjectMarking::MarkBitFrom(previous))); |
- |
- // Trim 10 times by one, two, and three word. |
- for (int i = 1; i <= 3; i++) { |
- for (int j = 0; j < 10; j++) { |
- previous -= kPointerSize * i; |
- heap->RightTrimFixedArray<Heap::SEQUENTIAL_TO_SWEEPER>(*array, i); |
- HeapObject* filler = HeapObject::FromAddress(previous); |
- CHECK(filler->IsFiller()); |
- CHECK(Marking::IsWhite(ObjectMarking::MarkBitFrom(previous))); |
- } |
- } |
- |
- heap::GcAndSweep(heap, OLD_SPACE); |
-} |
- |
TEST(Regress618958) { |
CcTest::InitializeVM(); |
v8::HandleScope scope(CcTest::isolate()); |