Chromium Code Reviews| Index: src/heap/spaces.cc |
| diff --git a/src/heap/spaces.cc b/src/heap/spaces.cc |
| index 50a213e8ae4f582a3a684b4639c73894616fb851..204275ab5979fd17b68d07757470e4903b45df35 100644 |
| --- a/src/heap/spaces.cc |
| +++ b/src/heap/spaces.cc |
| @@ -2237,7 +2237,6 @@ void FreeListCategory::RepairFreeList(Heap* heap) { |
| FreeList::FreeList(PagedSpace* owner) |
| : owner_(owner), |
| - heap_(owner->heap()), |
|
Hannes Payer (out of office)
2015/10/15 12:23:42
Why did you remove heap?
Michael Lippautz
2015/10/15 12:31:34
There was only 1 caller (Free -> CreateFillerObjec
|
| wasted_bytes_(0), |
| small_list_(this, kSmall), |
| medium_list_(this, kMedium), |
| @@ -2285,7 +2284,7 @@ void FreeList::Reset() { |
| int FreeList::Free(Address start, int size_in_bytes) { |
| if (size_in_bytes == 0) return 0; |
| - heap_->CreateFillerObjectAt(start, size_in_bytes); |
| + owner()->heap()->CreateFillerObjectAt(start, size_in_bytes); |
| Page* page = Page::FromAddress(start); |
| @@ -2313,7 +2312,7 @@ int FreeList::Free(Address start, int size_in_bytes) { |
| page->add_available_in_huge_free_list(size_in_bytes); |
| } |
| - DCHECK(IsVeryLong() || available() == SumFreeLists()); |
| + DCHECK(IsVeryLong() || Available() == SumFreeLists()); |
| return 0; |
| } |
| @@ -2323,7 +2322,7 @@ FreeSpace* FreeList::FindNodeIn(FreeListCategoryType category, int* node_size) { |
| if (node != nullptr) { |
| Page::FromAddress(node->address()) |
| ->add_available_in_free_list(category, -(*node_size)); |
| - DCHECK(IsVeryLong() || available() == SumFreeLists()); |
| + DCHECK(IsVeryLong() || Available() == SumFreeLists()); |
| } |
| return node; |
| } |
| @@ -2336,7 +2335,7 @@ FreeSpace* FreeList::FindNodeFor(int size_in_bytes, int* node_size) { |
| if (size_in_bytes <= kSmallAllocationMax) { |
| node = FindNodeIn(kSmall, node_size); |
| if (node != NULL) { |
| - DCHECK(IsVeryLong() || available() == SumFreeLists()); |
| + DCHECK(IsVeryLong() || Available() == SumFreeLists()); |
| return node; |
| } |
| } |
| @@ -2344,7 +2343,7 @@ FreeSpace* FreeList::FindNodeFor(int size_in_bytes, int* node_size) { |
| if (size_in_bytes <= kMediumAllocationMax) { |
| node = FindNodeIn(kMedium, node_size); |
| if (node != NULL) { |
| - DCHECK(IsVeryLong() || available() == SumFreeLists()); |
| + DCHECK(IsVeryLong() || Available() == SumFreeLists()); |
| return node; |
| } |
| } |
| @@ -2352,7 +2351,7 @@ FreeSpace* FreeList::FindNodeFor(int size_in_bytes, int* node_size) { |
| if (size_in_bytes <= kLargeAllocationMax) { |
| node = FindNodeIn(kLarge, node_size); |
| if (node != NULL) { |
| - DCHECK(IsVeryLong() || available() == SumFreeLists()); |
| + DCHECK(IsVeryLong() || Available() == SumFreeLists()); |
| return node; |
| } |
| } |
| @@ -2360,7 +2359,7 @@ FreeSpace* FreeList::FindNodeFor(int size_in_bytes, int* node_size) { |
| node = huge_list_.SearchForNodeInList(size_in_bytes, node_size); |
| if (node != NULL) { |
| - DCHECK(IsVeryLong() || available() == SumFreeLists()); |
| + DCHECK(IsVeryLong() || Available() == SumFreeLists()); |
| return node; |
| } |
| @@ -2387,7 +2386,7 @@ FreeSpace* FreeList::FindNodeFor(int size_in_bytes, int* node_size) { |
| } |
| } |
| - DCHECK(IsVeryLong() || available() == SumFreeLists()); |
| + DCHECK(IsVeryLong() || Available() == SumFreeLists()); |
| return node; |
| } |
| @@ -2511,9 +2510,6 @@ intptr_t FreeListCategory::SumFreeList() { |
| } |
| -static const int kVeryLongFreeList = 500; |
| - |
| - |
| int FreeListCategory::FreeListLength() { |
| int length = 0; |
| FreeSpace* cur = top(); |
| @@ -2526,12 +2522,14 @@ int FreeListCategory::FreeListLength() { |
| } |
| +bool FreeListCategory::IsVeryLong() { |
| + return FreeListLength() == kVeryLongFreeList; |
| +} |
| + |
| + |
| bool FreeList::IsVeryLong() { |
| - if (small_list_.FreeListLength() == kVeryLongFreeList) return true; |
| - if (medium_list_.FreeListLength() == kVeryLongFreeList) return true; |
| - if (large_list_.FreeListLength() == kVeryLongFreeList) return true; |
| - if (huge_list_.FreeListLength() == kVeryLongFreeList) return true; |
| - return false; |
| + return small_list_.IsVeryLong() || medium_list_.IsVeryLong() || |
| + large_list_.IsVeryLong() || huge_list_.IsVeryLong(); |
| } |
| @@ -2659,7 +2657,7 @@ HeapObject* PagedSpace::SlowAllocateRaw(int size_in_bytes) { |
| // Try to expand the space and allocate in the new next page. |
| if (Expand()) { |
| DCHECK((CountTotalPages() > 1) || |
| - (size_in_bytes <= free_list_.available())); |
| + (size_in_bytes <= free_list_.Available())); |
| return free_list_.Allocate(size_in_bytes); |
| } |