18std::unique_ptr<MarkingWorklists::Local> GetV8MarkingWorklists(
23 ?
heap->mark_compact_collector()->marking_worklists()
24 :
heap->minor_mark_sweep_collector()->marking_worklists();
25 return std::make_unique<MarkingWorklists::Local>(worklist);
34 unified_heap_marking_state_(unified_heap_marking_state) {}
42 const void*
start,
size_t len,
44 const char* it =
static_cast<const char*
>(
start);
50 if (!
object)
continue;
56#if defined(CPPGC_POINTER_COMPRESSION)
58void UnifiedHeapMarkingVisitorBase::VisitMultipleCompressedMember(
59 const void*
start,
size_t len,
61 const char* it =
static_cast<const char*
>(
start);
62 const char*
end = it + len * cppgc::internal::kSizeofCompressedMember;
63 for (; it <
end; it += cppgc::internal::kSizeofCompressedMember) {
65 reinterpret_cast<const cppgc::internal::CompressedPointer*
>(it);
66 const void*
object = current->LoadAtomic();
67 if (!
object)
continue;
78 const void* weak_member) {
112 unified_heap_marking_state) {}
119 concurrent_unified_heap_marking_state_),
120 local_marking_worklist_(GetV8MarkingWorklists(v8_heap, collection_type)),
121 concurrent_unified_heap_marking_state_(
122 v8_heap, local_marking_worklist_.get(), collection_type) {
123#ifdef V8_COMPRESS_POINTERS_IN_MULTIPLE_CAGES
135#ifdef V8_COMPRESS_POINTERS_IN_MULTIPLE_CAGES
136 IsolateGroup::set_current(saved_isolate_group_);
142 size_t deferred_size) {
144 {parameter,
callback, deferred_size});
146 .AccountDeferredMarkedBytes(
static BasePage * FromPayload(void *)
void RegisterWeakCustomCallback(WeakCallback, const void *)
MarkingWorklists::ConcurrentMarkingBailoutWorklist::Local & concurrent_marking_bailout_worklist()
void RegisterWeakReferenceIfNeeded(const void *, TraceDescriptor, WeakCallback, const void *)
void RegisterMovableReference(const void **slot)
void ProcessEphemeron(const void *, const void *, TraceDescriptor, Visitor &)
void ProcessWeakContainer(const void *, TraceDescriptor, WeakCallback, const void *)
void MarkAndPush(const void *, TraceDescriptor)
V8_INLINE const void * LoadAtomic() const
std::unique_ptr< MarkingWorklists::Local > local_marking_worklist_
~ConcurrentUnifiedHeapMarkingVisitor() override
bool DeferTraceToMutatorThreadIfConcurrent(const void *, cppgc::TraceCallback, size_t) final
ConcurrentUnifiedHeapMarkingVisitor(HeapBase &, Heap *, cppgc::internal::ConcurrentMarkingState &, CppHeap::CollectionType)
Isolate * isolate() const
static IsolateGroup * current()
IsolateGroup * isolate_group() const
MutatorUnifiedHeapMarkingVisitor(HeapBase &, MutatorMarkingState &, UnifiedHeapMarkingState &)
V8_INLINE void MarkAndPush(const TracedReferenceBase &)
UnifiedHeapMarkingVisitorBase(HeapBase &, cppgc::internal::BasicMarkingState &, UnifiedHeapMarkingState &)
UnifiedHeapMarkingState & unified_heap_marking_state_
void HandleMovableReference(const void **) final
void VisitMultipleUncompressedMember(const void *, size_t, TraceDescriptorCallback) final
void RegisterWeakCallback(WeakCallback, const void *) final
void VisitEphemeron(const void *, const void *, TraceDescriptor) final
void Visit(const void *, TraceDescriptor) final
void VisitWeak(const void *, TraceDescriptor, WeakCallback, const void *) final
cppgc::internal::BasicMarkingState & marking_state_
void VisitWeakContainer(const void *self, TraceDescriptor strong_desc, TraceDescriptor weak_desc, WeakCallback callback, const void *data) final
NonAtomicMarkingState * marking_state_
static constexpr size_t kSizeOfUncompressedMember
void(*)(const LivenessBroker &, const void *) WeakCallback
TraceDescriptor(*)(const void *address) TraceDescriptorCallback
void(*)(Visitor *visitor, const void *object) TraceCallback