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

#include <mark-compact.h>

Collaboration diagram for v8::internal::MarkCompactCollector:

Classes

class  ClearTrivialWeakRefJobItem
 
class  CustomRootBodyMarkingVisitor
 
class  FilterNonTrivialWeakRefJobItem
 
struct  RecordRelocSlotInfo
 
class  SharedHeapObjectVisitor
 

Public Types

enum class  StartCompactionMode { kIncremental , kAtomic }
 
enum class  MarkingWorklistProcessingMode { kDefault , kProcessRememberedEphemerons }
 
enum class  CallOrigin { kIncrementalMarkingStep , kAtomicGC }
 
enum class  EphemeronResult { kUnresolved , kMarkedValue , kResolved }
 

Public Member Functions

template<MarkingWorklistProcessingMode mode = MarkingWorklistProcessingMode::kDefault>
std::pair< size_t, size_tProcessMarkingWorklist (v8::base::TimeDelta max_duration, size_t max_bytes_to_process)
 
void TearDown ()
 
void CollectGarbage ()
 
void CollectEvacuationCandidates (PagedSpace *space)
 
void AddEvacuationCandidate (PageMetadata *p)
 
void Prepare ()
 
void FinishConcurrentMarking ()
 
bool StartCompaction (StartCompactionMode mode)
 
void StartMarking (std::shared_ptr<::heap::base::IncrementalMarkingSchedule > schedule={})
 
bool is_compacting () const
 
V8_INLINE void AddTransitionArray (Tagged< TransitionArray > array)
 
void RecordStrongDescriptorArraysForWeakening (GlobalHandleVector< DescriptorArray > strong_descriptor_arrays)
 
void VerifyMarking ()
 
unsigned epoch () const
 
base::EnumSet< CodeFlushModecode_flush_mode () const
 
MarkingWorklistsmarking_worklists ()
 
MarkingWorklists::Locallocal_marking_worklists () const
 
WeakObjectsweak_objects ()
 
WeakObjects::Locallocal_weak_objects ()
 
bool UseBackgroundThreadsInCycle () const
 
void MaybeEnableBackgroundThreadsInCycle (CallOrigin origin)
 
Heapheap ()
 
 MarkCompactCollector (Heap *heap)
 
 ~MarkCompactCollector ()
 
template<typename THeapObjectSlot >
void RecordSlot (Tagged< HeapObject > object, THeapObjectSlot slot, Tagged< HeapObject > target)
 
template<typename THeapObjectSlot >
void RecordSlot (MemoryChunk *source_chunk, THeapObjectSlot slot, Tagged< HeapObject > target)
 

Static Public Member Functions

static bool IsUnmarkedHeapObject (Heap *heap, FullObjectSlot p)
 
static bool IsUnmarkedSharedHeapObject (Heap *heap, FullObjectSlot p)
 
static bool IsOnEvacuationCandidate (Tagged< MaybeObject > obj)
 
static bool ShouldRecordRelocSlot (Tagged< InstructionStream > host, RelocInfo *rinfo, Tagged< HeapObject > target)
 
static RecordRelocSlotInfo ProcessRelocInfo (Tagged< InstructionStream > host, RelocInfo *rinfo, Tagged< HeapObject > target)
 
static void RecordRelocSlot (Tagged< InstructionStream > host, RelocInfo *rinfo, Tagged< HeapObject > target)
 
template<typename THeapObjectSlot >
static V8_INLINE void RecordSlot (Tagged< HeapObject > object, THeapObjectSlot slot, Tagged< HeapObject > target)
 
template<typename THeapObjectSlot >
static V8_INLINE void RecordSlot (MemoryChunk *source_chunk, THeapObjectSlot slot, Tagged< HeapObject > target)
 

Private Types

using ResizeNewSpaceMode = Heap::ResizeNewSpaceMode
 

Private Member Functions

void ComputeEvacuationHeuristics (size_t area_size, int *target_fragmentation_percent, size_t *max_evacuated_bytes)
 
void RecordObjectStats ()
 
void Finish ()
 
void SweepArrayBufferExtensions ()
 
void MarkLiveObjects ()
 
V8_INLINE void MarkObject (Tagged< HeapObject > host, Tagged< HeapObject > obj, MarkingHelper::WorklistTarget target_worklist)
 
V8_INLINE void MarkRootObject (Root root, Tagged< HeapObject > obj, MarkingHelper::WorklistTarget target_worklist)
 
void MarkRoots (RootVisitor *root_visitor)
 
void MarkRootsFromConservativeStack (RootVisitor *root_visitor)
 
void MarkObjectsFromClientHeaps ()
 
void MarkObjectsFromClientHeap (Isolate *client)
 
void PinPreciseRootsIfNeeded ()
 
void UpdatePointersInClientHeaps ()
 
void UpdatePointersInClientHeap (Isolate *client)
 
void UpdatePointersInPointerTables ()
 
void MarkTransitiveClosure ()
 
void VerifyEphemeronMarking ()
 
void ProcessTopOptimizedFrame (ObjectVisitor *visitor, Isolate *isolate)
 
