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

#include <heap-visitor.h>

Inheritance diagram for v8::internal::HeapVisitor< ConcreteVisitor >:
Collaboration diagram for v8::internal::HeapVisitor< ConcreteVisitor >:

Public Member Functions

 HeapVisitor (LocalIsolate *isolate)
 
 HeapVisitor (Isolate *isolate)
 
 HeapVisitor (Heap *heap)
 
V8_INLINE size_t Visit (Tagged< HeapObject > object)
 
V8_INLINE size_t Visit (Tagged< Map > map, Tagged< HeapObject > object)
 
V8_INLINE size_t Visit (Tagged< Map > map, Tagged< HeapObject > object, int object_size)
 
template<typename T >
Tagged< TCast (Tagged< HeapObject > object, const Heap *heap)
 
template<VisitorId visitor_id>
void VisitMapPointerIfNeeded (Tagged< HeapObject > host)
 
template<typename T , typename TBodyDescriptor >
size_t VisitJSObjectSubclass (Tagged< Map > map, Tagged< T > object, MaybeObjectSize maybe_object_size)
 
template<VisitorId visitor_id, typename T , typename TBodyDescriptor >
size_t VisitWithBodyDescriptor (Tagged< Map > map, Tagged< T > object, MaybeObjectSize maybe_object_size)
 
- Public Member Functions inherited from v8::internal::ObjectVisitorWithCageBases
 ObjectVisitorWithCageBases (PtrComprCageBase cage_base, PtrComprCageBase code_cage_base)
 
 ObjectVisitorWithCageBases (Isolate *isolate)
 
 ObjectVisitorWithCageBases (Heap *heap)
 
PtrComprCageBase cage_base () const
 
PtrComprCageBase code_cage_base () const
 
- Public Member Functions inherited from v8::internal::ObjectVisitor
virtual ~ObjectVisitor ()=default
 
virtual void VisitPointers (Tagged< HeapObject > host, ObjectSlot start, ObjectSlot end)=0
 
virtual void VisitPointers (Tagged< HeapObject > host, MaybeObjectSlot start, MaybeObjectSlot end)=0
 
virtual void VisitInstructionStreamPointer (Tagged< Code > host, InstructionStreamSlot slot)=0
 
virtual void VisitCustomWeakPointers (Tagged< HeapObject > host, ObjectSlot start, ObjectSlot end)
 
virtual void VisitPointer (Tagged< HeapObject > host, ObjectSlot p)
 
virtual void VisitPointer (Tagged< HeapObject > host, MaybeObjectSlot p)
 
virtual void VisitCustomWeakPointer (Tagged< HeapObject > host, ObjectSlot p)
 
virtual void VisitEphemeron (Tagged< HeapObject > host, int index, ObjectSlot key, ObjectSlot value)
 
void VisitRelocInfo (Tagged< InstructionStream > host, RelocIterator *it)
 
virtual void VisitCodeTarget (Tagged< InstructionStream > host, RelocInfo *rinfo)
 
virtual void VisitEmbeddedPointer (Tagged< InstructionStream > host, RelocInfo *rinfo)
 
virtual void VisitExternalReference (Tagged< InstructionStream > host, RelocInfo *rinfo)
 
virtual void VisitInternalReference (Tagged< InstructionStream > host, RelocInfo *rinfo)
 
virtual void VisitOffHeapTarget (Tagged< InstructionStream > host, RelocInfo *rinfo)
 
virtual void VisitExternalPointer (Tagged< HeapObject > host, ExternalPointerSlot slot)
 
virtual void VisitCppHeapPointer (Tagged< HeapObject > host, CppHeapPointerSlot slot)
 
virtual void VisitIndirectPointer (Tagged< HeapObject > host, IndirectPointerSlot slot, IndirectPointerMode mode)
 
virtual void VisitProtectedPointer (Tagged< TrustedObject > host, ProtectedPointerSlot slot)
 
virtual void VisitProtectedPointer (Tagged< TrustedObject > host, ProtectedMaybeObjectSlot slot)
 
virtual void VisitTrustedPointerTableEntry (Tagged< HeapObject > host, IndirectPointerSlot slot)
 
virtual void VisitJSDispatchTableEntry (Tagged< HeapObject > host, JSDispatchHandle handle)
 
virtual void VisitMapPointer (Tagged< HeapObject > host)
 

Protected Member Functions

V8_INLINE size_t Visit (Tagged< Map > map, Tagged< HeapObject > object, MaybeObjectSize maybe_object_size)
 
