Index: src/heap/spaces.cc |
diff --git a/src/heap/spaces.cc b/src/heap/spaces.cc |
index bbb3402c0c29b8fa80242673f8a84a0528d26e06..3ca518685e67f3183a82cfdde4e2a524f8a836a6 100644 |
--- a/src/heap/spaces.cc |
+++ b/src/heap/spaces.cc |
@@ -29,19 +29,26 @@ HeapObjectIterator::HeapObjectIterator(PagedSpace* space) |
cur_end_(nullptr), |
space_(space), |
page_range_(space->anchor()->next_page(), space->anchor()), |
- current_page_(page_range_.begin()) {} |
+ next_page_(page_range_.begin()) {} |
+ |
+HeapObjectIterator::HeapObjectIterator(NewSpace* space) |
+ : cur_addr_(nullptr), |
+ cur_end_(nullptr), |
+ space_(space), |
+ page_range_(space->bottom(), space->top()), |
+ next_page_(page_range_.begin()) {} |
HeapObjectIterator::HeapObjectIterator(Page* page) |
: cur_addr_(nullptr), |
cur_end_(nullptr), |
- space_(reinterpret_cast<PagedSpace*>(page->owner())), |
+ space_(reinterpret_cast<SpaceWithInlineAllocationArea*>(page->owner())), |
page_range_(page), |
- current_page_(page_range_.begin()) { |
+ next_page_(page_range_.begin()) { |
#ifdef DEBUG |
Space* owner = page->owner(); |
- DCHECK(owner == page->heap()->old_space() || |
- owner == page->heap()->map_space() || |
- owner == page->heap()->code_space()); |
+ Heap* heap = page->heap(); |
+ DCHECK(owner == heap->old_space() || owner == heap->map_space() || |
+ owner == heap->code_space() || owner == heap->new_space()); |
#endif // DEBUG |
} |
@@ -49,8 +56,8 @@ HeapObjectIterator::HeapObjectIterator(Page* page) |
// objects. This happens at the end of the page. |
bool HeapObjectIterator::AdvanceToNextPage() { |
DCHECK_EQ(cur_addr_, cur_end_); |
- if (current_page_ == page_range_.end()) return false; |
- Page* cur_page = *(current_page_++); |
+ if (next_page_ == page_range_.end()) return false; |
+ Page* cur_page = *(next_page_++); |
space_->heap() |
->mark_compact_collector() |
->sweeper() |
@@ -1180,7 +1187,9 @@ void Space::AllocationStep(Address soon_object, int size) { |
PagedSpace::PagedSpace(Heap* heap, AllocationSpace space, |
Executability executable) |
- : Space(heap, space, executable), anchor_(this), free_list_(this) { |
+ : SpaceWithInlineAllocationArea(heap, space, executable), |
+ anchor_(this), |
+ free_list_(this) { |
area_size_ = MemoryAllocator::PageAreaSize(space); |
accounting_stats_.Clear(); |
@@ -2095,7 +2104,7 @@ void SemiSpace::set_age_mark(Address mark) { |
DCHECK_EQ(Page::FromAllocationAreaAddress(mark)->owner(), this); |
age_mark_ = mark; |
// Mark all pages up to the one containing mark. |
- for (Page* p : NewSpacePageRange(space_start(), mark)) { |
+ for (Page* p : PageRange(space_start(), mark)) { |
p->SetFlag(MemoryChunk::NEW_SPACE_BELOW_AGE_MARK); |
} |
} |