EphemeronResult ApplyEphemeronSemantics (Tagged< HeapObject > key, Tagged< HeapObject > value)
 
bool ProcessEphemeron (Tagged< HeapObject > key, Tagged< HeapObject > value)
 
bool MarkTransitiveClosureUntilFixpoint ()
 
void MarkTransitiveClosureLinear ()
 
bool ProcessEphemerons ()
 
void PerformWrapperTracing ()
 
void RetainMaps ()
 
void ClearNonLiveReferences ()
 
void MarkDependentCodeForDeoptimization ()
 
bool SpecialClearMapSlot (Tagged< HeapObject > host, Tagged< Map > dead_target, HeapObjectSlot slot)
 
void ClearPotentialSimpleMapTransition (Tagged< Map > dead_target)
 
void ClearPotentialSimpleMapTransition (Tagged< Map > map, Tagged< Map > dead_target)
 
void FlushBytecodeFromSFI (Tagged< SharedFunctionInfo > shared_info)
 
void ProcessOldCodeCandidates ()
 
bool ProcessOldBytecodeSFI (Tagged< SharedFunctionInfo > flushing_candidate)
 
bool ProcessOldBaselineSFI (Tagged< SharedFunctionInfo > flushing_candidate)
 
void FlushSFI (Tagged< SharedFunctionInfo > sfi, bool bytecode_already_decompiled)
 
void ProcessFlushedBaselineCandidates ()
 
void ClearFlushedJsFunctions ()
 
void ClearFullMapTransitions ()
 
void TrimDescriptorArray (Tagged< Map > map, Tagged< DescriptorArray > descriptors)
 
void TrimEnumCache (Tagged< Map > map, Tagged< DescriptorArray > descriptors)
 
bool CompactTransitionArray (Tagged< Map > map, Tagged< TransitionArray > transitions, Tagged< DescriptorArray > descriptors)
 
bool TransitionArrayNeedsCompaction (Tagged< TransitionArray > transitions, int num_transitions)
 
void WeakenStrongDescriptorArrays ()
 
void ClearWeakCollections ()
 
void ClearTrivialWeakReferences ()
 
void ClearTrustedWeakReferences ()
 
template<typename TObjectAndSlot , typename TMaybeSlot >
void ClearWeakReferences (WeakObjects::WeakObjectWorklist< TObjectAndSlot >::Local &worklist, Tagged< HeapObjectReference > cleared_weak_ref)
 
void FilterNonTrivialWeakReferences ()
 
void ClearNonTrivialWeakReferences ()
 
void ClearJSWeakRefs ()
 
void Sweep ()
 
void StartSweepSpace (PagedSpace *space)
 
void EvacuatePrologue ()
 
void EvacuateEpilogue ()
 
void Evacuate ()
 
void EvacuatePagesInParallel ()
 
void UpdatePointersAfterEvacuation ()
 
void ReleaseEvacuationCandidates ()
 
size_t PostProcessAbortedEvacuationCandidates ()
 
void ReportAbortedEvacuationCandidateDueToOOM (Address failed_start, PageMetadata *page)
 
void ReportAbortedEvacuationCandidateDueToFlags (PageMetadata *page, MemoryChunk *chunk)
 
int NumberOfParallelEphemeronVisitingTasks (size_t elements)
 
void RightTrimDescriptorArray (Tagged< DescriptorArray > array, int descriptors_to_trim)
 
void StartSweepNewSpace ()
 
void SweepLargeSpace (LargeObjectSpace *space)
 
void ResetAndRelinkBlackAllocatedPage (PagedSpace *, PageMetadata *)
 

Private Attributes

Heap *const heap_
 
base::Mutex mutex_
 
base::Semaphore page_parallel_job_semaphore_ {0}
 
const bool uses_shared_heap_
 
const bool is_shared_space_isolate_
 
bool compacting_ = false
 
bool black_allocation_ = false
 
bool have_code_to_deoptimize_ = false
 
bool parallel_marking_ = false
 
MarkingWorklists marking_worklists_
 
std::unique_ptr< MarkingWorklists::Locallocal_marking_worklists_
 
WeakObjects weak_objects_
 
std::unique_ptr< MainMarkingVisitormarking_visitor_
 
std::unique_ptr< WeakObjects::Locallocal_weak_objects_
 
NativeContextInferrer native_context_inferrer_
 
NativeContextStats native_context_stats_
 
std::vector< GlobalHandleVector< DescriptorArray > > strong_descriptor_arrays_
 
base::Mutex strong_descriptor_arrays_mutex_
 
std::vector< PageMetadata * > evacuation_candidates_
 
std::vector< PageMetadata * > old_space_evacuation_pages_
 
std::vector< PageMetadata * > new_space_evacuation_pages_
 
std::vector< std::pair< Address, PageMetadata * > > aborted_evacuation_candidates_due_to_oom_
 
std::vector< PageMetadata * > aborted_evacuation_candidates_due_to_flags_
 
std::vector< LargePageMetadata * > promoted_large_pages_
 
KeyToValues key_to_values_
 
MarkingState *const marking_state_
 
