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

#include <young-generation-marking-visitor.h>

Inheritance diagram for v8::internal::YoungGenerationMarkingVisitor< marking_mode >:
Collaboration diagram for v8::internal::YoungGenerationMarkingVisitor< marking_mode >:

Public Types

enum class  ObjectVisitationMode { kVisitDirectly , kPushToWorklist }
 
enum class  SlotTreatmentMode { kReadOnly , kReadWrite }
 
using Base = NewSpaceVisitor<YoungGenerationMarkingVisitor<marking_mode>>
 

Public Member Functions

 YoungGenerationMarkingVisitor (Heap *heap, PretenuringHandler::PretenuringFeedbackMap *local_pretenuring_feedback)
 
 ~YoungGenerationMarkingVisitor () override
 
 YoungGenerationMarkingVisitor (const YoungGenerationMarkingVisitor &)=delete
 
YoungGenerationMarkingVisitoroperator= (const YoungGenerationMarkingVisitor &)=delete
 
V8_INLINE void VisitPointers (Tagged< HeapObject > host, ObjectSlot start, ObjectSlot end) final
 
V8_INLINE void VisitPointers (Tagged< HeapObject > host, MaybeObjectSlot start, MaybeObjectSlot end) final
 
V8_INLINE void VisitPointer (Tagged< HeapObject > host, ObjectSlot p) final
 
V8_INLINE void VisitPointer (Tagged< HeapObject > host, MaybeObjectSlot p) final
 
V8_INLINE size_t VisitJSArrayBuffer (Tagged< Map > map, Tagged< JSArrayBuffer > object, MaybeObjectSize)
 
template<typename T , typename TBodyDescriptor = typename T::BodyDescriptor>
V8_INLINE size_t VisitJSObjectSubclass (Tagged< Map > map, Tagged< T > object, MaybeObjectSize)
 
V8_INLINE size_t VisitEphemeronHashTable (Tagged< Map > map, Tagged< EphemeronHashTable > table, MaybeObjectSize)
 
V8_INLINE void VisitCppHeapPointer (Tagged< HeapObject > host, CppHeapPointerSlot slot) override
 
template<ObjectVisitationMode visitation_mode, SlotTreatmentMode slot_treatment_mode, typename TSlot >
V8_INLINE bool VisitObjectViaSlot (TSlot slot)
 
template<typename TSlot >
V8_INLINE bool VisitObjectViaSlotInRememberedSet (TSlot slot)
 
MarkingWorklists::Localmarking_worklists_local ()
 
V8_INLINE void IncrementLiveBytesCached (MutablePageMetadata *chunk, intptr_t by)
 
void PublishWorklists ()
 
template<typename T , typename TBodyDescriptor >
size_t VisitJSObjectSubclass (Tagged< Map > map, Tagged< T > object, MaybeObjectSize maybe_object_size)
 
template<typename TSlot >
void VisitPointersImpl (Tagged< HeapObject > host, TSlot start, TSlot end)
 
- Public Member Functions inherited from v8::internal::NewSpaceVisitor< YoungGenerationMarkingVisitor< marking_mode > >
V8_INLINE NewSpaceVisitor (Isolate *isolate)
 
void VisitInstructionStreamPointer (Tagged< Code >, InstructionStreamSlot) final
 
void VisitCodeTarget (Tagged< InstructionStream > host, RelocInfo *) final
 
void VisitEmbeddedPointer (Tagged< InstructionStream > host, RelocInfo *) final
 
void VisitMapPointer (Tagged< HeapObject >) override
 
- Public Member Functions inherited from v8::internal::ConcurrentHeapVisitor< YoungGenerationMarkingVisitor< marking_mode > >
V8_INLINE ConcurrentHeapVisitor (Isolate *isolate)
 
Tagged< TCast (Tagged< HeapObject > object, const Heap *heap)
 
size_t VisitStringLocked (Tagged< T > object)
 
- Public Member Functions inherited from v8::internal::HeapVisitor< YoungGenerationMarkingVisitor< marking_mode > >
 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)
 
