| Index: third_party/WebKit/Source/platform/heap/Heap.h
|
| diff --git a/third_party/WebKit/Source/platform/heap/Heap.h b/third_party/WebKit/Source/platform/heap/Heap.h
|
| index b02aa40e4b2e6110da6cbba0741dca57fb291d54..6b649f90bce3dfb84fccb14cc79e42ad58b11973 100644
|
| --- a/third_party/WebKit/Source/platform/heap/Heap.h
|
| +++ b/third_party/WebKit/Source/platform/heap/Heap.h
|
| @@ -81,6 +81,7 @@ class PLATFORM_EXPORT HeapAllocHooks {
|
| };
|
|
|
| class CrossThreadPersistentRegion;
|
| +class HeapCompact;
|
| template <typename T>
|
| class Member;
|
| template <typename T>
|
| @@ -381,6 +382,32 @@ class PLATFORM_EXPORT ThreadHeap {
|
| bool weakTableRegistered(const void*);
|
| #endif
|
|
|
| + // Heap compaction registration methods:
|
| +
|
| + // Register |slot| as containing a reference to a movable heap object.
|
| + //
|
| + // When compaction moves the object pointed to by |*slot| to |newAddress|,
|
| + // |*slot| must be updated to hold |newAddress| instead.
|
| + void registerMovingObjectReference(MovableReference*);
|
| +
|
| + // Register a callback to be invoked upon moving the object starting at
|
| + // |reference|; see |MovingObjectCallback| documentation for details.
|
| + //
|
| + // This callback mechanism is needed to account for backing store objects
|
| + // containing intra-object pointers, all of which must be relocated/rebased
|
| + // to be done wrt the moved-to location.
|
| + //
|
| + // For Blink, |LinkedHashSet<>| is currently the only abstraction which
|
| + // relies on this feature.
|
| + void registerMovingObjectCallback(MovableReference,
|
| + MovingObjectCallback,
|
| + void* callbackData);
|
| +
|
| + // Register an external relocation; when |*slot| is compacted and moved,
|
| + // |slot| must be updated to point to |*slot|'s new location;
|
| + // see HeapCompact::registerRelocation.
|
| + void registerRelocation(MovableReference* slot);
|
| +
|
| BlinkGC::GCReason lastGCReason() { return m_lastGCReason; }
|
| RegionTree* getRegionTree() { return m_regionTree.get(); }
|
|
|
| @@ -438,6 +465,8 @@ class PLATFORM_EXPORT ThreadHeap {
|
| static void reportMemoryUsageHistogram();
|
| static void reportMemoryUsageForTracing();
|
|
|
| + HeapCompact* compaction();
|
| +
|
| private:
|
| // Reset counters that track live and allocated-since-last-GC sizes.
|
| void resetHeapCounters();
|
| @@ -463,6 +492,8 @@ class PLATFORM_EXPORT ThreadHeap {
|
| BlinkGC::GCReason m_lastGCReason;
|
| StackFrameDepth m_stackFrameDepth;
|
|
|
| + std::unique_ptr<HeapCompact> m_compaction;
|
| +
|
| static ThreadHeap* s_mainThreadHeap;
|
|
|
| friend class ThreadState;
|
|
|