NonAtomicMarkingState *const non_atomic_marking_state_
 
Sweeper *const sweeper_
 
unsigned epoch_ = 0
 
base::EnumSet< CodeFlushModecode_flush_mode_
 
std::vector< PageMetadata * > empty_new_space_pages_to_be_swept_
 
bool use_background_threads_in_cycle_ = false
 

Static Private Attributes

static const int kEphemeronChunkSize = 8 * KB
 

Friends

class Evacuator
 
class RecordMigratedSlotVisitor
 
class RootMarkingVisitor
 
class PrecisePagePinningVisitor
 

Detailed Description

Definition at line 57 of file mark-compact.h.

Member Typedef Documentation

◆ ResizeNewSpaceMode

using v8::internal::MarkCompactCollector::ResizeNewSpaceMode = Heap::ResizeNewSpaceMode
private

Definition at line 195 of file mark-compact.h.

Member Enumeration Documentation

◆ CallOrigin

Enumerator
kIncrementalMarkingStep 
kAtomicGC 

Definition at line 72 of file mark-compact.h.

◆ EphemeronResult

Enumerator
kUnresolved 
kMarkedValue 
kResolved 

Definition at line 77 of file mark-compact.h.

◆ MarkingWorklistProcessingMode

Enumerator
kDefault 
kProcessRememberedEphemerons 

Definition at line 67 of file mark-compact.h.

◆ StartCompactionMode

Enumerator
kIncremental 
kAtomic 

Definition at line 62 of file mark-compact.h.

Constructor & Destructor Documentation

◆ MarkCompactCollector()

v8::internal::MarkCompactCollector::MarkCompactCollector ( Heap * heap)
explicit

Definition at line 282 of file mark-compact.cc.

◆ ~MarkCompactCollector()

v8::internal::MarkCompactCollector::~MarkCompactCollector ( )
default

Member Function Documentation

◆ AddEvacuationCandidate()

void v8::internal::MarkCompactCollector::AddEvacuationCandidate ( PageMetadata * p)

Definition at line 307 of file mark-compact.cc.

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

◆ AddTransitionArray()

void v8::internal::MarkCompactCollector::AddTransitionArray ( Tagged< TransitionArray > array)

Definition at line 88 of file mark-compact-inl.h.

Here is the call graph for this function:

◆ ApplyEphemeronSemantics()

MarkCompactCollector::EphemeronResult v8::internal::MarkCompactCollector::ApplyEphemeronSemantics ( Tagged< HeapObject > key,
Tagged< HeapObject > value )
private

Definition at line 2269 of file mark-compact.cc.

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

◆ ClearFlushedJsFunctions()

void v8::internal::MarkCompactCollector::ClearFlushedJsFunctions ( )
private

Definition at line 3518 of file mark-compact.cc.

◆ ClearFullMapTransitions()

void v8::internal::MarkCompactCollector::ClearFullMapTransitions ( )
private

Definition at line 3563 of file mark-compact.cc.

Here is the call graph for this function:

◆ ClearJSWeakRefs()

void v8::internal::MarkCompactCollector::ClearJSWeakRefs ( )
private

Definition at line 3921 of file mark-compact.cc.

Here is the call graph for this function:

◆ ClearNonLiveReferences()

void v8::internal::MarkCompactCollector::ClearNonLiveReferences ( )
private

Definition at line 2905 of file mark-compact.cc.

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

◆ ClearNonTrivialWeakReferences()

void v8::internal::MarkCompactCollector::ClearNonTrivialWeakReferences ( )
private

Definition at line 3898 of file mark-compact.cc.

Here is the call graph for this function:

◆ ClearPotentialSimpleMapTransition() [1/2]

void v8::internal::MarkCompactCollector::ClearPotentialSimpleMapTransition ( Tagged< Map > dead_target)
private

Definition at line 3220 of file mark-compact.cc.

Here is the call graph for this function:

◆ ClearPotentialSimpleMapTransition() [2/2]

void v8::internal::MarkCompactCollector::ClearPotentialSimpleMapTransition ( Tagged< Map > map,
Tagged< Map > dead_target )
private

Definition at line 3236 of file mark-compact.cc.

◆ ClearTrivialWeakReferences()

void v8::internal::MarkCompactCollector::ClearTrivialWeakReferences ( )
private

Definition at line 3858 of file mark-compact.cc.

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

◆ ClearTrustedWeakReferences()

void v8::internal::MarkCompactCollector::ClearTrustedWeakReferences ( )
private

Definition at line 3864 of file mark-compact.cc.

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

◆ ClearWeakCollections()

void v8::internal::MarkCompactCollector::ClearWeakCollections ( )
private

Definition at line 3792 of file mark-compact.cc.

◆ ClearWeakReferences()

template<typename TObjectAndSlot , typename TMaybeSlot >
void v8::internal::MarkCompactCollector::ClearWeakReferences ( WeakObjects::WeakObjectWorklist< TObjectAndSlot >::Local & worklist,
Tagged< HeapObjectReference > cleared_weak_ref )
private

Definition at line 3829 of file mark-compact.cc.

Here is the call graph for this function:

◆ code_flush_mode()

