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

Classes

class  IncrementalSweepTask
 
class  MutatorThreadSweepingScope
 

Public Member Functions

 SweeperImpl (HeapBase &heap)
 
 ~SweeperImpl ()
 
void Start (SweepingConfig config)
 
void SweepForTask (v8::base::TimeDelta max_duration)
 
void SweepForLowPriorityTask (v8::base::TimeDelta max_duration)
 
bool SweepForLargeAllocation (BaseSpace *space, size_t size, v8::base::TimeDelta max_duration)
 
bool SweepForNormalAllocation (BaseSpace *space, size_t size, v8::base::TimeDelta max_duration)
 
bool SweepForAllocationIfRunning (BaseSpace *space, size_t size, v8::base::TimeDelta max_duration)
 
bool FinishIfRunning ()
 
bool IsConcurrentSweepingDone () const
 
void FinishIfOutOfWork ()
 
void Finish ()
 
void FinalizeSweep ()
 
void NotifyDone ()
 
void WaitForConcurrentSweepingForTesting ()
 
bool IsSweepingOnMutatorThread () const
 
bool IsSweepingInProgress () const
 
bool PerformSweepOnMutatorThread (v8::base::TimeDelta max_duration, StatsCollector::ScopeId internal_scope_id, MutatorThreadSweepingMode sweeping_mode)
 
void AddMutatorThreadSweepingObserver (Sweeper::SweepingOnMutatorThreadObserver *observer)
 
void RemoveMutatorThreadSweepingObserver (Sweeper::SweepingOnMutatorThreadObserver *observer)
 

Private Types

enum class  SweepResult { kFullyDone , kInProgress , kMainThreadDoneConcurrentInProgress }
 
using FreeMemoryHandling = SweepingConfig::FreeMemoryHandling
 

Private Member Functions

SweepResult SweepInForegroundTaskImpl (v8::base::TimeDelta max_duration, StatsCollector::ScopeId scope)
 
void ScheduleIncrementalSweeping (std::optional< v8::base::TimeDelta > delay={})
 
void ScheduleLowPriorityIncrementalSweeping (std::optional< v8::base::TimeDelta > delay={})
 
void ScheduleConcurrentSweeping ()
 
void CancelAllSweepingTasks ()
 
void SynchronizeAndFinalizeConcurrentAndIncrementalSweeping ()
 

Private Attributes

RawHeapheap_
 
NormalPageMemoryPoolpage_pool_
 
StatsCollector *const stats_collector_
 
SpaceStates space_states_
 
SweepingState empty_normal_pages_
 
SweepingState empty_large_pages_
 
size_t unused_destroyed_normal_pages_ = 0
 
cppgc::Platformplatform_
 
std::shared_ptr< cppgc::TaskRunnerforeground_task_runner_
 
std::shared_ptr< cppgc::TaskRunnerlow_priority_foreground_task_runner_
 
SweepingConfig config_
 
IncrementalSweepTask::Handle incremental_sweeper_handle_
 
IncrementalSweepTask::Handle incremental_sweeper_low_priority_handle_
 
std::unique_ptr< cppgc::JobHandleconcurrent_sweeper_handle_
 
std::vector< Sweeper::SweepingOnMutatorThreadObserver * > mutator_thread_sweeping_observers_
 
bool low_priority_task_ran_ = false
 
bool is_in_progress_ = false
 
bool notify_done_pending_ = false
 
bool is_sweeping_on_mutator_thread_ = false
 

Static Private Attributes

static constexpr double kMaxHeapPercentageForNoSweeping = 50
 
static constexpr auto kDelayWhileLowPrioritySweepingMakesProgress
 
static constexpr auto kDelayWhileConcurrentSweepingMakesProgress
 
static constexpr auto kDelayForRegularPrioritySweeping
 

Detailed Description

Definition at line 961 of file sweeper.cc.

Member Typedef Documentation

◆ FreeMemoryHandling

Member Enumeration Documentation

◆ SweepResult

Enumerator
kFullyDone 
kInProgress 
kMainThreadDoneConcurrentInProgress 

Definition at line 1491 of file sweeper.cc.

Constructor & Destructor Documentation

◆ SweeperImpl()

cppgc::internal::Sweeper::SweeperImpl::SweeperImpl ( HeapBase & heap)
inlineexplicit

Definition at line 965 of file sweeper.cc.

◆ ~SweeperImpl()

cppgc::internal::Sweeper::SweeperImpl::~SweeperImpl ( )
inline

Definition at line 973 of file sweeper.cc.

Member Function Documentation

◆ AddMutatorThreadSweepingObserver()

void cppgc::internal::Sweeper::SweeperImpl::AddMutatorThreadSweepingObserver ( Sweeper::SweepingOnMutatorThreadObserver * observer)
inline

Definition at line 1398 of file sweeper.cc.

◆ CancelAllSweepingTasks()

void cppgc::internal::Sweeper::SweeperImpl::CancelAllSweepingTasks ( )
inlineprivate

Definition at line 1586 of file sweeper.cc.

◆ FinalizeSweep()

