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; |
}; |