base::EnumSet< CodeFlushMode > v8::internal::MarkCompactCollector::code_flush_mode ( ) const
inline

Definition at line 170 of file mark-compact.h.

Here is the caller graph for this function:

◆ CollectEvacuationCandidates()

void v8::internal::MarkCompactCollector::CollectEvacuationCandidates ( PagedSpace * space)

Definition at line 607 of file mark-compact.cc.

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

◆ CollectGarbage()

void v8::internal::MarkCompactCollector::CollectGarbage ( )

Definition at line 486 of file mark-compact.cc.

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

◆ CompactTransitionArray()

bool v8::internal::MarkCompactCollector::CompactTransitionArray ( Tagged< Map > map,
Tagged< TransitionArray > transitions,
Tagged< DescriptorArray > descriptors )
private

Definition at line 3634 of file mark-compact.cc.

Here is the call graph for this function:

◆ ComputeEvacuationHeuristics()

void v8::internal::MarkCompactCollector::ComputeEvacuationHeuristics ( size_t area_size,
int * target_fragmentation_percent,
size_t * max_evacuated_bytes )
private

Definition at line 559 of file mark-compact.cc.

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

◆ epoch()

unsigned v8::internal::MarkCompactCollector::epoch ( ) const
inline

Definition at line 168 of file mark-compact.h.

Here is the caller graph for this function:

◆ Evacuate()

void v8::internal::MarkCompactCollector::Evacuate ( )
private

Definition at line 5037 of file mark-compact.cc.

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

◆ EvacuateEpilogue()

void v8::internal::MarkCompactCollector::EvacuateEpilogue ( )
private

Definition at line 4437 of file mark-compact.cc.

◆ EvacuatePagesInParallel()

void v8::internal::MarkCompactCollector::EvacuatePagesInParallel ( )
private

Definition at line 4916 of file mark-compact.cc.

Here is the call graph for this function:

◆ EvacuatePrologue()

void v8::internal::MarkCompactCollector::EvacuatePrologue ( )
private

Definition at line 4412 of file mark-compact.cc.

◆ FilterNonTrivialWeakReferences()

void v8::internal::MarkCompactCollector::FilterNonTrivialWeakReferences ( )
private

Definition at line 3870 of file mark-compact.cc.

Here is the caller graph for this function:

◆ Finish()

void v8::internal::MarkCompactCollector::Finish ( )
private

Definition at line 843 of file mark-compact.cc.

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

◆ FinishConcurrentMarking()

void v8::internal::MarkCompactCollector::FinishConcurrentMarking ( )

Definition at line 793 of file mark-compact.cc.

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

◆ FlushBytecodeFromSFI()

void v8::internal::MarkCompactCollector::FlushBytecodeFromSFI ( Tagged< SharedFunctionInfo > shared_info)
private

Definition at line 3286 of file mark-compact.cc.

Here is the call graph for this function:

◆ FlushSFI()

void v8::internal::MarkCompactCollector::FlushSFI ( Tagged< SharedFunctionInfo > sfi,
bool bytecode_already_decompiled )
private

Definition at line 3500 of file mark-compact.cc.

◆ heap()

Heap * v8::internal::MarkCompactCollector::heap ( )
inline

Definition at line 189 of file mark-compact.h.

Here is the caller graph for this function:

◆ is_compacting()

bool v8::internal::MarkCompactCollector::is_compacting ( ) const
inline

Definition at line 147 of file mark-compact.h.

◆ IsOnEvacuationCandidate()

static bool v8::internal::MarkCompactCollector::IsOnEvacuationCandidate ( Tagged< MaybeObject > obj)
inlinestatic

Definition at line 119 of file mark-compact.h.

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

◆ IsUnmarkedHeapObject()

bool v8::internal::MarkCompactCollector::IsUnmarkedHeapObject ( Heap * heap,
FullObjectSlot p )
static

Definition at line 1817 of file mark-compact.cc.

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

◆ IsUnmarkedSharedHeapObject()

bool v8::internal::MarkCompactCollector::IsUnmarkedSharedHeapObject ( Heap * heap,
FullObjectSlot p )
static

Definition at line 1826 of file mark-compact.cc.

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

◆ local_marking_worklists()

MarkingWorklists::Local * v8::internal::MarkCompactCollector::local_marking_worklists ( ) const
inline

Definition at line 176 of file mark-compact.h.

Here is the caller graph for this function:

◆ local_weak_objects()

WeakObjects::Local * v8::internal::MarkCompactCollector::local_weak_objects ( )
inline

Definition at line 181 of file mark-compact.h.

Here is the caller graph for this function:

◆ MarkDependentCodeForDeoptimization()

void v8::internal::MarkCompactCollector::MarkDependentCodeForDeoptimization ( )
private

Definition at line 3200 of file mark-compact.cc.

◆ marking_worklists()

MarkingWorklists * v8::internal::MarkCompactCollector::marking_worklists ( )
inline

Definition at line 174 of file mark-compact.h.

Here is the caller graph for this function:

◆ MarkLiveObjects()

void v8::internal::MarkCompactCollector::MarkLiveObjects ( )
private