void VisitMapPointerIfNeeded (Tagged< HeapObject > host)
 
size_t VisitJSObjectSubclass (Tagged< Map > map, Tagged< T > object, MaybeObjectSize maybe_object_size)
 
size_t VisitWithBodyDescriptor (Tagged< Map > map, Tagged< T > object, MaybeObjectSize maybe_object_size)
 
Tagged< TCast (Tagged< HeapObject > object, const Heap *heap)
 
- 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 VisitCustomWeakPointers (Tagged< HeapObject > host, ObjectSlot start, ObjectSlot end)
 
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 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 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)
 

Static Public Member Functions

static constexpr bool EnableConcurrentVisitation ()
 
static V8_INLINE constexpr bool CanEncounterFillerOrFreeSpace ()
 
- Static Public Member Functions inherited from v8::internal::ConcurrentHeapVisitor< YoungGenerationMarkingVisitor< marking_mode > >
static V8_INLINE constexpr bool EnableConcurrentVisitation ()
 

Private Member Functions

bool TryMark (Tagged< HeapObject > obj)
 
template<typename TSlot >
V8_INLINE void VisitPointersImpl (Tagged< HeapObject > host, TSlot start, TSlot end)
 

Private Attributes

std::array< std::pair< MutablePageMetadata *, size_t >, kNumEntrieslive_bytes_data_
 
Isolate *const isolate_
 
MarkingWorklists::Local marking_worklists_local_
 
EphemeronRememberedSet::TableList::Local ephemeron_table_list_local_
 
PretenuringHandler *const pretenuring_handler_
 
PretenuringHandler::PretenuringFeedbackMap *const local_pretenuring_feedback_
 
const bool shortcut_strings_
 

Static Private Attributes

static constexpr size_t kNumEntries = 128
 
static constexpr size_t kEntriesMask = kNumEntries - 1
 

Additional Inherited Members

- Protected Member Functions inherited from v8::internal::NewSpaceVisitor< YoungGenerationMarkingVisitor< marking_mode > >
size_t VisitNativeContext (Tagged< Map >, Tagged< NativeContext >, MaybeObjectSize)
 
size_t VisitBytecodeArray (Tagged< Map >, Tagged< BytecodeArray >, MaybeObjectSize)
 
size_t VisitSharedFunctionInfo (Tagged< Map > map, Tagged< SharedFunctionInfo >, MaybeObjectSize)
 
size_t VisitWeakCell (Tagged< Map >, Tagged< WeakCell >, MaybeObjectSize)
 
- Protected Member Functions inherited from v8::internal::HeapVisitor< YoungGenerationMarkingVisitor< marking_mode > >
V8_INLINE size_t Visit (Tagged< Map > map, Tagged< HeapObject > object, MaybeObjectSize maybe_object_size)
 
V8_INLINE void VisitMapPointerIfNeeded (Tagged< HeapObject > host)
 
YoungGenerationMarkingVisitor< marking_mode > * concrete_visitor ()
 
const YoungGenerationMarkingVisitor< marking_mode > * 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)
 
V8_INLINE size_t VisitJSObjectSubclass (Tagged< Map > map, Tagged< T > object, MaybeObjectSize maybe_object_size)
 
V8_INLINE size_t VisitWithBodyDescriptor (Tagged< Map > map, Tagged< T > object, MaybeObjectSize maybe_object_size)
 
std::optional< Tagged< Object > > GetObjectFilterReadOnlyAndSmiFast (TSlot slot) const
 
- Static Protected Member Functions inherited from v8::internal::NewSpaceVisitor< YoungGenerationMarkingVisitor< marking_mode > >
static V8_INLINE constexpr bool ShouldVisitMapPointer ()
 
- Static Protected Member Functions inherited from v8::internal::ConcurrentHeapVisitor< YoungGenerationMarkingVisitor< marking_mode > >
static V8_INLINE Tagged< TCast (Tagged< HeapObject > object, const Heap *heap)
 
- Static Protected Member Functions inherited from v8::internal::HeapVisitor< YoungGenerationMarkingVisitor< marking_mode > >
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 ()
 
