21class ReferenceSummarizerMarkingState final {
28 ~ReferenceSummarizerMarkingState() {
39 ReferenceSummary DestructivelyRetrieveReferences() {
40 ReferenceSummary tmp = std::move(references_);
53 AddReference(host, obj,
references_.strong_references());
61 AddReference(host, obj,
references_.weak_references());
66 MarkingWorklists::Local* local_marking_worklists() {
77 if (host == primary_object_) {
78 references.insert(obj);
90class ReferenceSummarizerMarkingVisitor
91 :
public MarkingVisitorBase<ReferenceSummarizerMarkingVisitor> {
93 ReferenceSummarizerMarkingVisitor(
94 Heap*
heap, ReferenceSummarizerMarkingState* marking_state)
95 : MarkingVisitorBase(marking_state->local_marking_worklists(),
96 marking_state->local_weak_objects(),
heap,
102 template <
typename TSlot>
109 V8_INLINE void AddStrongReferenceForReferenceSummarizer(
111 marking_state_->AddStrongReferenceForReferenceSummarizer(host, obj);
114 V8_INLINE void AddWeakReferenceForReferenceSummarizer(
116 marking_state_->AddWeakReferenceForReferenceSummarizer(host, obj);
119 constexpr bool CanUpdateValuesInHeap() {
return false; }
121 ReferenceSummarizerMarkingState* marking_state()
const {
126 IndirectPointerSlot slot) {}
129 ExternalPointerSlot slot)
override {}
131 CppHeapPointerSlot slot)
override {}
143 ReferenceSummarizerMarkingState marking_state(obj);
145 ReferenceSummarizerMarkingVisitor visitor(
heap, &marking_state);
146 visitor.Visit(obj->map(
heap->isolate()), obj);
148 return marking_state.DestructivelyRetrieveReferences();
std::unordered_set< Tagged< HeapObject >, Object::Hasher, Object::KeyEqualSafe > UnorderedHeapObjectSet
static ReferenceSummary SummarizeReferencesFrom(Heap *heap, Tagged< HeapObject > obj)
NonAtomicMarkingState * marking_state_
V8_INLINE IndirectHandle< T > handle(Tagged< T > object, Isolate *isolate)
Tagged(T object) -> Tagged< T >
kInterpreterTrampolineOffset Tagged< HeapObject >
base::StrongAlias< JSDispatchHandleAliasTag, uint32_t > JSDispatchHandle
MarkingWorklists::Local local_marking_worklists_
MarkingWorklists marking_worklists_
ReferenceSummary references_
Tagged< HeapObject > primary_object_
WeakObjects weak_objects_
WeakObjects::Local local_weak_objects_