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

Side by Side Diff: src/heap/spaces.h

Issue 2229403003: Revert of [heap] Switch to 500k pages (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « src/heap/mark-compact.cc ('k') | src/heap/spaces.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef V8_HEAP_SPACES_H_ 5 #ifndef V8_HEAP_SPACES_H_
6 #define V8_HEAP_SPACES_H_ 6 #define V8_HEAP_SPACES_H_
7 7
8 #include <list> 8 #include <list>
9 #include <memory> 9 #include <memory>
10 10
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 (1 << MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING) | 682 (1 << MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING) |
683 (1 << MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); 683 (1 << MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING);
684 684
685 // Maximum object size that gets allocated into regular pages. Objects larger 685 // Maximum object size that gets allocated into regular pages. Objects larger
686 // than that size are allocated in large object space and are never moved in 686 // than that size are allocated in large object space and are never moved in
687 // memory. This also applies to new space allocation, since objects are never 687 // memory. This also applies to new space allocation, since objects are never
688 // migrated from new space to large object space. Takes double alignment into 688 // migrated from new space to large object space. Takes double alignment into
689 // account. 689 // account.
690 // TODO(hpayer): This limit should be way smaller but we currently have 690 // TODO(hpayer): This limit should be way smaller but we currently have
691 // short living objects >256K. 691 // short living objects >256K.
692 static const int kMaxRegularHeapObjectSize = 300 * KB; 692 static const int kMaxRegularHeapObjectSize = 600 * KB;
693 693
694 static inline Page* ConvertNewToOld(Page* old_page, PagedSpace* new_owner); 694 static inline Page* ConvertNewToOld(Page* old_page, PagedSpace* new_owner);
695 695
696 // Returns the page containing a given address. The address ranges 696 // Returns the page containing a given address. The address ranges
697 // from [page_addr .. page_addr + kPageSize[. This only works if the object 697 // from [page_addr .. page_addr + kPageSize[. This only works if the object
698 // is in fact in a page. 698 // is in fact in a page.
699 static Page* FromAddress(Address addr) { 699 static Page* FromAddress(Address addr) {
700 return reinterpret_cast<Page*>(OffsetFrom(addr) & ~kPageAlignmentMask); 700 return reinterpret_cast<Page*>(OffsetFrom(addr) & ~kPageAlignmentMask);
701 } 701 }
702 702
(...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 void ReportStatistics(); 1263 void ReportStatistics();
1264 #endif 1264 #endif
1265 1265
1266 // Returns a MemoryChunk in which the memory region from commit_area_size to 1266 // Returns a MemoryChunk in which the memory region from commit_area_size to
1267 // reserve_area_size of the chunk area is reserved but not committed, it 1267 // reserve_area_size of the chunk area is reserved but not committed, it
1268 // could be committed later by calling MemoryChunk::CommitArea. 1268 // could be committed later by calling MemoryChunk::CommitArea.
1269 MemoryChunk* AllocateChunk(intptr_t reserve_area_size, 1269 MemoryChunk* AllocateChunk(intptr_t reserve_area_size,
1270 intptr_t commit_area_size, 1270 intptr_t commit_area_size,
1271 Executability executable, Space* space); 1271 Executability executable, Space* space);
1272 1272
1273 void ShrinkChunk(MemoryChunk* chunk, size_t bytes_to_shrink);
1274
1275 Address ReserveAlignedMemory(size_t requested, size_t alignment, 1273 Address ReserveAlignedMemory(size_t requested, size_t alignment,
1276 base::VirtualMemory* controller); 1274 base::VirtualMemory* controller);
1277 Address AllocateAlignedMemory(size_t reserve_size, size_t commit_size, 1275 Address AllocateAlignedMemory(size_t reserve_size, size_t commit_size,
1278 size_t alignment, Executability executable, 1276 size_t alignment, Executability executable,
1279 base::VirtualMemory* controller); 1277 base::VirtualMemory* controller);
1280 1278
1281 bool CommitMemory(Address addr, size_t size, Executability executable); 1279 bool CommitMemory(Address addr, size_t size, Executability executable);
1282 1280
1283 void FreeMemory(base::VirtualMemory* reservation, Executability executable); 1281 void FreeMemory(base::VirtualMemory* reservation, Executability executable);
1284 void PartialFreeMemory(MemoryChunk* chunk, Address start_free); 1282 void PartialFreeMemory(MemoryChunk* chunk, Address start_free);
(...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after
2135 FreeList* free_list() { return &free_list_; } 2133 FreeList* free_list() { return &free_list_; }
2136 2134
2137 base::Mutex* mutex() { return &space_mutex_; } 2135 base::Mutex* mutex() { return &space_mutex_; }
2138 2136
2139 inline void UnlinkFreeListCategories(Page* page); 2137 inline void UnlinkFreeListCategories(Page* page);
2140 inline intptr_t RelinkFreeListCategories(Page* page); 2138 inline intptr_t RelinkFreeListCategories(Page* page);
2141 2139
2142 iterator begin() { return iterator(anchor_.next_page()); } 2140 iterator begin() { return iterator(anchor_.next_page()); }
2143 iterator end() { return iterator(&anchor_); } 2141 iterator end() { return iterator(&anchor_); }
2144 2142
2145 // Shrink all pages of the space to be exactly the size needed using the
2146 // high water mark.
2147 void ShrinkPagesToHighWaterMark();
2148
2149 protected: 2143 protected:
2150 // PagedSpaces that should be included in snapshots have different, i.e., 2144 // PagedSpaces that should be included in snapshots have different, i.e.,
2151 // smaller, initial pages. 2145 // smaller, initial pages.
2152 virtual bool snapshotable() { return true; } 2146 virtual bool snapshotable() { return true; }
2153 2147
2154 bool HasPages() { return anchor_.next_page() != &anchor_; } 2148 bool HasPages() { return anchor_.next_page() != &anchor_; }
2155 2149
2156 // Cleans up the space, frees all pages in this space except those belonging 2150 // Cleans up the space, frees all pages in this space except those belonging
2157 // to the initial chunk, uncommits addresses in the initial chunk. 2151 // to the initial chunk, uncommits addresses in the initial chunk.
2158 void TearDown(); 2152 void TearDown();
(...skipping 832 matching lines...) Expand 10 before | Expand all | Expand 10 after
2991 count = 0; 2985 count = 0;
2992 } 2986 }
2993 // Must be small, since an iteration is used for lookup. 2987 // Must be small, since an iteration is used for lookup.
2994 static const int kMaxComments = 64; 2988 static const int kMaxComments = 64;
2995 }; 2989 };
2996 #endif 2990 #endif
2997 } // namespace internal 2991 } // namespace internal
2998 } // namespace v8 2992 } // namespace v8
2999 2993
3000 #endif // V8_HEAP_SPACES_H_ 2994 #endif // V8_HEAP_SPACES_H_
OLDNEW
« 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