static V8_INLINE Tagged< TCast (Tagged< HeapObject > object, const Heap *heap)
 
- Protected Attributes inherited from v8::internal::HeapVisitor< YoungGenerationMarkingVisitor< marking_mode > >
const Heapheap_
 

Detailed Description

template<YoungGenerationMarkingVisitationMode marking_mode>
class v8::internal::YoungGenerationMarkingVisitor< marking_mode >

Definition at line 22 of file young-generation-marking-visitor.h.

Member Typedef Documentation

◆ Base

Member Enumeration Documentation

◆ ObjectVisitationMode

Enumerator
kVisitDirectly 
kPushToWorklist 

Definition at line 27 of file young-generation-marking-visitor.h.

◆ SlotTreatmentMode

Enumerator
kReadOnly 
kReadWrite 

Definition at line 32 of file young-generation-marking-visitor.h.

Constructor & Destructor Documentation

◆ YoungGenerationMarkingVisitor() [1/2]

template<YoungGenerationMarkingVisitationMode marking_mode>
v8::internal::YoungGenerationMarkingVisitor< marking_mode >::YoungGenerationMarkingVisitor ( Heap * heap,
PretenuringHandler::PretenuringFeedbackMap * local_pretenuring_feedback )

Definition at line 25 of file young-generation-marking-visitor-inl.h.

◆ ~YoungGenerationMarkingVisitor()

◆ YoungGenerationMarkingVisitor() [2/2]

template<YoungGenerationMarkingVisitationMode marking_mode>
v8::internal::YoungGenerationMarkingVisitor< marking_mode >::YoungGenerationMarkingVisitor ( const YoungGenerationMarkingVisitor< marking_mode > & )
delete

Member Function Documentation

◆ CanEncounterFillerOrFreeSpace()

template<YoungGenerationMarkingVisitationMode marking_mode>
static V8_INLINE constexpr bool v8::internal::YoungGenerationMarkingVisitor< marking_mode >::CanEncounterFillerOrFreeSpace ( )
inlinestaticconstexpr

Definition at line 106 of file young-generation-marking-visitor.h.

◆ EnableConcurrentVisitation()

template<YoungGenerationMarkingVisitationMode marking_mode>
static constexpr bool v8::internal::YoungGenerationMarkingVisitor< marking_mode >::EnableConcurrentVisitation ( )
inlinestaticconstexpr

Definition at line 47 of file young-generation-marking-visitor.h.

◆ IncrementLiveBytesCached()

template<YoungGenerationMarkingVisitationMode marking_mode>
V8_INLINE void v8::internal::YoungGenerationMarkingVisitor< marking_mode >::IncrementLiveBytesCached ( MutablePageMetadata * chunk,
intptr_t by )

Definition at line 275 of file young-generation-marking-visitor-inl.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ marking_worklists_local()

template<YoungGenerationMarkingVisitationMode marking_mode>
MarkingWorklists::Local & v8::internal::YoungGenerationMarkingVisitor< marking_mode >::marking_worklists_local ( )
inline

Definition at line 94 of file young-generation-marking-visitor.h.

Here is the caller graph for this function:

◆ operator=()

template<YoungGenerationMarkingVisitationMode marking_mode>
YoungGenerationMarkingVisitor & v8::internal::YoungGenerationMarkingVisitor< marking_mode >::operator= ( const YoungGenerationMarkingVisitor< marking_mode > & )
delete

◆ PublishWorklists()

template<YoungGenerationMarkingVisitationMode marking_mode>
void v8::internal::YoungGenerationMarkingVisitor< marking_mode >::PublishWorklists ( )
inline

Definition at line 101 of file young-generation-marking-visitor.h.

Here is the call graph for this function:

◆ TryMark()

template<YoungGenerationMarkingVisitationMode marking_mode>
bool v8::internal::YoungGenerationMarkingVisitor< marking_mode >::TryMark ( Tagged< HeapObject > obj)
inlineprivate

Definition at line 111 of file young-generation-marking-visitor.h.

Here is the call graph for this function:

◆ VisitCppHeapPointer()

