| Index: Source/platform/heap/Heap.h
|
| diff --git a/Source/platform/heap/Heap.h b/Source/platform/heap/Heap.h
|
| index 5bd5addd0d4027a38ae0463c9cf356c07053c2a5..9894c769c7a152ed0ff1e18702b60db3ce9f97fd 100644
|
| --- a/Source/platform/heap/Heap.h
|
| +++ b/Source/platform/heap/Heap.h
|
| @@ -1021,26 +1021,11 @@ public:
|
| static size_t allocatedSpace() { return acquireLoad(&s_allocatedSpace); }
|
| static size_t estimatedLiveObjectSize() { return acquireLoad(&s_estimatedLiveObjectSize); }
|
| static void setEstimatedLiveObjectSize(size_t size) { releaseStore(&s_estimatedLiveObjectSize, size); }
|
| + static size_t externalObjectSizeAtLastGC() { return acquireLoad(&s_externalObjectSizeAtLastGC); }
|
|
|
| static double estimatedMarkingTime();
|
| static void reportMemoryUsageHistogram();
|
|
|
| - // On object allocation, register the object's externally allocated memory.
|
| - static void increaseExternallyAllocatedBytes(size_t);
|
| - static size_t externallyAllocatedBytes() { return acquireLoad(&s_externallyAllocatedBytes); }
|
| -
|
| - // On object tracing, register the object's 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();
|
| - static void clearUrgentGC() { releaseStore(&s_requestedUrgentGC, 0); }
|
| - static bool isUrgentGCRequested() { return acquireLoad(&s_requestedUrgentGC); }
|
| -
|
| private:
|
| // A RegionTree is a simple binary search tree of PageMemoryRegions sorted
|
| // by base addresses.
|
| @@ -1079,9 +1064,7 @@ private:
|
| static size_t s_allocatedObjectSize;
|
| static size_t s_markedObjectSize;
|
| static size_t s_estimatedLiveObjectSize;
|
| - static size_t s_externallyAllocatedBytes;
|
| - static size_t s_externallyAllocatedBytesAlive;
|
| - static unsigned s_requestedUrgentGC;
|
| + static size_t s_externalObjectSizeAtLastGC;
|
| static double s_estimatedMarkingTimePerByte;
|
|
|
| friend class ThreadState;
|
| @@ -1478,28 +1461,6 @@ Address Heap::reallocate(void* previous, size_t size)
|
| return address;
|
| }
|
|
|
| -inline void Heap::increaseExternallyAllocatedBytes(size_t delta)
|
| -{
|
| - // Flag GC urgency on a 50% increase in external allocation
|
| - // since the last GC, but not for less than 100M.
|
| - //
|
| - // FIXME: consider other, 'better' policies (e.g., have the count of
|
| - // heap objects with external allocations be taken into
|
| - // account, ...) The overall goal here is to trigger a
|
| - // GC such that it considerably lessens memory pressure
|
| - // for a renderer process, when absolutely needed.
|
| - size_t externalBytesAllocatedSinceLastGC = atomicAdd(&s_externallyAllocatedBytes, static_cast<long>(delta));
|
| - if (LIKELY(externalBytesAllocatedSinceLastGC < 100 * 1024 * 1024))
|
| - return;
|
| -
|
| - if (UNLIKELY(isUrgentGCRequested()))
|
| - return;
|
| -
|
| - size_t externalBytesAliveAtLastGC = externallyAllocatedBytesAlive();
|
| - if (UNLIKELY(externalBytesAllocatedSinceLastGC > externalBytesAliveAtLastGC / 2))
|
| - Heap::requestUrgentGC();
|
| -}
|
| -
|
| template<bool needsTracing, WTF::WeakHandlingFlag weakHandlingFlag, WTF::ShouldWeakPointersBeMarkedStrongly strongify, typename T, typename Traits> struct CollectionBackingTraceTrait;
|
| template<typename T, typename Traits = WTF::VectorTraits<T>> class HeapVectorBacking;
|
| template<typename Table> class HeapHashTableBacking {
|
|
|