| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/heap/spaces.h" | 5 #include "src/heap/spaces.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
| 10 #include "src/base/platform/platform.h" | 10 #include "src/base/platform/platform.h" |
| (...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 } | 501 } |
| 502 | 502 |
| 503 controller->TakeControl(&reservation); | 503 controller->TakeControl(&reservation); |
| 504 return base; | 504 return base; |
| 505 } | 505 } |
| 506 | 506 |
| 507 void Page::InitializeAsAnchor(Space* space) { | 507 void Page::InitializeAsAnchor(Space* space) { |
| 508 set_owner(space); | 508 set_owner(space); |
| 509 set_next_chunk(this); | 509 set_next_chunk(this); |
| 510 set_prev_chunk(this); | 510 set_prev_chunk(this); |
| 511 SetFlags(0, ~0); | 511 SetFlags(0, static_cast<uintptr_t>(~0)); |
| 512 SetFlag(ANCHOR); | 512 SetFlag(ANCHOR); |
| 513 } | 513 } |
| 514 | 514 |
| 515 MemoryChunk* MemoryChunk::Initialize(Heap* heap, Address base, size_t size, | 515 MemoryChunk* MemoryChunk::Initialize(Heap* heap, Address base, size_t size, |
| 516 Address area_start, Address area_end, | 516 Address area_start, Address area_end, |
| 517 Executability executable, Space* owner, | 517 Executability executable, Space* owner, |
| 518 base::VirtualMemory* reservation) { | 518 base::VirtualMemory* reservation) { |
| 519 MemoryChunk* chunk = FromAddress(base); | 519 MemoryChunk* chunk = FromAddress(base); |
| 520 | 520 |
| 521 DCHECK(base == chunk->address()); | 521 DCHECK(base == chunk->address()); |
| (...skipping 1108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1630 while (actual_pages < expected_pages) { | 1630 while (actual_pages < expected_pages) { |
| 1631 actual_pages++; | 1631 actual_pages++; |
| 1632 current_page = | 1632 current_page = |
| 1633 heap()->memory_allocator()->AllocatePage<MemoryAllocator::kPooled>( | 1633 heap()->memory_allocator()->AllocatePage<MemoryAllocator::kPooled>( |
| 1634 Page::kAllocatableMemory, this, executable()); | 1634 Page::kAllocatableMemory, this, executable()); |
| 1635 if (current_page == nullptr) return false; | 1635 if (current_page == nullptr) return false; |
| 1636 DCHECK_NOT_NULL(current_page); | 1636 DCHECK_NOT_NULL(current_page); |
| 1637 current_page->InsertAfter(anchor()); | 1637 current_page->InsertAfter(anchor()); |
| 1638 current_page->ClearLiveness(); | 1638 current_page->ClearLiveness(); |
| 1639 current_page->SetFlags(anchor()->prev_page()->GetFlags(), | 1639 current_page->SetFlags(anchor()->prev_page()->GetFlags(), |
| 1640 Page::kCopyAllFlags); | 1640 static_cast<uintptr_t>(Page::kCopyAllFlags)); |
| 1641 heap()->CreateFillerObjectAt(current_page->area_start(), | 1641 heap()->CreateFillerObjectAt(current_page->area_start(), |
| 1642 static_cast<int>(current_page->area_size()), | 1642 static_cast<int>(current_page->area_size()), |
| 1643 ClearRecordedSlots::kNo); | 1643 ClearRecordedSlots::kNo); |
| 1644 } | 1644 } |
| 1645 } | 1645 } |
| 1646 return true; | 1646 return true; |
| 1647 } | 1647 } |
| 1648 | 1648 |
| 1649 AllocationInfo LocalAllocationBuffer::Close() { | 1649 AllocationInfo LocalAllocationBuffer::Close() { |
| 1650 if (IsValid()) { | 1650 if (IsValid()) { |
| (...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2087 } | 2087 } |
| 2088 | 2088 |
| 2089 void SemiSpace::RemovePage(Page* page) { | 2089 void SemiSpace::RemovePage(Page* page) { |
| 2090 if (current_page_ == page) { | 2090 if (current_page_ == page) { |
| 2091 current_page_ = page->prev_page(); | 2091 current_page_ = page->prev_page(); |
| 2092 } | 2092 } |
| 2093 page->Unlink(); | 2093 page->Unlink(); |
| 2094 } | 2094 } |
| 2095 | 2095 |
| 2096 void SemiSpace::PrependPage(Page* page) { | 2096 void SemiSpace::PrependPage(Page* page) { |
| 2097 page->SetFlags(current_page()->GetFlags(), Page::kCopyAllFlags); | 2097 page->SetFlags(current_page()->GetFlags(), |
| 2098 static_cast<uintptr_t>(Page::kCopyAllFlags)); |
| 2098 page->set_owner(this); | 2099 page->set_owner(this); |
| 2099 page->InsertAfter(anchor()); | 2100 page->InsertAfter(anchor()); |
| 2100 pages_used_++; | 2101 pages_used_++; |
| 2101 } | 2102 } |
| 2102 | 2103 |
| 2103 void SemiSpace::Swap(SemiSpace* from, SemiSpace* to) { | 2104 void SemiSpace::Swap(SemiSpace* from, SemiSpace* to) { |
| 2104 // We won't be swapping semispaces without data in them. | 2105 // We won't be swapping semispaces without data in them. |
| 2105 DCHECK_NE(from->anchor_.next_page(), &from->anchor_); | 2106 DCHECK_NE(from->anchor_.next_page(), &from->anchor_); |
| 2106 DCHECK_NE(to->anchor_.next_page(), &to->anchor_); | 2107 DCHECK_NE(to->anchor_.next_page(), &to->anchor_); |
| 2107 | 2108 |
| (...skipping 1173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3281 object->ShortPrint(); | 3282 object->ShortPrint(); |
| 3282 PrintF("\n"); | 3283 PrintF("\n"); |
| 3283 } | 3284 } |
| 3284 printf(" --------------------------------------\n"); | 3285 printf(" --------------------------------------\n"); |
| 3285 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes()); | 3286 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes()); |
| 3286 } | 3287 } |
| 3287 | 3288 |
| 3288 #endif // DEBUG | 3289 #endif // DEBUG |
| 3289 } // namespace internal | 3290 } // namespace internal |
| 3290 } // namespace v8 | 3291 } // namespace v8 |
| OLD | NEW |