template<VisitorId visitor_id>
V8_INLINE void VisitMapPointerIfNeeded (Tagged< HeapObject > host)
 
ConcreteVisitor * concrete_visitor ()
 
const ConcreteVisitor * concrete_visitor () const
 
V8_INLINE size_t VisitShortcutCandidate (Tagged< Map > map, Tagged< ConsString > object, MaybeObjectSize maybe_object_size)
 
V8_INLINE size_t VisitJSObjectFast (Tagged< Map > map, Tagged< JSObject > object, MaybeObjectSize maybe_object_size)
 
V8_INLINE size_t VisitJSApiObject (Tagged< Map > map, Tagged< JSObject > object, MaybeObjectSize maybe_object_size)
 
V8_INLINE size_t VisitStruct (Tagged< Map > map, Tagged< HeapObject > object, MaybeObjectSize maybe_object_size)
 
V8_INLINE size_t VisitFiller (Tagged< Map > map, Tagged< HeapObject > object, MaybeObjectSize maybe_object_size)
 
V8_INLINE size_t VisitFreeSpace (Tagged< Map > map, Tagged< FreeSpace > object, MaybeObjectSize maybe_object_size)
 
template<typename T , typename TBodyDescriptor = typename T::BodyDescriptor>
V8_INLINE size_t VisitJSObjectSubclass (Tagged< Map > map, Tagged< T > object, MaybeObjectSize maybe_object_size)
 
template<VisitorId visitor_id, typename T , typename TBodyDescriptor = typename T::BodyDescriptor>
V8_INLINE size_t VisitWithBodyDescriptor (Tagged< Map > map, Tagged< T > object, MaybeObjectSize maybe_object_size)
 
template<typename TSlot >
std::optional< Tagged< Object > > GetObjectFilterReadOnlyAndSmiFast (TSlot slot) const
 

Static Protected Member Functions

static V8_INLINE constexpr bool ShouldVisitMapPointer ()
 
static V8_INLINE constexpr bool ShouldVisitReadOnlyMapPointer ()
 
static V8_INLINE constexpr bool CanEncounterFillerOrFreeSpace ()
 
static V8_INLINE constexpr bool ShouldUseUncheckedCast ()
 
static V8_INLINE constexpr bool EnableConcurrentVisitation ()
 
static V8_INLINE constexpr bool UsePrecomputedObjectSize ()
 
static V8_INLINE constexpr bool ShouldVisitFullJSObject ()
 
template<typename T >
static V8_INLINE Tagged< TCast (Tagged< HeapObject > object, const Heap *heap)
 

Protected Attributes

const Heapheap_
 

Detailed Description

template<typename ConcreteVisitor>
class v8::internal::HeapVisitor< ConcreteVisitor >

Definition at line 194 of file heap-visitor.h.

Constructor & Destructor Documentation

◆ HeapVisitor() [1/3]

template<typename ConcreteVisitor >
v8::internal::HeapVisitor< ConcreteVisitor >::HeapVisitor ( LocalIsolate * isolate)
inlineexplicit

Definition at line 73 of file heap-visitor-inl.h.

◆ HeapVisitor() [2/3]

template<typename ConcreteVisitor >
v8::internal::HeapVisitor< ConcreteVisitor >::HeapVisitor ( Isolate * isolate)
inlineexplicit

Definition at line 79 of file heap-visitor-inl.h.

◆ HeapVisitor() [3/3]

template<typename ConcreteVisitor >
v8::internal::HeapVisitor< ConcreteVisitor >::HeapVisitor ( Heap * heap)
inlineexplicit

Definition at line 83 of file heap-visitor-inl.h.

Member Function Documentation

◆ CanEncounterFillerOrFreeSpace()

template<typename ConcreteVisitor >
static V8_INLINE constexpr bool v8::internal::HeapVisitor< ConcreteVisitor >::CanEncounterFillerOrFreeSpace ( )
inlinestaticconstexprprotected

Definition at line 224 of file heap-visitor.h.

◆ Cast() [1/2]

template<typename ConcreteVisitor >
template<typename T >
Tagged< T > v8::internal::HeapVisitor< ConcreteVisitor >::Cast ( Tagged< HeapObject > object,
const Heap * heap )

Definition at line 88 of file heap-visitor-inl.h.

Here is the call graph for this function:

◆ Cast() [2/2]