Definition at line 2460 of file mark-compact.cc.

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

◆ MarkObject()

void v8::internal::MarkCompactCollector::MarkObject ( Tagged< HeapObject > host,
Tagged< HeapObject > obj,
MarkingHelper::WorklistTarget target_worklist )
private

Definition at line 26 of file mark-compact-inl.h.

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

◆ MarkObjectsFromClientHeap()

void v8::internal::MarkCompactCollector::MarkObjectsFromClientHeap ( Isolate * client)
private

Definition at line 1901 of file mark-compact.cc.

Here is the call graph for this function:

◆ MarkObjectsFromClientHeaps()

void v8::internal::MarkCompactCollector::MarkObjectsFromClientHeaps ( )
private

Definition at line 1891 of file mark-compact.cc.

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

◆ MarkRootObject()

void v8::internal::MarkCompactCollector::MarkRootObject ( Root root,
Tagged< HeapObject > obj,
MarkingHelper::WorklistTarget target_worklist )
private

Definition at line 34 of file mark-compact-inl.h.

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

◆ MarkRoots()

void v8::internal::MarkCompactCollector::MarkRoots ( RootVisitor * root_visitor)
private

Definition at line 1839 of file mark-compact.cc.

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

◆ MarkRootsFromConservativeStack()

void v8::internal::MarkCompactCollector::MarkRootsFromConservativeStack ( RootVisitor * root_visitor)
private

Definition at line 1872 of file mark-compact.cc.

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

◆ MarkTransitiveClosure()

void v8::internal::MarkCompactCollector::MarkTransitiveClosure ( )
private

Definition at line 2329 of file mark-compact.cc.

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

◆ MarkTransitiveClosureLinear()

void v8::internal::MarkCompactCollector::MarkTransitiveClosureLinear ( )
private

Definition at line 2111 of file mark-compact.cc.

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

◆ MarkTransitiveClosureUntilFixpoint()

bool v8::internal::MarkCompactCollector::MarkTransitiveClosureUntilFixpoint ( )
private

Definition at line 2040 of file mark-compact.cc.

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

◆ MaybeEnableBackgroundThreadsInCycle()

void v8::internal::MarkCompactCollector::MaybeEnableBackgroundThreadsInCycle ( CallOrigin origin)

Definition at line 464 of file mark-compact.cc.

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

◆ NumberOfParallelEphemeronVisitingTasks()

int v8::internal::MarkCompactCollector::NumberOfParallelEphemeronVisitingTasks ( size_t elements)
private

◆ PerformWrapperTracing()

void v8::internal::MarkCompactCollector::PerformWrapperTracing ( )
private

Definition at line 2168 of file mark-compact.cc.

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

◆ PinPreciseRootsIfNeeded()

void v8::internal::MarkCompactCollector::PinPreciseRootsIfNeeded ( )
private

Definition at line 4892 of file mark-compact.cc.

Here is the call graph for this function:

◆ PostProcessAbortedEvacuationCandidates()

size_t v8::internal::MarkCompactCollector::PostProcessAbortedEvacuationCandidates ( )
private

Definition at line 5907 of file mark-compact.cc.

Here is the call graph for this function:

◆ Prepare()

void v8::internal::MarkCompactCollector::Prepare ( )

Definition at line 763 of file mark-compact.cc.

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

◆ ProcessEphemeron()

bool v8::internal::MarkCompactCollector::ProcessEphemeron ( Tagged< HeapObject > key,
Tagged< HeapObject > value )
private

Definition at line 2256 of file mark-compact.cc.

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

◆ ProcessEphemerons()

bool v8::internal::MarkCompactCollector::ProcessEphemerons ( )
private

Definition at line 2081 of file mark-compact.cc.

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

◆ ProcessFlushedBaselineCandidates()

void v8::internal::MarkCompactCollector::ProcessFlushedBaselineCandidates ( )
private

Definition at line 3535 of file mark-compact.cc.

Here is the caller graph for this function:

◆ ProcessMarkingWorklist()

std::pair< size_t, size_t > v8::internal::MarkCompactCollector::ProcessMarkingWorklist ( v8::base::TimeDelta max_duration,
size_t max_bytes_to_process )

Definition at line 2183 of file mark-compact.cc.

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

◆ ProcessOldBaselineSFI()

bool v8::internal::MarkCompactCollector::ProcessOldBaselineSFI ( Tagged< SharedFunctionInfo > flushing_candidate)
private

Definition at line 3445 of file mark-compact.cc.

◆ ProcessOldBytecodeSFI()

bool v8::internal::MarkCompactCollector::ProcessOldBytecodeSFI ( Tagged< SharedFunctionInfo > flushing_candidate)
private

Definition at line 3421 of file mark-compact.cc.

Here is the call graph for this function:

◆ ProcessOldCodeCandidates()

void v8::internal::MarkCompactCollector::ProcessOldCodeCandidates ( )
private

Definition at line 3385 of file mark-compact.cc.

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

◆ ProcessRelocInfo()

