| Index: third_party/WebKit/Source/platform/heap/HeapPage.h
|
| diff --git a/third_party/WebKit/Source/platform/heap/HeapPage.h b/third_party/WebKit/Source/platform/heap/HeapPage.h
|
| index c401c9ef6d5fa72d66501e6c52b82349992c73b2..233d8de17c9cb4174737b57a8ccbdaa53ae04d81 100644
|
| --- a/third_party/WebKit/Source/platform/heap/HeapPage.h
|
| +++ b/third_party/WebKit/Source/platform/heap/HeapPage.h
|
| @@ -354,6 +354,13 @@ inline bool isPageHeaderAddress(Address address) {
|
| return !((reinterpret_cast<uintptr_t>(address) & blinkPageOffsetMask) -
|
| blinkGuardPageSize);
|
| }
|
| +
|
| +// Callback used for unit testing the marking of conservative pointers
|
| +// (checkAndMarkPointer().) For each pointer that has been discovered
|
| +// to point to a heap object, the callback is invoked with a pointer
|
| +// to its header. If the callback returns |true|, the object will not
|
| +// be marked.
|
| +using MarkedPointerCallbackForTesting = bool (*)(HeapObjectHeader*);
|
| #endif
|
|
|
| // BasePage is a base class for NormalPage and LargeObjectPage.
|
| @@ -408,6 +415,11 @@ class BasePage {
|
| // conservatively mark all objects that could be referenced from
|
| // the stack.
|
| virtual void checkAndMarkPointer(Visitor*, Address) = 0;
|
| +#if DCHECK_IS_ON()
|
| + virtual void checkAndMarkPointer(Visitor*,
|
| + Address,
|
| + MarkedPointerCallbackForTesting) = 0;
|
| +#endif
|
| virtual void markOrphaned();
|
|
|
| class HeapSnapshotInfo {
|
| @@ -489,6 +501,11 @@ class NormalPage final : public BasePage {
|
| void poisonUnmarkedObjects() override;
|
| #endif
|
| void checkAndMarkPointer(Visitor*, Address) override;
|
| +#if DCHECK_IS_ON()
|
| + void checkAndMarkPointer(Visitor*,
|
| + Address,
|
| + MarkedPointerCallbackForTesting) override;
|
| +#endif
|
| void markOrphaned() override;
|
|
|
| void takeSnapshot(base::trace_event::MemoryAllocatorDump*,
|
| @@ -567,6 +584,11 @@ class LargeObjectPage final : public BasePage {
|
| void poisonUnmarkedObjects() override;
|
| #endif
|
| void checkAndMarkPointer(Visitor*, Address) override;
|
| +#if DCHECK_IS_ON()
|
| + void checkAndMarkPointer(Visitor*,
|
| + Address,
|
| + MarkedPointerCallbackForTesting) override;
|
| +#endif
|
| void markOrphaned() override;
|
|
|
| void takeSnapshot(base::trace_event::MemoryAllocatorDump*,
|
|
|