Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(365)

Unified Diff: src/heap/spaces.h

Issue 2232653003: Reland of "[heap] Switch to 500k pages" (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add cctests Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/heap/mark-compact.cc ('k') | src/heap/spaces.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/heap/spaces.h
diff --git a/src/heap/spaces.h b/src/heap/spaces.h
index cd5ffd1287e3231d9735051040a8150f541aa41a..7e4bbe126a22e14c0c7daa888f0f7a66d2300ec7 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
@@ -1303,6 +1308,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 +1625,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 +2191,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.
« no previous file with comments | « src/heap/mark-compact.cc ('k') | src/heap/spaces.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698