Index: src/spaces.cc |
diff --git a/src/spaces.cc b/src/spaces.cc |
index ebd3e6519208d9103a1b9d5e5bd975442d14c7fb..a2b8d43306db67dd6a5ed3f57590e8479c788806 100644 |
--- a/src/spaces.cc |
+++ b/src/spaces.cc |
@@ -658,7 +658,8 @@ PagedSpace::PagedSpace(Heap* heap, |
: Space(heap, id, executable), |
free_list_(this), |
was_swept_conservatively_(false), |
- first_unswept_page_(Page::FromAddress(NULL)) { |
+ first_unswept_page_(Page::FromAddress(NULL)), |
+ unswept_free_bytes_(0) { |
max_capacity_ = (RoundDown(max_capacity, Page::kPageSize) / Page::kPageSize) |
* Page::kObjectAreaSize; |
accounting_stats_.Clear(); |
@@ -2062,6 +2063,7 @@ void PagedSpace::PrepareForMarkCompact() { |
} while (p != anchor()); |
} |
first_unswept_page_ = Page::FromAddress(NULL); |
+ unswept_free_bytes_ = 0; |
// Clear the free list before a full GC---it will be rebuilt afterward. |
free_list_.Reset(); |
@@ -2110,6 +2112,7 @@ bool PagedSpace::AdvanceSweeper(intptr_t bytes_to_sweep) { |
PrintF("Sweeping 0x%" V8PRIxPTR " lazily advanced.\n", |
reinterpret_cast<intptr_t>(p)); |
} |
+ unswept_free_bytes_ -= (Page::kObjectAreaSize - p->LiveBytes()); |
freed_bytes += MarkCompactCollector::SweepConservatively(this, p); |
} |
p = next_page; |