Changeset 243389 in webkit
- Timestamp:
- Mar 22, 2019, 10:43:29 AM (7 years ago)
- Location:
- trunk/Source/bmalloc
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
bmalloc/Chunk.h (modified) (2 diffs)
-
bmalloc/Heap.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/bmalloc/ChangeLog
r243357 r243389 1 2019-03-21 Michael Saboff <msaboff@apple.com> 2 3 [BMalloc] No need to delay deallocating chunks based on recent use 4 https://bugs.webkit.org/show_bug.cgi?id=196121 5 6 Reviewed by Mark Lam. 7 8 The "used since last scavenge" logic is not needed for small chunks since their memory isn't decommitted directly. 9 We can deallocate small chunks immediately as that adds them to the LargeRange free list. That free list employs the 10 "used since last scavenge" logic before the scavenger decommits the backing memory. 11 12 * bmalloc/Chunk.h: 13 (bmalloc::Chunk::usedSinceLastScavenge): Deleted. 14 (bmalloc::Chunk::clearUsedSinceLastScavenge): Deleted. 15 (bmalloc::Chunk::setUsedSinceLastScavenge): Deleted. 16 * bmalloc/Heap.cpp: 17 (bmalloc::Heap::scavenge): 18 (bmalloc::Heap::allocateSmallPage): 19 1 20 2019-03-21 Brady Eidson <beidson@apple.com> 2 21 -
trunk/Source/bmalloc/bmalloc/Chunk.h
r243144 r243389 46 46 unsigned refCount() { return m_refCount; } 47 47 48 bool usedSinceLastScavenge() { return m_usedSinceLastScavenge; }49 void clearUsedSinceLastScavenge() { m_usedSinceLastScavenge = false; }50 void setUsedSinceLastScavenge() { m_usedSinceLastScavenge = true; }51 52 48 size_t offset(void*); 53 49 … … 64 60 private: 65 61 size_t m_refCount { }; 66 bool m_usedSinceLastScavenge: 1;67 62 List<SmallPage> m_freePages { }; 68 63 -
trunk/Source/bmalloc/bmalloc/Heap.cpp
r243144 r243389 203 203 204 204 for (auto& list : m_chunkCache) { 205 for (auto iter = list.begin(); iter != list.end(); ) { 206 Chunk* chunk = *iter; 207 if (chunk->usedSinceLastScavenge()) { 208 chunk->clearUsedSinceLastScavenge(); 209 deferredDecommits++; 210 ++iter; 211 continue; 212 } 213 ++iter; 214 list.remove(chunk); 215 deallocateSmallChunk(chunk, &list - &m_chunkCache[0]); 216 } 205 while (!list.isEmpty()) 206 deallocateSmallChunk(list.pop(), &list - &m_chunkCache[0]); 217 207 } 218 208 … … 317 307 318 308 chunk->ref(); 319 chunk->setUsedSinceLastScavenge();320 309 321 310 SmallPage* page = chunk->freePages().pop();
Note:
See TracChangeset
for help on using the changeset viewer.