void cppgc::internal::Sweeper::SweeperImpl::FinalizeSweep ( )
inline

Definition at line 1317 of file sweeper.cc.

◆ Finish()

void cppgc::internal::Sweeper::SweeperImpl::Finish ( )
inline

Definition at line 1286 of file sweeper.cc.

◆ FinishIfOutOfWork()

void cppgc::internal::Sweeper::SweeperImpl::FinishIfOutOfWork ( )
inline

Definition at line 1245 of file sweeper.cc.

◆ FinishIfRunning()

bool cppgc::internal::Sweeper::SweeperImpl::FinishIfRunning ( )
inline

Definition at line 1210 of file sweeper.cc.

◆ IsConcurrentSweepingDone()

bool cppgc::internal::Sweeper::SweeperImpl::IsConcurrentSweepingDone ( ) const
inline

Definition at line 1239 of file sweeper.cc.

◆ IsSweepingInProgress()

bool cppgc::internal::Sweeper::SweeperImpl::IsSweepingInProgress ( ) const
inline

Definition at line 1348 of file sweeper.cc.

◆ IsSweepingOnMutatorThread()

bool cppgc::internal::Sweeper::SweeperImpl::IsSweepingOnMutatorThread ( ) const
inline

Definition at line 1344 of file sweeper.cc.

◆ NotifyDone()

void cppgc::internal::Sweeper::SweeperImpl::NotifyDone ( )
inline

Definition at line 1329 of file sweeper.cc.

◆ PerformSweepOnMutatorThread()

bool cppgc::internal::Sweeper::SweeperImpl::PerformSweepOnMutatorThread ( v8::base::TimeDelta max_duration,
StatsCollector::ScopeId internal_scope_id,
MutatorThreadSweepingMode sweeping_mode )
inline

Definition at line 1350 of file sweeper.cc.

Here is the call graph for this function:

◆ RemoveMutatorThreadSweepingObserver()

void cppgc::internal::Sweeper::SweeperImpl::RemoveMutatorThreadSweepingObserver ( Sweeper::SweepingOnMutatorThreadObserver * observer)
inline

Definition at line 1406 of file sweeper.cc.

◆ ScheduleConcurrentSweeping()

void cppgc::internal::Sweeper::SweeperImpl::ScheduleConcurrentSweeping ( )
inlineprivate

Definition at line 1575 of file sweeper.cc.

Here is the call graph for this function:

◆ ScheduleIncrementalSweeping()

void cppgc::internal::Sweeper::SweeperImpl::ScheduleIncrementalSweeping ( std::optional< v8::base::TimeDelta > delay = {})
inlineprivate

Definition at line 1545 of file sweeper.cc.

◆ ScheduleLowPriorityIncrementalSweeping()

void cppgc::internal::Sweeper::SweeperImpl::ScheduleLowPriorityIncrementalSweeping ( std::optional< v8::base::TimeDelta > delay = {})
inlineprivate

Definition at line 1560 of file sweeper.cc.

◆ Start()

void cppgc::internal::Sweeper::SweeperImpl::Start ( SweepingConfig config)
inline

Definition at line 975 of file sweeper.cc.

Here is the call graph for this function:

◆ SweepForAllocationIfRunning()

bool cppgc::internal::Sweeper::SweeperImpl::SweepForAllocationIfRunning ( BaseSpace * space,
size_t size,
v8::base::TimeDelta max_duration )
inline

Definition at line 1193 of file sweeper.cc.

◆ SweepForLargeAllocation()

bool cppgc::internal::Sweeper::SweeperImpl::SweepForLargeAllocation ( BaseSpace * space,
size_t size,
v8::base::TimeDelta max_duration )
inline

Definition at line 1077 of file sweeper.cc.

Here is the call graph for this function:

◆ SweepForLowPriorityTask()

void cppgc::internal::Sweeper::SweeperImpl::SweepForLowPriorityTask ( v8::base::TimeDelta max_duration)
inline

Definition at line 1059 of file sweeper.cc.

◆ SweepForNormalAllocation()

bool cppgc::internal::Sweeper::SweeperImpl::SweepForNormalAllocation ( BaseSpace * space,
size_t size,
v8::base::TimeDelta max_duration )
inline

Definition at line 1126 of file sweeper.cc.

Here is the call graph for this function:

◆ SweepForTask()

void cppgc::internal::Sweeper::SweeperImpl::SweepForTask ( v8::base::TimeDelta max_duration)
inline

Definition at line 1033 of file sweeper.cc.

◆ SweepInForegroundTaskImpl()

SweepResult cppgc::internal::Sweeper::SweeperImpl::SweepInForegroundTaskImpl ( v8::base::TimeDelta max_duration,
StatsCollector::ScopeId scope )
inlineprivate

Definition at line 1514 of file sweeper.cc.

Here is the call graph for this function:

◆ SynchronizeAndFinalizeConcurrentAndIncrementalSweeping()

void cppgc::internal::Sweeper::SweeperImpl::SynchronizeAndFinalizeConcurrentAndIncrementalSweeping ( )
inlineprivate

Definition at line 1598 of file sweeper.cc.

