v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::ConcurrentUnifiedHeapMarkingVisitor Class Reference

#include <unified-heap-marking-visitor.h>

Inheritance diagram for v8::internal::ConcurrentUnifiedHeapMarkingVisitor:
Collaboration diagram for v8::internal::ConcurrentUnifiedHeapMarkingVisitor:

Public Member Functions

 ConcurrentUnifiedHeapMarkingVisitor (HeapBase &, Heap *, cppgc::internal::ConcurrentMarkingState &, CppHeap::CollectionType)
 
 ~ConcurrentUnifiedHeapMarkingVisitor () override
 
- Public Member Functions inherited from v8::internal::UnifiedHeapMarkingVisitorBase
 UnifiedHeapMarkingVisitorBase (HeapBase &, cppgc::internal::BasicMarkingState &, UnifiedHeapMarkingState &)
 
 ~UnifiedHeapMarkingVisitorBase () override=default
 
- Public Member Functions inherited from v8::JSVisitor
 JSVisitor (cppgc::Visitor::Key key)
 
 ~JSVisitor () override=default
 
void Trace (const TracedReferenceBase &ref)
 
- Public Member Functions inherited from cppgc::Visitor
 Visitor (Key)
 
virtual ~Visitor ()=default
 
template<typename T >
void Trace (const Member< T > &member)
 
template<typename T >
void Trace (const WeakMember< T > &weak_member)
 
template<typename T >
void TraceMultiple (const subtle::UncompressedMember< T > *start, size_t len)
 
template<typename T , std::enable_if_t<!std::is_same_v< Member< T >, subtle::UncompressedMember< T > > > * = nullptr>
void TraceMultiple (const Member< T > *start, size_t len)
 
template<typename T >
void Trace (const T &object)
 
template<typename T >
void TraceMultiple (const T *start, size_t len)
 
template<typename T , void(T::*)(const LivenessBroker &) method>
void RegisterWeakCallbackMethod (const T *object)
 
template<typename K , typename V >
void Trace (const EphemeronPair< K, V > &ephemeron_pair)
 
template<typename KeyType , typename ValueType >
void TraceEphemeron (const WeakMember< KeyType > &weak_member_key, const Member< ValueType > *member_value)
 
template<typename KeyType , typename ValueType >
void TraceEphemeron (const WeakMember< KeyType > &weak_member_key, const ValueType *value)
 
template<typename T >
void TraceStrongly (const WeakMember< T > &weak_member)
 
template<typename T >
void TraceStrongContainer (const T *object)
 
template<typename T >
void TraceWeakContainer (const T *object, WeakCallback callback, const void *callback_data)
 
template<typename T >
void RegisterMovableReference (const T **slot)
 

Protected Member Functions

bool DeferTraceToMutatorThreadIfConcurrent (const void *, cppgc::TraceCallback, size_t) final
 
- Protected Member Functions inherited from v8::internal::UnifiedHeapMarkingVisitorBase
void Visit (const void *, TraceDescriptor) final
 
void VisitMultipleUncompressedMember (const void *, size_t, TraceDescriptorCallback) final
 
void VisitWeak (const void *, TraceDescriptor, WeakCallback, const void *) final
 
void VisitEphemeron (const void *, const void *, TraceDescriptor) final
 
void VisitWeakContainer (const void *self, TraceDescriptor strong_desc, TraceDescriptor weak_desc, WeakCallback callback, const void *data) final
 
void RegisterWeakCallback (WeakCallback, const void *) final
 
void HandleMovableReference (const void **) final
 
void Visit (const TracedReferenceBase &ref) override
 
- Protected Member Functions inherited from v8::JSVisitor
- Protected Member Functions inherited from cppgc::Visitor

Private Attributes

std::unique_ptr< MarkingWorklists::Locallocal_marking_worklist_
 
UnifiedHeapMarkingState concurrent_unified_heap_marking_state_
 

Additional Inherited Members

- Protected Attributes inherited from v8::internal::UnifiedHeapMarkingVisitorBase
cppgc::internal::BasicMarkingStatemarking_state_
 
UnifiedHeapMarkingStateunified_heap_marking_state_
 

Detailed Description

Definition at line 77 of file unified-heap-marking-visitor.h.

Constructor & Destructor Documentation

◆ ConcurrentUnifiedHeapMarkingVisitor()

v8::internal::ConcurrentUnifiedHeapMarkingVisitor::ConcurrentUnifiedHeapMarkingVisitor ( HeapBase & heap,
Heap * v8_heap,
cppgc::internal::ConcurrentMarkingState & marking_state,
CppHeap::CollectionType collection_type )

Definition at line 114 of file unified-heap-marking-visitor.cc.

Here is the call graph for this function:

◆ ~ConcurrentUnifiedHeapMarkingVisitor()

v8::internal::ConcurrentUnifiedHeapMarkingVisitor::~ConcurrentUnifiedHeapMarkingVisitor ( )
override

Definition at line 131 of file unified-heap-marking-visitor.cc.

Member Function Documentation

◆ DeferTraceToMutatorThreadIfConcurrent()

bool v8::internal::ConcurrentUnifiedHeapMarkingVisitor::DeferTraceToMutatorThreadIfConcurrent ( const void * parameter,
cppgc::TraceCallback callback,
size_t deferred_size )
finalprotectedvirtual

Defers tracing an object from a concurrent thread to the mutator thread. Should be called by Trace methods of types that are not safe to trace concurrently.

Parameters
parametertells the trace callback which object was deferred.
callbackto be invoked for tracing on the mutator thread.
deferred_sizesize of deferred object.
Returns
false if the object does not need to be deferred (i.e. currently traced on the mutator thread) and true otherwise (i.e. currently traced on a concurrent thread).

Reimplemented from cppgc::Visitor.

Definition at line 140 of file unified-heap-marking-visitor.cc.

Here is the call graph for this function:

Member Data Documentation

◆ concurrent_unified_heap_marking_state_

UnifiedHeapMarkingState v8::internal::ConcurrentUnifiedHeapMarkingVisitor::concurrent_unified_heap_marking_state_
private

Definition at line 96 of file unified-heap-marking-visitor.h.

◆ local_marking_worklist_

std::unique_ptr<MarkingWorklists::Local> v8::internal::ConcurrentUnifiedHeapMarkingVisitor::local_marking_worklist_
private

Definition at line 95 of file unified-heap-marking-visitor.h.


The documentation for this class was generated from the following files: