5#ifndef V8_HEAP_MINOR_MARK_SWEEP_INL_H_
6#define V8_HEAP_MINOR_MARK_SWEEP_INL_H_
38template <
typename TSlot>
42 if (root == Root::kStackRoots) {
43 for (TSlot slot =
start; slot <
end; ++slot) {
51 for (TSlot slot =
start; slot <
end; ++slot) {
61template <
typename Visitor>
63 Visitor* visitor, std::optional<size_t>& index) {
65 std::memory_order_relaxed) == 0) {
71 if (work_item.TryAcquire()) {
73 1, std::memory_order_relaxed);
74 work_item.Process(visitor);
80 if (!index)
return false;
84template <
typename Visitor>
94template <
typename Visitor>
98 "MarkingItem::MarkUntypedPointers");
100 return CheckAndMarkObject(visitor, slot);
103 const auto slot_count =
106 if (slot_count == 0) {
111 if (background_slot_set_) {
112 const auto slot_count =
116 if (slot_count == 0) {
118 background_slot_set_ =
nullptr;
123template <
typename Visitor>
127 "MarkingItem::MarkTypedPointers");
134 heap(), slot_type, slot_address);
136 return CheckAndMarkObject(visitor, slot);
138 if (slot_count == 0) {
139 delete typed_slot_set_;
140 typed_slot_set_ =
nullptr;
144template <
typename Visitor,
typename TSlot>
147 Visitor* visitor, TSlot slot) {
149 std::is_same<TSlot, FullMaybeObjectSlot>::value ||
150 std::is_same<TSlot, MaybeObjectSlot>::value,
151 "Only FullMaybeObjectSlot and MaybeObjectSlot are expected here");
152 return visitor->VisitObjectViaSlotInRememberedSet(slot) ? KEEP_SLOT
static void Delete(BasicSlotSet *slot_set)
std::optional< size_t > GetNext()
static int IterateTyped(MutablePageMetadata *chunk, Callback callback)
static Tagged< HeapObject > GetTargetObject(Heap *heap, SlotType slot_type, Address addr)
V8_INLINE bool VisitObjectViaSlot(TSlot slot)
void Process(Visitor *visitor)
void MarkTypedPointers(Visitor *visitor)
void MarkUntypedPointers(Visitor *visitor)
const SlotsType slots_type_
V8_INLINE SlotCallbackResult CheckAndMarkObject(Visitor *visitor, TSlot slot)
bool ProcessNextItem(Visitor *visitor, std::optional< size_t > &index)
IndexGenerator remembered_sets_marking_index_generator_
std::vector< MarkingItem > remembered_sets_marking_items_
std::atomic_size_t remaining_remembered_sets_marking_items_
V8_INLINE void VisitRootPointers(Root root, const char *description, FullObjectSlot start, FullObjectSlot end) final
V8_INLINE void VisitRootPointer(Root root, const char *description, FullObjectSlot p) final
YoungGenerationMainMarkingVisitor *const main_marking_visitor_
void VisitPointersImpl(Root root, TSlot start, TSlot end)
MutablePageMetadata * chunk_
#define DCHECK_NOT_NULL(val)
#define TRACE_EVENT0(category_group, name)
#define TRACE_DISABLED_BY_DEFAULT(name)