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

Unified Diff: Source/wtf/PartitionAlloc.cpp

Issue 301743006: Report DOM partitionAlloc size to V8 GC. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: track page count Created 6 years, 6 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
« Source/platform/Partitions.h ('K') | « Source/web/WebKit.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/wtf/PartitionAlloc.cpp
diff --git a/Source/wtf/PartitionAlloc.cpp b/Source/wtf/PartitionAlloc.cpp
index a63a684c51980189aed9ab281b326c9f54d06ac4..f4fbdea72ba879b56c125489fad8f68134534a00 100644
--- a/Source/wtf/PartitionAlloc.cpp
+++ b/Source/wtf/PartitionAlloc.cpp
@@ -112,6 +112,7 @@ static void parititonAllocBaseInit(PartitionRootBase* root)
spinLockUnlock(&PartitionRootBase::gInitializedLock);
root->initialized = true;
+ root->totalSizeOfNonFreePages = 0;
Chris Evans 2014/06/06 18:30:50 I think we should name this totalSizeOfCommittedPa
kouhei (in TOK) 2014/06/09 05:48:22 Done.
root->totalSizeOfSuperPages = 0;
root->nextSuperPage = 0;
root->nextPartitionPage = 0;
@@ -314,6 +315,7 @@ static ALWAYS_INLINE void* partitionAllocPartitionPages(PartitionRootBase* root,
ASSERT(!(reinterpret_cast<uintptr_t>(root->nextPartitionPageEnd) % kPartitionPageSize));
RELEASE_ASSERT(numPartitionPages <= kNumPartitionPagesPerSuperPage);
size_t totalSize = kPartitionPageSize * numPartitionPages;
+ root->totalSizeOfNonFreePages += totalSize;
size_t numPartitionPagesLeft = (root->nextPartitionPageEnd - root->nextPartitionPage) >> kPartitionPageShift;
if (LIKELY(numPartitionPagesLeft >= numPartitionPages)) {
// In this case, we can still hand out pages from the current super page
@@ -675,7 +677,9 @@ void* partitionAllocSlowPath(PartitionRootBase* root, int flags, size_t size, Pa
ASSERT(newPage->freeCacheIndex == -1);
bucket->freePagesHead = newPage->nextPage;
void* addr = partitionPageToPointer(newPage);
- recommitSystemPages(addr, newPage->bucket->numSystemPagesPerSlotSpan * kSystemPageSize);
+ size_t commitSize = newPage->bucket->numSystemPagesPerSlotSpan * kSystemPageSize;
+ recommitSystemPages(addr, commitSize);
+ root->totalSizeOfNonFreePages += commitSize;
Chris Evans 2014/06/06 18:30:50 I think this is the right model: adjusting the H
kouhei (in TOK) 2014/06/09 05:48:22 Done. I added partition{Re,De}commitPages wrapper
} else {
// Third. If we get here, we need a brand new page.
size_t numPartitionPages = partitionBucketPartitionPages(bucket);
@@ -710,6 +714,10 @@ static ALWAYS_INLINE void partitionFreePage(PartitionPage* page)
static ALWAYS_INLINE void partitionRegisterEmptyPage(PartitionPage* page)
{
PartitionRootBase* root = partitionPageToRoot(page);
+ size_t pageSize = page->bucket->numSystemPagesPerSlotSpan * kSystemPageSize;
+ ASSERT(root->totalSizeOfNonFreePages > pageSize);
+ root->totalSizeOfNonFreePages -= pageSize;
Chris Evans 2014/06/06 18:30:50 I do not think this is the correct place to do thi
kouhei (in TOK) 2014/06/09 05:48:22 Removed this, and moved counter decrement into par
+
// If the page is already registered as empty, give it another life.
if (page->freeCacheIndex != -1) {
ASSERT(page->freeCacheIndex >= 0);
@@ -757,7 +765,7 @@ void partitionFreeSlowPath(PartitionPage* page)
partitionDirectUnmap(page);
return;
}
- // If it's the current page, attempt to change it. We'd prefer to leave
+ // If it's the current active page, attempt to change it. We'd prefer to leave
// the page empty as a gentle force towards defragmentation.
if (LIKELY(page == bucket->activePagesHead) && page->nextPage) {
if (partitionSetNewActivePage(page->nextPage)) {
« Source/platform/Partitions.h ('K') | « Source/web/WebKit.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698