5#ifndef V8_HEAP_YOUNG_GENERATION_MARKING_VISITOR_H_
6#define V8_HEAP_YOUNG_GENERATION_MARKING_VISITOR_H_
21template <YoungGenerationMarkingVisitationMode marking_mode>
72 template <
typename T,
typename TBodyDescriptor =
typename T::BodyDescriptor>
80#ifdef V8_COMPRESS_POINTERS
91 template <
typename TSlot>
115 template <
typename TSlot>
119#ifdef V8_MINORMS_STRING_SHORTCUTTING
128 std::array<std::pair<MutablePageMetadata*, size_t>,
kNumEntries>
static V8_ALLOW_UNUSED MarkBit From(Address)
virtual void VisitExternalPointer(Tagged< HeapObject > host, ExternalPointerSlot slot)
std::unordered_map< Tagged< AllocationSite >, size_t, Object::Hasher > PretenuringFeedbackMap
YoungGenerationMarkingVisitor(Heap *heap, PretenuringHandler::PretenuringFeedbackMap *local_pretenuring_feedback)
~YoungGenerationMarkingVisitor() override
V8_INLINE void VisitPointersImpl(Tagged< HeapObject > host, TSlot start, TSlot end)
PretenuringHandler::PretenuringFeedbackMap *const local_pretenuring_feedback_
MarkingWorklists::Local & marking_worklists_local()
V8_INLINE void VisitPointers(Tagged< HeapObject > host, ObjectSlot start, ObjectSlot end) final
V8_INLINE bool VisitObjectViaSlot(TSlot slot)
bool TryMark(Tagged< HeapObject > obj)
const bool shortcut_strings_
EphemeronRememberedSet::TableList::Local ephemeron_table_list_local_
V8_INLINE void VisitCppHeapPointer(Tagged< HeapObject > host, CppHeapPointerSlot slot) override
static V8_INLINE constexpr bool CanEncounterFillerOrFreeSpace()
std::array< std::pair< MutablePageMetadata *, size_t >, kNumEntries > live_bytes_data_
V8_INLINE size_t VisitJSObjectSubclass(Tagged< Map > map, Tagged< T > object, MaybeObjectSize)
V8_INLINE void VisitPointer(Tagged< HeapObject > host, MaybeObjectSlot p) final
V8_INLINE size_t VisitEphemeronHashTable(Tagged< Map > map, Tagged< EphemeronHashTable > table, MaybeObjectSize)
YoungGenerationMarkingVisitor & operator=(const YoungGenerationMarkingVisitor &)=delete
static constexpr size_t kEntriesMask
static constexpr size_t kNumEntries
V8_INLINE void VisitPointer(Tagged< HeapObject > host, ObjectSlot p) final
V8_INLINE void VisitPointers(Tagged< HeapObject > host, MaybeObjectSlot start, MaybeObjectSlot end) final
MarkingWorklists::Local marking_worklists_local_
YoungGenerationMarkingVisitor(const YoungGenerationMarkingVisitor &)=delete
static constexpr bool EnableConcurrentVisitation()
V8_INLINE bool VisitObjectViaSlotInRememberedSet(TSlot slot)
V8_INLINE void IncrementLiveBytesCached(MutablePageMetadata *chunk, intptr_t by)
V8_INLINE size_t VisitJSArrayBuffer(Tagged< Map > map, Tagged< JSArrayBuffer > object, MaybeObjectSize)
PretenuringHandler *const pretenuring_handler_
YoungGenerationMarkingVisitationMode