MarkCompactCollector::RecordRelocSlotInfo v8::internal::MarkCompactCollector::ProcessRelocInfo ( Tagged< InstructionStream > host,
RelocInfo * rinfo,
Tagged< HeapObject > target )
static

Definition at line 4003 of file mark-compact.cc.

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

◆ ProcessTopOptimizedFrame()

void v8::internal::MarkCompactCollector::ProcessTopOptimizedFrame ( ObjectVisitor * visitor,
Isolate * isolate )
private

Definition at line 2342 of file mark-compact.cc.

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

◆ RecordObjectStats()

void v8::internal::MarkCompactCollector::RecordObjectStats ( )
private

Definition at line 2363 of file mark-compact.cc.

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

◆ RecordRelocSlot()

void v8::internal::MarkCompactCollector::RecordRelocSlot ( Tagged< InstructionStream > host,
RelocInfo * rinfo,
Tagged< HeapObject > target )
static

Definition at line 4048 of file mark-compact.cc.

Here is the caller graph for this function:

◆ RecordSlot() [1/4]

template<typename THeapObjectSlot >
void v8::internal::MarkCompactCollector::RecordSlot ( MemoryChunk * source_chunk,
THeapObjectSlot slot,
Tagged< HeapObject > target )

Definition at line 55 of file mark-compact-inl.h.

Here is the call graph for this function:

◆ RecordSlot() [2/4]

template<typename THeapObjectSlot >
static V8_INLINE void v8::internal::MarkCompactCollector::RecordSlot ( MemoryChunk * source_chunk,
THeapObjectSlot slot,
Tagged< HeapObject > target )
static

◆ RecordSlot() [3/4]

template<typename THeapObjectSlot >
void v8::internal::MarkCompactCollector::RecordSlot ( Tagged< HeapObject > object,
THeapObjectSlot slot,
Tagged< HeapObject > target )

Definition at line 44 of file mark-compact-inl.h.

Here is the call graph for this function:

◆ RecordSlot() [4/4]

template<typename THeapObjectSlot >
static V8_INLINE void v8::internal::MarkCompactCollector::RecordSlot ( Tagged< HeapObject > object,
THeapObjectSlot slot,
Tagged< HeapObject > target )
static
Here is the caller graph for this function:

◆ RecordStrongDescriptorArraysForWeakening()

void v8::internal::MarkCompactCollector::RecordStrongDescriptorArraysForWeakening ( GlobalHandleVector< DescriptorArray > strong_descriptor_arrays)

Definition at line 3730 of file mark-compact.cc.

Here is the caller graph for this function:

◆ ReleaseEvacuationCandidates()

void v8::internal::MarkCompactCollector::ReleaseEvacuationCandidates ( )
private

Definition at line 5943 of file mark-compact.cc.

◆ ReportAbortedEvacuationCandidateDueToFlags()

void v8::internal::MarkCompactCollector::ReportAbortedEvacuationCandidateDueToFlags ( PageMetadata * page,
MemoryChunk * chunk )
private

Definition at line 5860 of file mark-compact.cc.

Here is the call graph for this function:

◆ ReportAbortedEvacuationCandidateDueToOOM()

void v8::internal::MarkCompactCollector::ReportAbortedEvacuationCandidateDueToOOM ( Address failed_start,
PageMetadata * page )
private

Definition at line 5853 of file mark-compact.cc.

◆ ResetAndRelinkBlackAllocatedPage()

void v8::internal::MarkCompactCollector::ResetAndRelinkBlackAllocatedPage ( PagedSpace * space,
PageMetadata * page )
private

Definition at line 5989 of file mark-compact.cc.

◆ RetainMaps()

void v8::internal::MarkCompactCollector::RetainMaps ( )
private

Definition at line 2411 of file mark-compact.cc.

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

◆ RightTrimDescriptorArray()

void v8::internal::MarkCompactCollector::RightTrimDescriptorArray ( Tagged< DescriptorArray > array,
int descriptors_to_trim )
private

Definition at line 3694 of file mark-compact.cc.

Here is the call graph for this function:

◆ ShouldRecordRelocSlot()

bool v8::internal::MarkCompactCollector::ShouldRecordRelocSlot ( Tagged< InstructionStream > host,
RelocInfo * rinfo,
Tagged< HeapObject > target )
static

Definition at line 3992 of file mark-compact.cc.

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

◆ SpecialClearMapSlot()

bool v8::internal::MarkCompactCollector::SpecialClearMapSlot ( Tagged< HeapObject > host,
Tagged< Map > dead_target,
HeapObjectSlot slot )
private

Definition at line 3252 of file mark-compact.cc.

Here is the call graph for this function:

◆ StartCompaction()

bool v8::internal::MarkCompactCollector::StartCompaction ( StartCompactionMode mode)

Definition at line 331 of file mark-compact.cc.

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

◆ StartMarking()

void v8::internal::MarkCompactCollector::StartMarking ( std::shared_ptr<::heap::base::IncrementalMarkingSchedule > schedule = {})

Definition at line 404 of file mark-compact.cc.

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

◆ StartSweepNewSpace()

void v8::internal::MarkCompactCollector::StartSweepNewSpace ( )
private

