| Index: src/heap/spaces.h
|
| diff --git a/src/heap/spaces.h b/src/heap/spaces.h
|
| index de5ea1b16adc399a977885f4bacffda9c8b22263..93106c13ed992e47a3fea960b8f980ad6f5353a8 100644
|
| --- a/src/heap/spaces.h
|
| +++ b/src/heap/spaces.h
|
| @@ -235,7 +235,10 @@ class MemoryChunk {
|
| IN_TO_SPACE, // All pages in new space has one of these two set.
|
| NEW_SPACE_BELOW_AGE_MARK,
|
| EVACUATION_CANDIDATE,
|
| - NEVER_EVACUATE, // May contain immortal immutables.
|
| +
|
| + // |NEVER_EVACUATE|: A page tagged with this flag will never be selected
|
| + // for evacuation. Typically used for immortal immovable pages.
|
| + NEVER_EVACUATE,
|
|
|
| // Large objects can have a progress bar in their page header. These object
|
| // are scanned in increments and will be kept black while being scanned.
|
| @@ -722,7 +725,7 @@ class Page : public MemoryChunk {
|
| // account.
|
| // TODO(hpayer): This limit should be way smaller but we currently have
|
| // short living objects >256K.
|
| - static const int kMaxRegularHeapObjectSize = 600 * KB;
|
| + static const int kMaxRegularHeapObjectSize = 400 * KB;
|
|
|
| static inline Page* ConvertNewToOld(Page* old_page, PagedSpace* new_owner);
|
|
|
| @@ -823,6 +826,8 @@ class Page : public MemoryChunk {
|
| available_in_free_list_.Increment(available);
|
| }
|
|
|
| + size_t ShrinkToHighWaterMark();
|
| +
|
| #ifdef DEBUG
|
| void Print();
|
| #endif // DEBUG
|
| @@ -1315,6 +1320,8 @@ class MemoryAllocator {
|
| intptr_t commit_area_size,
|
| Executability executable, Space* space);
|
|
|
| + void ShrinkChunk(MemoryChunk* chunk, size_t bytes_to_shrink);
|
| +
|
| Address ReserveAlignedMemory(size_t requested, size_t alignment,
|
| base::VirtualMemory* controller);
|
| Address AllocateAlignedMemory(size_t reserve_size, size_t commit_size,
|
| @@ -2196,6 +2203,10 @@ class PagedSpace : public Space {
|
| iterator begin() { return iterator(anchor_.next_page()); }
|
| iterator end() { return iterator(&anchor_); }
|
|
|
| + // Shrink immortal immovable pages of the space to be exactly the size needed
|
| + // using the high water mark.
|
| + void ShrinkImmortalImmovablePages();
|
| +
|
| protected:
|
| // PagedSpaces that should be included in snapshots have different, i.e.,
|
| // smaller, initial pages.
|
|
|