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

#include <incremental-marking-schedule.h>

Collaboration diagram for heap::base::IncrementalMarkingSchedule:

Classes

struct  StepInfo
 

Public Member Functions

 IncrementalMarkingSchedule (const IncrementalMarkingSchedule &)=delete
 
IncrementalMarkingScheduleoperator= (const IncrementalMarkingSchedule &)=delete
 
void NotifyIncrementalMarkingStart ()
 
void NotifyConcurrentMarkingStart ()
 
void AddMutatorThreadMarkedBytes (size_t)
 
void AddConcurrentlyMarkedBytes (size_t)
 
size_t GetNextIncrementalStepDuration (size_t estimated_live_bytes)
 
StepInfo GetCurrentStepInfo () const
 
bool ShouldFlushEphemeronPairs ()
 
v8::base::TimeDelta GetTimeSinceLastConcurrentMarkingUpdate ()
 
size_t min_marked_bytes_per_step () const
 
void SetElapsedTimeForTesting (v8::base::TimeDelta)
 

Static Public Member Functions

static std::unique_ptr< IncrementalMarkingScheduleCreate (bool predictable_schedule=false)
 
static std::unique_ptr< IncrementalMarkingScheduleCreateWithMarkedBytesPerStepForTesting (size_t min_marked_bytes_per_step, bool predictable_schedule=false)
 

Static Public Attributes

static constexpr v8::base::TimeDelta kEstimatedMarkingTime
 
static constexpr size_t kStepSizeWhenNotMakingProgress = 64 * 1024
 

Private Member Functions

 IncrementalMarkingSchedule (size_t min_marked_bytes_per_step, bool predictable_schedule)
 
v8::base::TimeDelta GetElapsedTimeSinceMarkingStart ()
 
size_t GetOverallMarkedBytes () const
 
size_t GetConcurrentlyMarkedBytes () const
 

Private Attributes

v8::base::TimeTicks incremental_marking_start_time_
 
size_t mutator_thread_marked_bytes_ = 0
 
std::atomic_size_t concurrently_marked_bytes_ {0}
 
size_t last_estimated_live_bytes_ = 0
 
double ephemeron_pairs_flushing_ratio_target_ = 0.25
 
StepInfo current_step_
 
const size_t min_marked_bytes_per_step_
 
const bool predictable_schedule_ = false
 
std::optional< v8::base::TimeDeltaelapsed_time_override_
 
size_t last_concurrently_marked_bytes_ = 0
 
v8::base::TimeTicks last_concurrently_marked_bytes_update_
 

Static Private Attributes

static constexpr double kEphemeronPairsFlushingRatioIncrements = 0.25
 

Detailed Description

Definition at line 25 of file incremental-marking-schedule.h.

Constructor & Destructor Documentation

◆ IncrementalMarkingSchedule() [1/2]

heap::base::IncrementalMarkingSchedule::IncrementalMarkingSchedule ( const IncrementalMarkingSchedule & )
delete
Here is the caller graph for this function:

◆ IncrementalMarkingSchedule() [2/2]

heap::base::IncrementalMarkingSchedule::IncrementalMarkingSchedule ( size_t min_marked_bytes_per_step,
bool predictable_schedule )
private

Definition at line 39 of file incremental-marking-schedule.cc.

Member Function Documentation

◆ AddConcurrentlyMarkedBytes()

void heap::base::IncrementalMarkingSchedule::AddConcurrentlyMarkedBytes ( size_t marked_bytes)

Definition at line 67 of file incremental-marking-schedule.cc.

Here is the caller graph for this function:

◆ AddMutatorThreadMarkedBytes()

void heap::base::IncrementalMarkingSchedule::AddMutatorThreadMarkedBytes ( size_t marked_bytes)

Definition at line 62 of file incremental-marking-schedule.cc.

Here is the caller graph for this function:

◆ Create()

std::unique_ptr< IncrementalMarkingSchedule > heap::base::IncrementalMarkingSchedule::Create ( bool predictable_schedule = false)
static

Definition at line 24 of file incremental-marking-schedule.cc.

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

◆ CreateWithMarkedBytesPerStepForTesting()

std::unique_ptr< IncrementalMarkingSchedule > heap::base::IncrementalMarkingSchedule::CreateWithMarkedBytesPerStepForTesting ( size_t min_marked_bytes_per_step,
bool predictable_schedule = false )
static

Definition at line 32 of file incremental-marking-schedule.cc.

Here is the call graph for this function:

◆ GetConcurrentlyMarkedBytes()

size_t heap::base::IncrementalMarkingSchedule::GetConcurrentlyMarkedBytes ( ) const
private

Definition at line 76 of file incremental-marking-schedule.cc.

Here is the caller graph for this function:

◆ GetCurrentStepInfo()

IncrementalMarkingSchedule::StepInfo heap::base::IncrementalMarkingSchedule::GetCurrentStepInfo ( ) const

Definition at line 95 of file incremental-marking-schedule.cc.

◆ GetElapsedTimeSinceMarkingStart()

v8::base::TimeDelta heap::base::IncrementalMarkingSchedule::GetElapsedTimeSinceMarkingStart ( )
private

Definition at line 81 of file incremental-marking-schedule.cc.

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

◆ GetNextIncrementalStepDuration()