Definition at line 5955 of file mark-compact.cc.

Here is the call graph for this function:

◆ StartSweepSpace()

void v8::internal::MarkCompactCollector::StartSweepSpace ( PagedSpace * space)
private

Definition at line 6004 of file mark-compact.cc.

Here is the call graph for this function:

◆ Sweep()

void v8::internal::MarkCompactCollector::Sweep ( )
private

Definition at line 6102 of file mark-compact.cc.

Here is the caller graph for this function:

◆ SweepArrayBufferExtensions()

void v8::internal::MarkCompactCollector::SweepArrayBufferExtensions ( )
private

Definition at line 925 of file mark-compact.cc.

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

◆ SweepLargeSpace()

void v8::internal::MarkCompactCollector::SweepLargeSpace ( LargeObjectSpace * space)
private

Definition at line 6074 of file mark-compact.cc.

Here is the caller graph for this function:

◆ TearDown()

void v8::internal::MarkCompactCollector::TearDown ( )

Definition at line 296 of file mark-compact.cc.

Here is the call graph for this function:

◆ TransitionArrayNeedsCompaction()

bool v8::internal::MarkCompactCollector::TransitionArrayNeedsCompaction ( Tagged< TransitionArray > transitions,
int num_transitions )
private

Definition at line 3601 of file mark-compact.cc.

Here is the call graph for this function:

◆ TrimDescriptorArray()

void v8::internal::MarkCompactCollector::TrimDescriptorArray ( Tagged< Map > map,
Tagged< DescriptorArray > descriptors )
private

Definition at line 3752 of file mark-compact.cc.

◆ TrimEnumCache()

void v8::internal::MarkCompactCollector::TrimEnumCache ( Tagged< Map > map,
Tagged< DescriptorArray > descriptors )
private

Definition at line 3772 of file mark-compact.cc.

◆ UpdatePointersAfterEvacuation()

void v8::internal::MarkCompactCollector::UpdatePointersAfterEvacuation ( )
private

Definition at line 5596 of file mark-compact.cc.

Here is the call graph for this function:

◆ UpdatePointersInClientHeap()

void v8::internal::MarkCompactCollector::UpdatePointersInClientHeap ( Isolate * client)
private

Definition at line 5705 of file mark-compact.cc.

Here is the call graph for this function:

◆ UpdatePointersInClientHeaps()

void v8::internal::MarkCompactCollector::UpdatePointersInClientHeaps ( )
private

Definition at line 5697 of file mark-compact.cc.

Here is the call graph for this function:

◆ UpdatePointersInPointerTables()

void v8::internal::MarkCompactCollector::UpdatePointersInPointerTables ( )
private

Definition at line 5763 of file mark-compact.cc.

Here is the call graph for this function:

◆ UseBackgroundThreadsInCycle()

bool v8::internal::MarkCompactCollector::UseBackgroundThreadsInCycle ( ) const
inline

Definition at line 183 of file mark-compact.h.

Here is the caller graph for this function:

◆ VerifyEphemeronMarking()

void v8::internal::MarkCompactCollector::VerifyEphemeronMarking ( )
private

Definition at line 2303 of file mark-compact.cc.

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

◆ VerifyMarking()

void v8::internal::MarkCompactCollector::VerifyMarking ( )

Definition at line 808 of file mark-compact.cc.

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

◆ weak_objects()

WeakObjects * v8::internal::MarkCompactCollector::weak_objects ( )
inline

Definition at line 180 of file mark-compact.h.

Here is the caller graph for this function:

◆ WeakenStrongDescriptorArrays()

void v8::internal::MarkCompactCollector::WeakenStrongDescriptorArrays ( )
private

Definition at line 3737 of file mark-compact.cc.

Friends And Related Symbol Documentation

◆ Evacuator

friend class Evacuator
friend

Definition at line 469 of file mark-compact.h.

◆ PrecisePagePinningVisitor

friend class PrecisePagePinningVisitor
friend

Definition at line 472 of file mark-compact.h.

◆ RecordMigratedSlotVisitor

friend class RecordMigratedSlotVisitor
friend

Definition at line 470 of file mark-compact.h.

◆ RootMarkingVisitor

friend class RootMarkingVisitor
friend

Definition at line 471 of file mark-compact.h.

Member Data Documentation

◆ aborted_evacuation_candidates_due_to_flags_

std::vector<PageMetadata*> v8::internal::MarkCompactCollector::aborted_evacuation_candidates_due_to_flags_
private

Definition at line 442 of file mark-compact.h.

◆ aborted_evacuation_candidates_due_to_oom_

std::vector<std::pair<Address, PageMetadata*> > v8::internal::MarkCompactCollector::aborted_evacuation_candidates_due_to_oom_
private

Definition at line 441 of file mark-compact.h.

◆ black_allocation_

bool v8::internal::MarkCompactCollector::black_allocation_ = false
private

Definition at line 418 of file mark-compact.h.

◆ code_flush_mode_

base::EnumSet<CodeFlushMode> v8::internal::MarkCompactCollector::code_flush_mode_
private

Definition at line 463 of file mark-compact.h.

