Index: src/heap/spaces.h |
diff --git a/src/heap/spaces.h b/src/heap/spaces.h |
index 8ac8103f17d98f5b2ce52b73a176b41b5829b02b..75b9752b5b48289478f207ec92f93e67263f9b69 100644 |
--- a/src/heap/spaces.h |
+++ b/src/heap/spaces.h |
@@ -417,6 +417,12 @@ class MemoryChunk { |
static const int kFlagsOffset = kPointerSize; |
+ // Page size in bytes. This must be a multiple of the OS page size. |
+ static const int kPageSize = 1 << kPageSizeBits; |
+ static const intptr_t kPageAlignmentMask = (1 << kPageSizeBits) - 1; |
+ |
+ static const int kAllocatableMemory = kPageSize - kObjectStartOffset; |
+ |
static inline void IncrementLiveBytesFromMutator(HeapObject* object, int by); |
static inline void IncrementLiveBytesFromGC(HeapObject* object, int by); |
@@ -778,9 +784,6 @@ class Page : public MemoryChunk { |
// --------------------------------------------------------------------- |
- // Page size in bytes. This must be a multiple of the OS page size. |
- static const int kPageSize = 1 << kPageSizeBits; |
- |
// Maximum object size that gets allocated into regular pages. Objects larger |
// than that size are allocated in large object space and are never moved in |
// memory. This also applies to new space allocation, since objects are never |
@@ -790,11 +793,6 @@ class Page : public MemoryChunk { |
// short living objects >256K. |
static const int kMaxRegularHeapObjectSize = 600 * KB; |
- static const int kAllocatableMemory = kPageSize - kObjectStartOffset; |
- |
- // Page size mask. |
- static const intptr_t kPageAlignmentMask = (1 << kPageSizeBits) - 1; |
- |
inline void ClearGCFields(); |
static inline Page* Initialize(Heap* heap, MemoryChunk* chunk, |
@@ -2198,30 +2196,6 @@ enum SemiSpaceId { kFromSpace = 0, kToSpace = 1 }; |
class NewSpacePage : public MemoryChunk { |
public: |
- // GC related flags copied from from-space to to-space when |
- // flipping semispaces. |
- static const intptr_t kCopyOnFlipFlagsMask = |
- (1 << MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING) | |
- (1 << MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); |
- |
- static const int kAreaSize = Page::kAllocatableMemory; |
Michael Lippautz
2016/03/17 10:13:43
Now available on MemoryChunk since the allocatable
|
- |
- inline NewSpacePage* next_page() { |
- return static_cast<NewSpacePage*>(next_chunk()); |
- } |
- |
- inline void set_next_page(NewSpacePage* page) { set_next_chunk(page); } |
- |
- inline NewSpacePage* prev_page() { |
- return static_cast<NewSpacePage*>(prev_chunk()); |
- } |
- |
- inline void set_prev_page(NewSpacePage* page) { set_prev_chunk(page); } |
- |
- SemiSpace* semi_space() { return reinterpret_cast<SemiSpace*>(owner()); } |
- |
- bool is_anchor() { return !this->InNewSpace(); } |
- |
static bool IsAtStart(Address addr) { |
return (reinterpret_cast<intptr_t>(addr) & Page::kPageAlignmentMask) == |
kObjectStartOffset; |
@@ -2231,8 +2205,6 @@ class NewSpacePage : public MemoryChunk { |
return (reinterpret_cast<intptr_t>(addr) & Page::kPageAlignmentMask) == 0; |
} |
- Address address() { return reinterpret_cast<Address>(this); } |
Michael Lippautz
2016/03/17 10:13:43
dead code
|
- |
// Finds the NewSpacePage containing the given address. |
static inline NewSpacePage* FromAddress(Address address_in_page) { |
Address page_start = |
@@ -2254,7 +2226,29 @@ class NewSpacePage : public MemoryChunk { |
NewSpacePage::FromAddress(address2); |
} |
+ inline NewSpacePage* next_page() { |
+ return static_cast<NewSpacePage*>(next_chunk()); |
+ } |
+ |
+ inline void set_next_page(NewSpacePage* page) { set_next_chunk(page); } |
+ |
+ inline NewSpacePage* prev_page() { |
+ return static_cast<NewSpacePage*>(prev_chunk()); |
+ } |
+ |
+ inline void set_prev_page(NewSpacePage* page) { set_prev_chunk(page); } |
+ |
+ SemiSpace* semi_space() { return reinterpret_cast<SemiSpace*>(owner()); } |
+ |
+ bool is_anchor() { return !this->InNewSpace(); } |
+ |
private: |
+ // GC related flags copied from from-space to to-space when |
+ // flipping semispaces. |
+ static const intptr_t kCopyOnFlipFlagsMask = |
+ (1 << MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING) | |
+ (1 << MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); |
+ |
// Create a NewSpacePage object that is only used as anchor |
// for the doubly-linked list of real pages. |
explicit NewSpacePage(SemiSpace* owner) { InitializeAsAnchor(owner); } |
@@ -2531,7 +2525,7 @@ class NewSpace : public Space { |
// Return the allocated bytes in the active semispace. |
intptr_t Size() override { |
- return pages_used_ * NewSpacePage::kAreaSize + |
+ return pages_used_ * NewSpacePage::kAllocatableMemory + |
static_cast<int>(top() - to_space_.page_low()); |
} |
@@ -2544,7 +2538,7 @@ class NewSpace : public Space { |
intptr_t Capacity() { |
SLOW_DCHECK(to_space_.current_capacity() == from_space_.current_capacity()); |
return (to_space_.current_capacity() / Page::kPageSize) * |
- NewSpacePage::kAreaSize; |
+ NewSpacePage::kAllocatableMemory; |
} |
// Return the current size of a semispace, allocatable and non-allocatable |