| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 2321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2332 | 2332 |
| 2333 CcTest::InitializeVM(); | 2333 CcTest::InitializeVM(); |
| 2334 Heap* heap = CcTest::heap(); | 2334 Heap* heap = CcTest::heap(); |
| 2335 NewSpace* new_space = heap->new_space(); | 2335 NewSpace* new_space = heap->new_space(); |
| 2336 | 2336 |
| 2337 if (heap->MaxSemiSpaceSize() == heap->InitialSemiSpaceSize()) { | 2337 if (heap->MaxSemiSpaceSize() == heap->InitialSemiSpaceSize()) { |
| 2338 return; | 2338 return; |
| 2339 } | 2339 } |
| 2340 | 2340 |
| 2341 // Explicitly growing should double the space capacity. | 2341 // Explicitly growing should double the space capacity. |
| 2342 intptr_t old_capacity, new_capacity; | 2342 size_t old_capacity, new_capacity; |
| 2343 old_capacity = new_space->TotalCapacity(); | 2343 old_capacity = new_space->TotalCapacity(); |
| 2344 new_space->Grow(); | 2344 new_space->Grow(); |
| 2345 new_capacity = new_space->TotalCapacity(); | 2345 new_capacity = new_space->TotalCapacity(); |
| 2346 CHECK_EQ(2 * old_capacity, new_capacity); | 2346 CHECK_EQ(2 * old_capacity, new_capacity); |
| 2347 | 2347 |
| 2348 old_capacity = new_space->TotalCapacity(); | 2348 old_capacity = new_space->TotalCapacity(); |
| 2349 { | 2349 { |
| 2350 v8::HandleScope temporary_scope(CcTest::isolate()); | 2350 v8::HandleScope temporary_scope(CcTest::isolate()); |
| 2351 heap::SimulateFullSpace(new_space); | 2351 heap::SimulateFullSpace(new_space); |
| 2352 } | 2352 } |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2380 | 2380 |
| 2381 TEST(CollectingAllAvailableGarbageShrinksNewSpace) { | 2381 TEST(CollectingAllAvailableGarbageShrinksNewSpace) { |
| 2382 CcTest::InitializeVM(); | 2382 CcTest::InitializeVM(); |
| 2383 Heap* heap = CcTest::heap(); | 2383 Heap* heap = CcTest::heap(); |
| 2384 if (heap->MaxSemiSpaceSize() == heap->InitialSemiSpaceSize()) { | 2384 if (heap->MaxSemiSpaceSize() == heap->InitialSemiSpaceSize()) { |
| 2385 return; | 2385 return; |
| 2386 } | 2386 } |
| 2387 | 2387 |
| 2388 v8::HandleScope scope(CcTest::isolate()); | 2388 v8::HandleScope scope(CcTest::isolate()); |
| 2389 NewSpace* new_space = heap->new_space(); | 2389 NewSpace* new_space = heap->new_space(); |
| 2390 intptr_t old_capacity, new_capacity; | 2390 size_t old_capacity, new_capacity; |
| 2391 old_capacity = new_space->TotalCapacity(); | 2391 old_capacity = new_space->TotalCapacity(); |
| 2392 new_space->Grow(); | 2392 new_space->Grow(); |
| 2393 new_capacity = new_space->TotalCapacity(); | 2393 new_capacity = new_space->TotalCapacity(); |
| 2394 CHECK_EQ(2 * old_capacity, new_capacity); | 2394 CHECK_EQ(2 * old_capacity, new_capacity); |
| 2395 { | 2395 { |
| 2396 v8::HandleScope temporary_scope(CcTest::isolate()); | 2396 v8::HandleScope temporary_scope(CcTest::isolate()); |
| 2397 heap::SimulateFullSpace(new_space); | 2397 heap::SimulateFullSpace(new_space); |
| 2398 } | 2398 } |
| 2399 CcTest::CollectAllAvailableGarbage(); | 2399 CcTest::CollectAllAvailableGarbage(); |
| 2400 new_capacity = new_space->TotalCapacity(); | 2400 new_capacity = new_space->TotalCapacity(); |
| (...skipping 3270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5671 // (2) and will create promotion queue entries at the end of the second | 5671 // (2) and will create promotion queue entries at the end of the second |
| 5672 // semi-space page during the next scavenge when it promotes the objects to | 5672 // semi-space page during the next scavenge when it promotes the objects to |
| 5673 // the old generation. The first allocation of (3) will fill up the first | 5673 // the old generation. The first allocation of (3) will fill up the first |
| 5674 // semi-space page. The second allocation in (3) will not fit into the | 5674 // semi-space page. The second allocation in (3) will not fit into the |
| 5675 // first semi-space page, but it will overwrite the promotion queue which | 5675 // first semi-space page, but it will overwrite the promotion queue which |
| 5676 // are in the second semi-space page. If the right guards are in place, the | 5676 // are in the second semi-space page. If the right guards are in place, the |
| 5677 // promotion queue will be evacuated in that case. | 5677 // promotion queue will be evacuated in that case. |
| 5678 | 5678 |
| 5679 | 5679 |
| 5680 CHECK(new_space->IsAtMaximumCapacity()); | 5680 CHECK(new_space->IsAtMaximumCapacity()); |
| 5681 CHECK(i::FLAG_min_semi_space_size * MB == new_space->TotalCapacity()); | 5681 CHECK_EQ(static_cast<size_t>(i::FLAG_min_semi_space_size * MB), |
| 5682 new_space->TotalCapacity()); |
| 5682 | 5683 |
| 5683 // Call the scavenger two times to get an empty new space | 5684 // Call the scavenger two times to get an empty new space |
| 5684 heap->CollectGarbage(NEW_SPACE, i::GarbageCollectionReason::kTesting); | 5685 heap->CollectGarbage(NEW_SPACE, i::GarbageCollectionReason::kTesting); |
| 5685 heap->CollectGarbage(NEW_SPACE, i::GarbageCollectionReason::kTesting); | 5686 heap->CollectGarbage(NEW_SPACE, i::GarbageCollectionReason::kTesting); |
| 5686 | 5687 |
| 5687 // First create a few objects which will survive a scavenge, and will get | 5688 // First create a few objects which will survive a scavenge, and will get |
| 5688 // promoted to the old generation later on. These objects will create | 5689 // promoted to the old generation later on. These objects will create |
| 5689 // promotion queue entries at the end of the second semi-space page. | 5690 // promotion queue entries at the end of the second semi-space page. |
| 5690 const int number_handles = 12; | 5691 const int number_handles = 12; |
| 5691 Handle<FixedArray> handles[number_handles]; | 5692 Handle<FixedArray> handles[number_handles]; |
| 5692 for (int i = 0; i < number_handles; i++) { | 5693 for (int i = 0; i < number_handles; i++) { |
| 5693 handles[i] = i_isolate->factory()->NewFixedArray(1, NOT_TENURED); | 5694 handles[i] = i_isolate->factory()->NewFixedArray(1, NOT_TENURED); |
| 5694 } | 5695 } |
| 5695 | 5696 |
| 5696 heap->CollectGarbage(NEW_SPACE, i::GarbageCollectionReason::kTesting); | 5697 heap->CollectGarbage(NEW_SPACE, i::GarbageCollectionReason::kTesting); |
| 5697 CHECK(i::FLAG_min_semi_space_size * MB == new_space->TotalCapacity()); | 5698 CHECK_EQ(static_cast<size_t>(i::FLAG_min_semi_space_size * MB), |
| 5699 new_space->TotalCapacity()); |
| 5698 | 5700 |
| 5699 // Fill-up the first semi-space page. | 5701 // Fill-up the first semi-space page. |
| 5700 heap::FillUpOnePage(new_space); | 5702 heap::FillUpOnePage(new_space); |
| 5701 | 5703 |
| 5702 // Create a small object to initialize the bump pointer on the second | 5704 // Create a small object to initialize the bump pointer on the second |
| 5703 // semi-space page. | 5705 // semi-space page. |
| 5704 Handle<FixedArray> small = | 5706 Handle<FixedArray> small = |
| 5705 i_isolate->factory()->NewFixedArray(1, NOT_TENURED); | 5707 i_isolate->factory()->NewFixedArray(1, NOT_TENURED); |
| 5706 CHECK(heap->InNewSpace(*small)); | 5708 CHECK(heap->InNewSpace(*small)); |
| 5707 | 5709 |
| (...skipping 1310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7018 SlotSet::FREE_EMPTY_BUCKETS); | 7020 SlotSet::FREE_EMPTY_BUCKETS); |
| 7019 slots[chunk->area_end() - kPointerSize] = false; | 7021 slots[chunk->area_end() - kPointerSize] = false; |
| 7020 RememberedSet<OLD_TO_NEW>::Iterate(chunk, [&slots](Address addr) { | 7022 RememberedSet<OLD_TO_NEW>::Iterate(chunk, [&slots](Address addr) { |
| 7021 CHECK(slots[addr]); | 7023 CHECK(slots[addr]); |
| 7022 return KEEP_SLOT; | 7024 return KEEP_SLOT; |
| 7023 }); | 7025 }); |
| 7024 } | 7026 } |
| 7025 | 7027 |
| 7026 } // namespace internal | 7028 } // namespace internal |
| 7027 } // namespace v8 | 7029 } // namespace v8 |
| OLD | NEW |