◆ compacting_

bool v8::internal::MarkCompactCollector::compacting_ = false
private

Definition at line 417 of file mark-compact.h.

◆ empty_new_space_pages_to_be_swept_

std::vector<PageMetadata*> v8::internal::MarkCompactCollector::empty_new_space_pages_to_be_swept_
private

Definition at line 465 of file mark-compact.h.

◆ epoch_

unsigned v8::internal::MarkCompactCollector::epoch_ = 0
private

Definition at line 457 of file mark-compact.h.

◆ evacuation_candidates_

std::vector<PageMetadata*> v8::internal::MarkCompactCollector::evacuation_candidates_
private

Definition at line 436 of file mark-compact.h.

◆ have_code_to_deoptimize_

bool v8::internal::MarkCompactCollector::have_code_to_deoptimize_ = false
private

Definition at line 419 of file mark-compact.h.

◆ heap_

Heap* const v8::internal::MarkCompactCollector::heap_
private

Definition at line 394 of file mark-compact.h.

◆ is_shared_space_isolate_

const bool v8::internal::MarkCompactCollector::is_shared_space_isolate_
private

Definition at line 413 of file mark-compact.h.

◆ kEphemeronChunkSize

const int v8::internal::MarkCompactCollector::kEphemeronChunkSize = 8 * KB
staticprivate

Definition at line 382 of file mark-compact.h.

◆ key_to_values_

KeyToValues v8::internal::MarkCompactCollector::key_to_values_
private

Definition at line 446 of file mark-compact.h.

◆ local_marking_worklists_

std::unique_ptr<MarkingWorklists::Local> v8::internal::MarkCompactCollector::local_marking_worklists_
private

Definition at line 423 of file mark-compact.h.

◆ local_weak_objects_

std::unique_ptr<WeakObjects::Local> v8::internal::MarkCompactCollector::local_weak_objects_
private

Definition at line 428 of file mark-compact.h.

◆ marking_state_

MarkingState* const v8::internal::MarkCompactCollector::marking_state_
private

Definition at line 448 of file mark-compact.h.

◆ marking_visitor_

std::unique_ptr<MainMarkingVisitor> v8::internal::MarkCompactCollector::marking_visitor_
private

Definition at line 427 of file mark-compact.h.

◆ marking_worklists_

MarkingWorklists v8::internal::MarkCompactCollector::marking_worklists_
private

Definition at line 422 of file mark-compact.h.

◆ mutex_

base::Mutex v8::internal::MarkCompactCollector::mutex_
private

Definition at line 396 of file mark-compact.h.

◆ native_context_inferrer_

NativeContextInferrer v8::internal::MarkCompactCollector::native_context_inferrer_
private

Definition at line 429 of file mark-compact.h.

◆ native_context_stats_

NativeContextStats v8::internal::MarkCompactCollector::native_context_stats_
private

Definition at line 430 of file mark-compact.h.

◆ new_space_evacuation_pages_

std::vector<PageMetadata*> v8::internal::MarkCompactCollector::new_space_evacuation_pages_
private

Definition at line 439 of file mark-compact.h.

◆ non_atomic_marking_state_

NonAtomicMarkingState* const v8::internal::MarkCompactCollector::non_atomic_marking_state_
private

Definition at line 449 of file mark-compact.h.

◆ old_space_evacuation_pages_

std::vector<PageMetadata*> v8::internal::MarkCompactCollector::old_space_evacuation_pages_
private

Definition at line 438 of file mark-compact.h.

◆ page_parallel_job_semaphore_

base::Semaphore v8::internal::MarkCompactCollector::page_parallel_job_semaphore_ {0}
private

Definition at line 397 of file mark-compact.h.

◆ parallel_marking_

bool v8::internal::MarkCompactCollector::parallel_marking_ = false
private

Definition at line 420 of file mark-compact.h.

◆ promoted_large_pages_

std::vector<LargePageMetadata*> v8::internal::MarkCompactCollector::promoted_large_pages_
private

Definition at line 443 of file mark-compact.h.

◆ strong_descriptor_arrays_

std::vector<GlobalHandleVector<DescriptorArray> > v8::internal::MarkCompactCollector::strong_descriptor_arrays_
private

Definition at line 432 of file mark-compact.h.

◆ strong_descriptor_arrays_mutex_

base::Mutex v8::internal::MarkCompactCollector::strong_descriptor_arrays_mutex_
private

Definition at line 433 of file mark-compact.h.

◆ sweeper_

Sweeper* const v8::internal::MarkCompactCollector::sweeper_
private

Definition at line 450 of file mark-compact.h.

◆ use_background_threads_in_cycle_

bool v8::internal::MarkCompactCollector::use_background_threads_in_cycle_ = false
private

Definition at line 467 of file mark-compact.h.

◆ uses_shared_heap_

const bool v8::internal::MarkCompactCollector::uses_shared_heap_
private

Definition at line 412 of file mark-compact.h.

◆ weak_objects_

WeakObjects v8::internal::MarkCompactCollector::weak_objects_
private

Definition at line 425 of file mark-compact.h.


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