5#ifndef V8_HEAP_MARK_SWEEP_UTILITIES_H_
6#define V8_HEAP_MARK_SWEEP_UTILITIES_H_
23class MarkingVerifierBase :
public ObjectVisitorWithCageBases,
26 virtual void Run() = 0;
29 explicit MarkingVerifierBase(Heap*
heap);
31 virtual const MarkingBitmap* bitmap(
const MutablePageMetadata* chunk) = 0;
33 virtual void VerifyMap(Tagged<Map> map) = 0;
34 virtual void VerifyPointers(ObjectSlot
start, ObjectSlot
end) = 0;
35 virtual void VerifyPointers(MaybeObjectSlot
start, MaybeObjectSlot
end) = 0;
36 virtual void VerifyCodePointer(InstructionStreamSlot slot) = 0;
37 virtual void VerifyRootPointers(FullObjectSlot
start, FullObjectSlot
end) = 0;
39 virtual bool IsMarked(Tagged<HeapObject>
object) = 0;
41 void VisitPointers(Tagged<HeapObject> host, ObjectSlot
start,
42 ObjectSlot
end)
override {
46 void VisitPointers(Tagged<HeapObject> host, MaybeObjectSlot
start,
47 MaybeObjectSlot
end)
override {
51 void VisitInstructionStreamPointer(Tagged<Code> host,
52 InstructionStreamSlot slot)
override {
53 VerifyCodePointer(slot);
56 void VisitRootPointers(Root root,
const char* description,
57 FullObjectSlot
start, FullObjectSlot
end)
override {
61 void VisitMapPointer(Tagged<HeapObject>
object)
override;
64 void VerifyMarkingOnPage(
const PageMetadata* page, Address
start,
66 void VerifyMarking(NewSpace* new_space);
67 void VerifyMarking(PagedSpaceBase* paged_space);
68 void VerifyMarking(LargeObjectSpace* lo_space);
75template <ExternalStringTableCleaningMode mode>
107void VerifyRememberedSetsAfterEvacuation(
Heap*
heap,
ExternalStringTableCleanerVisitor(Heap *heap)
void VisitRootPointers(Root root, const char *description, FullObjectSlot start, FullObjectSlot end) final
NonAtomicMarkingState *const marking_state_
void DisposeExternalResource(StringForwardingTable::Record *record)
std::unordered_set< Address > disposed_resources_
StringForwardingTableCleanerBase(Heap *heap)
bool IsCppHeapMarkingFinished(Heap *heap, MarkingWorklists::Local *local_marking_worklists)
ExternalStringTableCleaningMode