Chromium Code Reviews| Index: runtime/vm/pages.cc |
| =================================================================== |
| --- runtime/vm/pages.cc (revision 35390) |
| +++ runtime/vm/pages.cc (working copy) |
| @@ -541,6 +541,7 @@ |
| bool collect_code = FLAG_collect_code && ShouldCollectCode(); |
| GCMarker marker(heap_); |
| marker.MarkObjects(isolate, this, invoke_api_callbacks, collect_code); |
| + usage_.used_in_words = marker.marked_words(); |
| int64_t mid1 = OS::GetCurrentTimeMicros(); |
| @@ -557,12 +558,10 @@ |
| HeapPage* page = pages_; |
| while (page != NULL) { |
| HeapPage* next_page = page->next(); |
| - intptr_t page_in_use = sweeper.SweepPage(page, &freelist_[page->type()]); |
| - if (page_in_use == 0) { |
| + if (sweeper.SweepPage(page, &freelist_[page->type()])) { |
|
koda
2014/04/24 23:09:56
Consider helping the reader remember what the retu
Ivan Posva
2014/04/24 23:17:50
Done.
|
| + prev_page = page; |
| + } else { |
| FreePage(page, prev_page); |
| - } else { |
| - usage_.used_in_words += (page_in_use >> kWordSizeLog2); |
| - prev_page = page; |
| } |
| // Advance to the next page. |
| page = next_page; |
| @@ -573,13 +572,11 @@ |
| prev_page = NULL; |
| page = large_pages_; |
| while (page != NULL) { |
| - intptr_t page_in_use = sweeper.SweepLargePage(page); |
| HeapPage* next_page = page->next(); |
| - if (page_in_use == 0) { |
| + if (sweeper.SweepLargePage(page)) { |
| + prev_page = page; |
| + } else { |
| FreeLargePage(page, prev_page); |
| - } else { |
| - usage_.used_in_words += (page_in_use >> kWordSizeLog2); |
| - prev_page = page; |
| } |
| // Advance to the next page. |
| page = next_page; |