| Index: src/heap/spaces.h
|
| diff --git a/src/heap/spaces.h b/src/heap/spaces.h
|
| index cd5ffd1287e3231d9735051040a8150f541aa41a..3f1a2b710f9605ee304c70e5274809e97fa1b9d7 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);
|
|
|
| @@ -1303,6 +1306,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,
|
| @@ -1618,6 +1623,7 @@ class AllocationStats BASE_EMBEDDED {
|
| capacity_ -= size_in_bytes;
|
| size_ -= size_in_bytes;
|
| CHECK_GE(size_, 0);
|
| + CHECK_GE(capacity_, 0);
|
| }
|
|
|
| // Allocate from available bytes (available -> size).
|
| @@ -2183,6 +2189,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.
|
|
|