template<YoungGenerationMarkingVisitationMode marking_mode>
void v8::internal::YoungGenerationMarkingVisitor< marking_mode >::VisitCppHeapPointer ( Tagged< HeapObject > host,
CppHeapPointerSlot slot )
overridevirtual

Reimplemented from v8::internal::ObjectVisitor.

Definition at line 57 of file young-generation-marking-visitor-inl.h.

Here is the call graph for this function:

◆ VisitEphemeronHashTable()

template<YoungGenerationMarkingVisitationMode marking_mode>
size_t v8::internal::YoungGenerationMarkingVisitor< marking_mode >::VisitEphemeronHashTable ( Tagged< Map > map,
Tagged< EphemeronHashTable > table,
MaybeObjectSize  )

Definition at line 91 of file young-generation-marking-visitor-inl.h.

Here is the call graph for this function:

◆ VisitJSArrayBuffer()

template<YoungGenerationMarkingVisitationMode marking_mode>
size_t v8::internal::YoungGenerationMarkingVisitor< marking_mode >::VisitJSArrayBuffer ( Tagged< Map > map,
Tagged< JSArrayBuffer > object,
MaybeObjectSize maybe_object_size )

Definition at line 71 of file young-generation-marking-visitor-inl.h.

◆ VisitJSObjectSubclass() [1/2]

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

Definition at line 80 of file young-generation-marking-visitor-inl.h.

Here is the call graph for this function:

◆ VisitJSObjectSubclass() [2/2]

template<YoungGenerationMarkingVisitationMode marking_mode>
template<typename T , typename TBodyDescriptor = typename T::BodyDescriptor>
V8_INLINE size_t v8::internal::YoungGenerationMarkingVisitor< marking_mode >::VisitJSObjectSubclass ( Tagged< Map > map,
Tagged< T > object,
MaybeObjectSize  )

◆ VisitObjectViaSlot()

template<YoungGenerationMarkingVisitationMode marking_mode>
template<typename YoungGenerationMarkingVisitor< marking_mode >::ObjectVisitationMode visitation_mode, typename YoungGenerationMarkingVisitor< marking_mode >::SlotTreatmentMode slot_treatment_mode, typename TSlot >
V8_INLINE bool v8::internal::YoungGenerationMarkingVisitor< marking_mode >::VisitObjectViaSlot ( TSlot slot)

Definition at line 173 of file young-generation-marking-visitor-inl.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ VisitObjectViaSlotInRememberedSet()

template<YoungGenerationMarkingVisitationMode marking_mode>
template<typename TSlot >
V8_INLINE bool v8::internal::YoungGenerationMarkingVisitor< marking_mode >::VisitObjectViaSlotInRememberedSet ( TSlot slot)

Definition at line 155 of file young-generation-marking-visitor-inl.h.

◆ VisitPointer() [1/2]

template<YoungGenerationMarkingVisitationMode marking_mode>
V8_INLINE void v8::internal::YoungGenerationMarkingVisitor< marking_mode >::VisitPointer ( Tagged< HeapObject > host,
MaybeObjectSlot p )
inlinefinalvirtual

Reimplemented from v8::internal::ObjectVisitor.

Definition at line 62 of file young-generation-marking-visitor.h.

Here is the call graph for this function:

◆ VisitPointer() [2/2]

template<YoungGenerationMarkingVisitationMode marking_mode>
V8_INLINE void v8::internal::YoungGenerationMarkingVisitor< marking_mode >::VisitPointer ( Tagged< HeapObject > host,
ObjectSlot p )
inlinefinalvirtual

Reimplemented from v8::internal::ObjectVisitor.

Definition at line 59 of file young-generation-marking-visitor.h.

Here is the call graph for this function:

◆ VisitPointers() [1/2]

template<YoungGenerationMarkingVisitationMode marking_mode>
V8_INLINE void v8::internal::YoungGenerationMarkingVisitor< marking_mode >::VisitPointers ( Tagged< HeapObject > host,
MaybeObjectSlot start,
MaybeObjectSlot end )
inlinefinalvirtual

