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

Unified Diff: Source/platform/heap/Heap.h

Issue 875503003: Allow Oilpan heap objects account for their external allocations. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Adjust urgent GC limits + rebase Created 5 years, 10 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
Index: Source/platform/heap/Heap.h
diff --git a/Source/platform/heap/Heap.h b/Source/platform/heap/Heap.h
index 66dedb0b733fc1c1acc42e3ff989cb40111266d1..2a5380cd94ffd86475536ed09ad7ac725d32effb 100644
--- a/Source/platform/heap/Heap.h
+++ b/Source/platform/heap/Heap.h
@@ -990,8 +990,25 @@ public:
static void increaseAllocatedSpace(size_t delta) { atomicAdd(&s_allocatedSpace, static_cast<long>(delta)); }
static void decreaseAllocatedSpace(size_t delta) { atomicSubtract(&s_allocatedSpace, static_cast<long>(delta)); }
static size_t allocatedSpace() { return acquireLoad(&s_allocatedSpace); }
+
static double estimatedMarkingTime();
+ // On object allocation, register its externally allocated memory.
+ static void increaseExternallyAllocatedBytes(size_t);
+ static size_t externallyAllocatedBytes() { return acquireLoad(&s_externallyAllocatedBytes); }
+
+ // On object tracing, register its externally allocated memory (as still live.)
+ static void increaseExternallyAllocatedBytesAlive(size_t delta)
+ {
+ ASSERT(ThreadState::current()->isInGC());
+ s_externallyAllocatedBytesAlive += delta;
+ }
+ static size_t externallyAllocatedBytesAlive() { return s_externallyAllocatedBytesAlive; }
+
+ static void requestUrgentGC() { releaseStore(&s_requestedUrgentGC, 1); }
+ static void clearUrgentGC() { releaseStore(&s_requestedUrgentGC, 0); }
+ static bool isGCUrgentlyRequested() { return acquireLoad(&s_requestedUrgentGC); }
haraken 2015/02/19 23:47:44 isUrgentGCRequested ?
sof 2015/02/20 09:33:49 It would permutedly express the exact same, but wh
+
private:
// A RegionTree is a simple binary search tree of PageMemoryRegions sorted
// by base addresses.
@@ -1012,8 +1029,8 @@ private:
RegionTree* m_right;
};
- static void resetAllocatedObjectSize() { ASSERT(ThreadState::current()->isInGC()); s_allocatedObjectSize = 0; }
- static void resetMarkedObjectSize() { ASSERT(ThreadState::current()->isInGC()); s_markedObjectSize = 0; }
+ // Reset counters that track live and allocated-since-last-GC sizes.
+ static void resetHeapCounters();
static Visitor* s_markingVisitor;
static CallbackStack* s_markingStack;
@@ -1029,6 +1046,10 @@ private:
static size_t s_allocatedSpace;
static size_t s_allocatedObjectSize;
static size_t s_markedObjectSize;
+ static size_t s_externallyAllocatedBytes;
+ static size_t s_externallyAllocatedBytesAlive;
+ static unsigned s_requestedUrgentGC;
+
friend class ThreadState;
};

Powered by Google App Engine
This is Rietveld 408576698