size_t heap::base::IncrementalMarkingSchedule::GetNextIncrementalStepDuration ( size_t estimated_live_bytes)

Definition at line 99 of file incremental-marking-schedule.cc.

Here is the call graph for this function:

◆ GetOverallMarkedBytes()

size_t heap::base::IncrementalMarkingSchedule::GetOverallMarkedBytes ( ) const
private

Definition at line 72 of file incremental-marking-schedule.cc.

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

◆ GetTimeSinceLastConcurrentMarkingUpdate()

v8::base::TimeDelta heap::base::IncrementalMarkingSchedule::GetTimeSinceLastConcurrentMarkingUpdate ( )

Definition at line 144 of file incremental-marking-schedule.cc.

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

◆ min_marked_bytes_per_step()

size_t heap::base::IncrementalMarkingSchedule::min_marked_bytes_per_step ( ) const
inline

Definition at line 108 of file incremental-marking-schedule.h.

Here is the caller graph for this function:

◆ NotifyConcurrentMarkingStart()

void heap::base::IncrementalMarkingSchedule::NotifyConcurrentMarkingStart ( )

Definition at line 55 of file incremental-marking-schedule.cc.

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

◆ NotifyIncrementalMarkingStart()

void heap::base::IncrementalMarkingSchedule::NotifyIncrementalMarkingStart ( )

Definition at line 48 of file incremental-marking-schedule.cc.

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

◆ operator=()

IncrementalMarkingSchedule & heap::base::IncrementalMarkingSchedule::operator= ( const IncrementalMarkingSchedule & )
delete

◆ SetElapsedTimeForTesting()

void heap::base::IncrementalMarkingSchedule::SetElapsedTimeForTesting ( v8::base::TimeDelta elapsed_time)

Definition at line 159 of file incremental-marking-schedule.cc.

◆ ShouldFlushEphemeronPairs()

bool heap::base::IncrementalMarkingSchedule::ShouldFlushEphemeronPairs ( )

Definition at line 134 of file incremental-marking-schedule.cc.

Here is the call graph for this function:

Member Data Documentation

◆ concurrently_marked_bytes_

std::atomic_size_t heap::base::IncrementalMarkingSchedule::concurrently_marked_bytes_ {0}
private

Definition at line 134 of file incremental-marking-schedule.h.

◆ current_step_

StepInfo heap::base::IncrementalMarkingSchedule::current_step_
private

Definition at line 137 of file incremental-marking-schedule.h.

◆ elapsed_time_override_

std::optional<v8::base::TimeDelta> heap::base::IncrementalMarkingSchedule::elapsed_time_override_
private

Definition at line 140 of file incremental-marking-schedule.h.

◆ ephemeron_pairs_flushing_ratio_target_

double heap::base::IncrementalMarkingSchedule::ephemeron_pairs_flushing_ratio_target_ = 0.25
private

Definition at line 136 of file incremental-marking-schedule.h.

◆ incremental_marking_start_time_

v8::base::TimeTicks heap::base::IncrementalMarkingSchedule::incremental_marking_start_time_
private

Definition at line 132 of file incremental-marking-schedule.h.

◆ kEphemeronPairsFlushingRatioIncrements

double heap::base::IncrementalMarkingSchedule::kEphemeronPairsFlushingRatioIncrements = 0.25
staticconstexprprivate

Definition at line 117 of file incremental-marking-schedule.h.

◆ kEstimatedMarkingTime

v8::base::TimeDelta heap::base::IncrementalMarkingSchedule::kEstimatedMarkingTime
staticconstexpr
Initial value:
=
static constexpr TimeDelta FromMilliseconds(int64_t milliseconds)
Definition time.h:84

Definition at line 51 of file incremental-marking-schedule.h.

◆ kStepSizeWhenNotMakingProgress

size_t heap::base::IncrementalMarkingSchedule::kStepSizeWhenNotMakingProgress = 64 * 1024
staticconstexpr

Definition at line 56 of file incremental-marking-schedule.h.

◆ last_concurrently_marked_bytes_

size_t heap::base::IncrementalMarkingSchedule::last_concurrently_marked_bytes_ = 0
private

Definition at line 141 of file incremental-marking-schedule.h.

◆ last_concurrently_marked_bytes_update_

v8::base::TimeTicks heap::base::IncrementalMarkingSchedule::last_concurrently_marked_bytes_update_
private

Definition at line 142 of file incremental-marking-schedule.h.

◆ last_estimated_live_bytes_

size_t heap::base::IncrementalMarkingSchedule::last_estimated_live_bytes_ = 0
private

Definition at line 135 of file incremental-marking-schedule.h.

◆ min_marked_bytes_per_step_

const size_t heap::base::IncrementalMarkingSchedule::min_marked_bytes_per_step_
private

Definition at line 138 of file incremental-marking-schedule.h.

◆ mutator_thread_marked_bytes_

size_t heap::base::IncrementalMarkingSchedule::mutator_thread_marked_bytes_ = 0
private

Definition at line 133 of file incremental-marking-schedule.h.

◆ predictable_schedule_

const bool heap::base::IncrementalMarkingSchedule::predictable_schedule_ = false
private

Definition at line 139 of file incremental-marking-schedule.h.


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