template<typename ConcreteVisitor >
template<typename T >
static V8_INLINE Tagged< T > v8::internal::HeapVisitor< ConcreteVisitor >::Cast ( Tagged< HeapObject > object,
const Heap * heap )
staticprotected

◆ concrete_visitor() [1/2]

template<typename ConcreteVisitor >
ConcreteVisitor * v8::internal::HeapVisitor< ConcreteVisitor >::concrete_visitor ( )
inlineprotected

Definition at line 246 of file heap-visitor.h.

◆ concrete_visitor() [2/2]

template<typename ConcreteVisitor >
const ConcreteVisitor * v8::internal::HeapVisitor< ConcreteVisitor >::concrete_visitor ( ) const
inlineprotected

Definition at line 250 of file heap-visitor.h.

◆ EnableConcurrentVisitation()

template<typename ConcreteVisitor >
static V8_INLINE constexpr bool v8::internal::HeapVisitor< ConcreteVisitor >::EnableConcurrentVisitation ( )
inlinestaticconstexprprotected

Definition at line 233 of file heap-visitor.h.

◆ GetObjectFilterReadOnlyAndSmiFast()

template<typename ConcreteVisitor >
template<typename TSlot >
std::optional< Tagged< Object > > v8::internal::HeapVisitor< ConcreteVisitor >::GetObjectFilterReadOnlyAndSmiFast ( TSlot slot) const
protected

Definition at line 370 of file heap-visitor-inl.h.

◆ ShouldUseUncheckedCast()

template<typename ConcreteVisitor >
static V8_INLINE constexpr bool v8::internal::HeapVisitor< ConcreteVisitor >::ShouldUseUncheckedCast ( )
inlinestaticconstexprprotected

Definition at line 229 of file heap-visitor.h.

◆ ShouldVisitFullJSObject()

template<typename ConcreteVisitor >
static V8_INLINE constexpr bool v8::internal::HeapVisitor< ConcreteVisitor >::ShouldVisitFullJSObject ( )
inlinestaticconstexprprotected

Definition at line 244 of file heap-visitor.h.

◆ ShouldVisitMapPointer()

template<typename ConcreteVisitor >
static V8_INLINE constexpr bool v8::internal::HeapVisitor< ConcreteVisitor >::ShouldVisitMapPointer ( )
inlinestaticconstexprprotected

Definition at line 216 of file heap-visitor.h.

◆ ShouldVisitReadOnlyMapPointer()

template<typename ConcreteVisitor >
static V8_INLINE constexpr bool v8::internal::HeapVisitor< ConcreteVisitor >::ShouldVisitReadOnlyMapPointer ( )
inlinestaticconstexprprotected

Definition at line 219 of file heap-visitor.h.

◆ UsePrecomputedObjectSize()

template<typename ConcreteVisitor >
static V8_INLINE constexpr bool v8::internal::HeapVisitor< ConcreteVisitor >::UsePrecomputedObjectSize ( )
inlinestaticconstexprprotected

Definition at line 236 of file heap-visitor.h.

◆ Visit() [1/4]

template<typename ConcreteVisitor >
requires (!ConcreteVisitor::UsePrecomputedObjectSize())
size_t v8::internal::HeapVisitor< ConcreteVisitor >::Visit ( Tagged< HeapObject > object)

Definition at line 97 of file heap-visitor-inl.h.

Here is the caller graph for this function:

◆ Visit() [2/4]

template<typename ConcreteVisitor >
requires (!ConcreteVisitor::UsePrecomputedObjectSize())
size_t v8::internal::HeapVisitor< ConcreteVisitor >::Visit ( Tagged< Map > map,
Tagged< HeapObject > object )

Definition at line 104 of file heap-visitor-inl.h.

◆ Visit() [3/4]

template<typename ConcreteVisitor >
requires (ConcreteVisitor::UsePrecomputedObjectSize())
size_t v8::internal::HeapVisitor< ConcreteVisitor >::Visit ( Tagged< Map > map,
Tagged< HeapObject > object,
int object_size )

Definition at line 112 of file heap-visitor-inl.h.

◆ Visit() [4/4]

template<typename ConcreteVisitor >
size_t v8::internal::HeapVisitor< ConcreteVisitor >::Visit ( Tagged< Map > map,
Tagged< HeapObject > object,
MaybeObjectSize maybe_object_size )
protected

Definition at line 121 of file heap-visitor-inl.h.

Here is the call graph for this function:

◆ VisitFiller()