◆ WaitForConcurrentSweepingForTesting()

void cppgc::internal::Sweeper::SweeperImpl::WaitForConcurrentSweepingForTesting ( )
inline

Definition at line 1340 of file sweeper.cc.

Member Data Documentation

◆ concurrent_sweeper_handle_

std::unique_ptr<cppgc::JobHandle> cppgc::internal::Sweeper::SweeperImpl::concurrent_sweeper_handle_
private

Definition at line 1642 of file sweeper.cc.

◆ config_

SweepingConfig cppgc::internal::Sweeper::SweeperImpl::config_
private

Definition at line 1639 of file sweeper.cc.

◆ empty_large_pages_

SweepingState cppgc::internal::Sweeper::SweeperImpl::empty_large_pages_
private

Definition at line 1631 of file sweeper.cc.

◆ empty_normal_pages_

SweepingState cppgc::internal::Sweeper::SweeperImpl::empty_normal_pages_
private

Definition at line 1626 of file sweeper.cc.

◆ foreground_task_runner_

std::shared_ptr<cppgc::TaskRunner> cppgc::internal::Sweeper::SweeperImpl::foreground_task_runner_
private

Definition at line 1637 of file sweeper.cc.

◆ heap_

RawHeap& cppgc::internal::Sweeper::SweeperImpl::heap_
private

Definition at line 1620 of file sweeper.cc.

◆ incremental_sweeper_handle_

IncrementalSweepTask::Handle cppgc::internal::Sweeper::SweeperImpl::incremental_sweeper_handle_
private

Definition at line 1640 of file sweeper.cc.

◆ incremental_sweeper_low_priority_handle_

IncrementalSweepTask::Handle cppgc::internal::Sweeper::SweeperImpl::incremental_sweeper_low_priority_handle_
private

Definition at line 1641 of file sweeper.cc.

◆ is_in_progress_

bool cppgc::internal::Sweeper::SweeperImpl::is_in_progress_ = false
private

Definition at line 1649 of file sweeper.cc.

◆ is_sweeping_on_mutator_thread_

bool cppgc::internal::Sweeper::SweeperImpl::is_sweeping_on_mutator_thread_ = false
private

Definition at line 1653 of file sweeper.cc.

◆ kDelayForRegularPrioritySweeping

auto cppgc::internal::Sweeper::SweeperImpl::kDelayForRegularPrioritySweeping
staticconstexprprivate
Initial value:
=
static constexpr TimeDelta FromMilliseconds(int64_t milliseconds)
Definition time.h:84

Definition at line 1511 of file sweeper.cc.

◆ kDelayWhileConcurrentSweepingMakesProgress

auto cppgc::internal::Sweeper::SweeperImpl::kDelayWhileConcurrentSweepingMakesProgress
staticconstexprprivate
Initial value:

Definition at line 1506 of file sweeper.cc.

◆ kDelayWhileLowPrioritySweepingMakesProgress

auto cppgc::internal::Sweeper::SweeperImpl::kDelayWhileLowPrioritySweepingMakesProgress
staticconstexprprivate
Initial value:

Definition at line 1503 of file sweeper.cc.

◆ kMaxHeapPercentageForNoSweeping

double cppgc::internal::Sweeper::SweeperImpl::kMaxHeapPercentageForNoSweeping = 50
staticconstexprprivate

Definition at line 1501 of file sweeper.cc.

◆ low_priority_foreground_task_runner_

std::shared_ptr<cppgc::TaskRunner> cppgc::internal::Sweeper::SweeperImpl::low_priority_foreground_task_runner_
private

Definition at line 1638 of file sweeper.cc.

◆ low_priority_task_ran_

bool cppgc::internal::Sweeper::SweeperImpl::low_priority_task_ran_ = false
private

Definition at line 1647 of file sweeper.cc.

◆ mutator_thread_sweeping_observers_

std::vector<Sweeper::SweepingOnMutatorThreadObserver*> cppgc::internal::Sweeper::SweeperImpl::mutator_thread_sweeping_observers_
private

Definition at line 1644 of file sweeper.cc.

◆ notify_done_pending_

bool cppgc::internal::Sweeper::SweeperImpl::notify_done_pending_ = false
private

Definition at line 1650 of file sweeper.cc.

◆ page_pool_

NormalPageMemoryPool& cppgc::internal::Sweeper::SweeperImpl::page_pool_
private

Definition at line 1621 of file sweeper.cc.

◆ platform_

cppgc::Platform* cppgc::internal::Sweeper::SweeperImpl::platform_
private

Definition at line 1636 of file sweeper.cc.

◆ space_states_

SpaceStates cppgc::internal::Sweeper::SweeperImpl::space_states_
private

Definition at line 1623 of file sweeper.cc.

◆ stats_collector_

StatsCollector* const cppgc::internal::Sweeper::SweeperImpl::stats_collector_
private

Definition at line 1622 of file sweeper.cc.

◆ unused_destroyed_normal_pages_

size_t cppgc::internal::Sweeper::SweeperImpl::unused_destroyed_normal_pages_ = 0
private

Definition at line 1635 of file sweeper.cc.


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