| Index: src/heap/spaces-inl.h
|
| diff --git a/src/heap/spaces-inl.h b/src/heap/spaces-inl.h
|
| index 3213d17c136cc024f8d12851575bd3b7d8e3c195..26d95606fad1ab1475a0a57a020f39645a4e3e5e 100644
|
| --- a/src/heap/spaces-inl.h
|
| +++ b/src/heap/spaces-inl.h
|
| @@ -56,8 +56,8 @@ Page* PageIterator::next() {
|
|
|
| HeapObject* SemiSpaceIterator::Next() {
|
| while (current_ != limit_) {
|
| - if (NewSpacePage::IsAtEnd(current_)) {
|
| - NewSpacePage* page = NewSpacePage::FromLimit(current_);
|
| + if (Page::IsAlignedToPageSize(current_)) {
|
| + Page* page = Page::FromAllocationAreaAddress(current_);
|
| page = page->next_page();
|
| DCHECK(!page->is_anchor());
|
| current_ = page->area_start();
|
| @@ -80,9 +80,9 @@ HeapObject* SemiSpaceIterator::next_object() { return Next(); }
|
| // NewSpacePageIterator
|
|
|
| NewSpacePageIterator::NewSpacePageIterator(NewSpace* space)
|
| - : prev_page_(NewSpacePage::FromAddress(space->ToSpaceStart())->prev_page()),
|
| - next_page_(NewSpacePage::FromAddress(space->ToSpaceStart())),
|
| - last_page_(NewSpacePage::FromLimit(space->ToSpaceEnd())) {}
|
| + : prev_page_(Page::FromAddress(space->ToSpaceStart())->prev_page()),
|
| + next_page_(Page::FromAddress(space->ToSpaceStart())),
|
| + last_page_(Page::FromAllocationAreaAddress(space->ToSpaceEnd())) {}
|
|
|
| NewSpacePageIterator::NewSpacePageIterator(SemiSpace* space)
|
| : prev_page_(space->anchor()),
|
| @@ -90,17 +90,16 @@ NewSpacePageIterator::NewSpacePageIterator(SemiSpace* space)
|
| last_page_(prev_page_->prev_page()) {}
|
|
|
| NewSpacePageIterator::NewSpacePageIterator(Address start, Address limit)
|
| - : prev_page_(NewSpacePage::FromAddress(start)->prev_page()),
|
| - next_page_(NewSpacePage::FromAddress(start)),
|
| - last_page_(NewSpacePage::FromLimit(limit)) {
|
| + : prev_page_(Page::FromAddress(start)->prev_page()),
|
| + next_page_(Page::FromAddress(start)),
|
| + last_page_(Page::FromAllocationAreaAddress(limit)) {
|
| SemiSpace::AssertValidRange(start, limit);
|
| }
|
|
|
|
|
| bool NewSpacePageIterator::has_next() { return prev_page_ != last_page_; }
|
|
|
| -
|
| -NewSpacePage* NewSpacePageIterator::next() {
|
| +Page* NewSpacePageIterator::next() {
|
| DCHECK(has_next());
|
| prev_page_ = next_page_;
|
| next_page_ = next_page_->next_page();
|
| @@ -244,20 +243,18 @@ bool NewSpace::ToSpaceContains(Object* o) { return to_space_.Contains(o); }
|
| bool NewSpace::FromSpaceContains(Object* o) { return from_space_.Contains(o); }
|
|
|
| size_t NewSpace::AllocatedSinceLastGC() {
|
| - const intptr_t age_mark_offset =
|
| - NewSpacePage::OffsetInPage(to_space_.age_mark());
|
| - const intptr_t top_offset =
|
| - NewSpacePage::OffsetInPage(allocation_info_.top());
|
| + const intptr_t age_mark_offset = Page::OffsetInPage(to_space_.age_mark());
|
| + const intptr_t top_offset = Page::OffsetInPage(allocation_info_.top());
|
| const intptr_t age_mark_delta =
|
| - age_mark_offset >= NewSpacePage::kObjectStartOffset
|
| - ? age_mark_offset - NewSpacePage::kObjectStartOffset
|
| - : NewSpacePage::kAllocatableMemory;
|
| - const intptr_t top_delta = top_offset >= NewSpacePage::kObjectStartOffset
|
| - ? top_offset - NewSpacePage::kObjectStartOffset
|
| - : NewSpacePage::kAllocatableMemory;
|
| + age_mark_offset >= Page::kObjectStartOffset
|
| + ? age_mark_offset - Page::kObjectStartOffset
|
| + : Page::kAllocatableMemory;
|
| + const intptr_t top_delta = top_offset >= Page::kObjectStartOffset
|
| + ? top_offset - Page::kObjectStartOffset
|
| + : Page::kAllocatableMemory;
|
| DCHECK((allocated_since_last_gc_ > 0) ||
|
| - (NewSpacePage::FromLimit(allocation_info_.top()) ==
|
| - NewSpacePage::FromLimit(to_space_.age_mark())));
|
| + (Page::FromAllocationAreaAddress(allocation_info_.top()) ==
|
| + Page::FromAllocationAreaAddress(to_space_.age_mark())));
|
| return static_cast<size_t>(allocated_since_last_gc_ + top_delta -
|
| age_mark_delta);
|
| }
|
| @@ -270,16 +267,15 @@ AllocationSpace AllocationResult::RetrySpace() {
|
| return static_cast<AllocationSpace>(Smi::cast(object_)->value());
|
| }
|
|
|
| -NewSpacePage* NewSpacePage::Initialize(Heap* heap, MemoryChunk* chunk,
|
| - Executability executable,
|
| - SemiSpace* owner) {
|
| +Page* Page::Initialize(Heap* heap, MemoryChunk* chunk, Executability executable,
|
| + SemiSpace* owner) {
|
| DCHECK_EQ(executable, Executability::NOT_EXECUTABLE);
|
| bool in_to_space = (owner->id() != kFromSpace);
|
| chunk->SetFlag(in_to_space ? MemoryChunk::IN_TO_SPACE
|
| : MemoryChunk::IN_FROM_SPACE);
|
| DCHECK(!chunk->IsFlagSet(in_to_space ? MemoryChunk::IN_FROM_SPACE
|
| : MemoryChunk::IN_TO_SPACE));
|
| - NewSpacePage* page = static_cast<NewSpacePage*>(chunk);
|
| + Page* page = static_cast<Page*>(chunk);
|
| heap->incremental_marking()->SetNewSpacePageFlags(page);
|
| return page;
|
| }
|
| @@ -309,7 +305,8 @@ Page* Page::Initialize(Heap* heap, MemoryChunk* chunk, Executability executable,
|
| return page;
|
| }
|
|
|
| -Page* Page::Convert(NewSpacePage* old_page, PagedSpace* new_owner) {
|
| +Page* Page::ConvertNewToOld(Page* old_page, PagedSpace* new_owner) {
|
| + DCHECK(old_page->InNewSpace());
|
| old_page->set_owner(new_owner);
|
| old_page->SetFlags(0, ~0);
|
| new_owner->AccountCommitted(old_page->size());
|
| @@ -359,14 +356,14 @@ void MemoryChunk::IncrementLiveBytesFromMutator(HeapObject* object, int by) {
|
|
|
| bool PagedSpace::Contains(Address addr) {
|
| Page* p = Page::FromAddress(addr);
|
| - if (!p->is_valid()) return false;
|
| + if (!Page::IsValid(p)) return false;
|
| return p->owner() == this;
|
| }
|
|
|
| bool PagedSpace::Contains(Object* o) {
|
| if (!o->IsHeapObject()) return false;
|
| Page* p = Page::FromAddress(HeapObject::cast(o)->address());
|
| - if (!p->is_valid()) return false;
|
| + if (!Page::IsValid(p)) return false;
|
| return p->owner() == this;
|
| }
|
|
|
| @@ -472,16 +469,6 @@ MemoryChunk* MemoryChunkIterator::next() {
|
| return nullptr;
|
| }
|
|
|
| -void Page::set_next_page(Page* page) {
|
| - DCHECK(page->owner() == owner());
|
| - set_next_chunk(page);
|
| -}
|
| -
|
| -void Page::set_prev_page(Page* page) {
|
| - DCHECK(page->owner() == owner());
|
| - set_prev_chunk(page);
|
| -}
|
| -
|
| Page* FreeListCategory::page() {
|
| return Page::FromAddress(reinterpret_cast<Address>(this));
|
| }
|
|
|