template<typename ConcreteVisitor >
size_t v8::internal::HeapVisitor< ConcreteVisitor >::VisitFiller ( Tagged< Map > map,
Tagged< HeapObject > object,
MaybeObjectSize maybe_object_size )
protected

Definition at line 246 of file heap-visitor-inl.h.

◆ VisitFreeSpace()

template<typename ConcreteVisitor >
size_t v8::internal::HeapVisitor< ConcreteVisitor >::VisitFreeSpace ( Tagged< Map > map,
Tagged< FreeSpace > object,
MaybeObjectSize maybe_object_size )
protected

Definition at line 260 of file heap-visitor-inl.h.

◆ VisitJSApiObject()

template<typename ConcreteVisitor >
size_t v8::internal::HeapVisitor< ConcreteVisitor >::VisitJSApiObject ( Tagged< Map > map,
Tagged< JSObject > object,
MaybeObjectSize maybe_object_size )
protected

Definition at line 281 of file heap-visitor-inl.h.

◆ VisitJSObjectFast()

template<typename ConcreteVisitor >
size_t v8::internal::HeapVisitor< ConcreteVisitor >::VisitJSObjectFast ( Tagged< Map > map,
Tagged< JSObject > object,
MaybeObjectSize maybe_object_size )
protected

Definition at line 272 of file heap-visitor-inl.h.

◆ VisitJSObjectSubclass() [1/2]

template<typename ConcreteVisitor >
template<typename T , typename TBodyDescriptor >
size_t v8::internal::HeapVisitor< ConcreteVisitor >::VisitJSObjectSubclass ( Tagged< Map > map,
Tagged< T > object,
MaybeObjectSize maybe_object_size )

Definition at line 305 of file heap-visitor-inl.h.

Here is the call graph for this function:

◆ VisitJSObjectSubclass() [2/2]

template<typename ConcreteVisitor >
template<typename T , typename TBodyDescriptor = typename T::BodyDescriptor>
V8_INLINE size_t v8::internal::HeapVisitor< ConcreteVisitor >::VisitJSObjectSubclass ( Tagged< Map > map,
Tagged< T > object,
MaybeObjectSize maybe_object_size )
protected

◆ VisitMapPointerIfNeeded() [1/2]

template<typename ConcreteVisitor >
template<VisitorId visitor_id>
void v8::internal::HeapVisitor< ConcreteVisitor >::VisitMapPointerIfNeeded ( Tagged< HeapObject > host)

Definition at line 194 of file heap-visitor-inl.h.

◆ VisitMapPointerIfNeeded() [2/2]

template<typename ConcreteVisitor >
template<VisitorId visitor_id>
V8_INLINE void v8::internal::HeapVisitor< ConcreteVisitor >::VisitMapPointerIfNeeded ( Tagged< HeapObject > host)
protected

◆ VisitShortcutCandidate()

template<typename ConcreteVisitor >
size_t v8::internal::HeapVisitor< ConcreteVisitor >::VisitShortcutCandidate ( Tagged< Map > map,
Tagged< ConsString > object,
MaybeObjectSize maybe_object_size )
protected

Definition at line 238 of file heap-visitor-inl.h.

◆ VisitStruct()

template<typename ConcreteVisitor >
size_t v8::internal::HeapVisitor< ConcreteVisitor >::VisitStruct ( Tagged< Map > map,
Tagged< HeapObject > object,
MaybeObjectSize maybe_object_size )
protected

Definition at line 291 of file heap-visitor-inl.h.

◆ VisitWithBodyDescriptor() [1/2]

template<typename ConcreteVisitor >
template<VisitorId visitor_id, typename T , typename TBodyDescriptor >
size_t v8::internal::HeapVisitor< ConcreteVisitor >::VisitWithBodyDescriptor ( Tagged< Map > map,
Tagged< T > object,
MaybeObjectSize maybe_object_size )

Definition at line 340 of file heap-visitor-inl.h.

◆ VisitWithBodyDescriptor() [2/2]

template<typename ConcreteVisitor >
template<VisitorId visitor_id, typename T , typename TBodyDescriptor = typename T::BodyDescriptor>
V8_INLINE size_t v8::internal::HeapVisitor< ConcreteVisitor >::VisitWithBodyDescriptor ( Tagged< Map > map,
Tagged< T > object,
MaybeObjectSize maybe_object_size )
protected

Member Data Documentation

◆ heap_

template<typename ConcreteVisitor >
const Heap* v8::internal::HeapVisitor< ConcreteVisitor >::heap_
protected

Definition at line 295 of file heap-visitor.h.


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