Implements v8::internal::ObjectVisitor.

Definition at line 55 of file young-generation-marking-visitor.h.

Here is the call graph for this function:

◆ VisitPointers() [2/2]

template<YoungGenerationMarkingVisitationMode marking_mode>
V8_INLINE void v8::internal::YoungGenerationMarkingVisitor< marking_mode >::VisitPointers ( Tagged< HeapObject > host,
ObjectSlot start,
ObjectSlot end )
inlinefinalvirtual

Implements v8::internal::ObjectVisitor.

Definition at line 51 of file young-generation-marking-visitor.h.

Here is the call graph for this function:

◆ VisitPointersImpl() [1/2]

template<YoungGenerationMarkingVisitationMode marking_mode>
template<typename TSlot >
void v8::internal::YoungGenerationMarkingVisitor< marking_mode >::VisitPointersImpl ( Tagged< HeapObject > host,
TSlot start,
TSlot end )

Definition at line 138 of file young-generation-marking-visitor-inl.h.

◆ VisitPointersImpl() [2/2]

template<YoungGenerationMarkingVisitationMode marking_mode>
template<typename TSlot >
V8_INLINE void v8::internal::YoungGenerationMarkingVisitor< marking_mode >::VisitPointersImpl ( Tagged< HeapObject > host,
TSlot start,
TSlot end )
private
Here is the caller graph for this function:

Member Data Documentation

◆ ephemeron_table_list_local_

template<YoungGenerationMarkingVisitationMode marking_mode>
EphemeronRememberedSet::TableList::Local v8::internal::YoungGenerationMarkingVisitor< marking_mode >::ephemeron_table_list_local_
private

Definition at line 133 of file young-generation-marking-visitor.h.

◆ isolate_

template<YoungGenerationMarkingVisitationMode marking_mode>
Isolate* const v8::internal::YoungGenerationMarkingVisitor< marking_mode >::isolate_
private

Definition at line 131 of file young-generation-marking-visitor.h.

◆ kEntriesMask

template<YoungGenerationMarkingVisitationMode marking_mode>
size_t v8::internal::YoungGenerationMarkingVisitor< marking_mode >::kEntriesMask = kNumEntries - 1
staticconstexprprivate

Definition at line 125 of file young-generation-marking-visitor.h.

◆ kNumEntries

template<YoungGenerationMarkingVisitationMode marking_mode>
size_t v8::internal::YoungGenerationMarkingVisitor< marking_mode >::kNumEntries = 128
staticconstexprprivate

Definition at line 124 of file young-generation-marking-visitor.h.

◆ live_bytes_data_

template<YoungGenerationMarkingVisitationMode marking_mode>
std::array<std::pair<MutablePageMetadata*, size_t>, kNumEntries> v8::internal::YoungGenerationMarkingVisitor< marking_mode >::live_bytes_data_
private

Definition at line 129 of file young-generation-marking-visitor.h.

◆ local_pretenuring_feedback_

template<YoungGenerationMarkingVisitationMode marking_mode>
PretenuringHandler::PretenuringFeedbackMap* const v8::internal::YoungGenerationMarkingVisitor< marking_mode >::local_pretenuring_feedback_
private

Definition at line 135 of file young-generation-marking-visitor.h.

◆ marking_worklists_local_

template<YoungGenerationMarkingVisitationMode marking_mode>
MarkingWorklists::Local v8::internal::YoungGenerationMarkingVisitor< marking_mode >::marking_worklists_local_
private

Definition at line 132 of file young-generation-marking-visitor.h.

◆ pretenuring_handler_

template<YoungGenerationMarkingVisitationMode marking_mode>
PretenuringHandler* const v8::internal::YoungGenerationMarkingVisitor< marking_mode >::pretenuring_handler_
private

Definition at line 134 of file young-generation-marking-visitor.h.

◆ shortcut_strings_

template<YoungGenerationMarkingVisitationMode marking_mode>
const bool v8::internal::YoungGenerationMarkingVisitor< marking_mode >::shortcut_strings_
private

Definition at line 136 of file young-generation-marking-visitor.h.


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