48 user_blocking_task_runner_(
50 user_visible_task_runner_(
64 v8_flags.incremental_marking_start_user_visible &&
69 const bool non_nestable_tasks_enabled =
71 auto task = std::make_unique<Task>(
heap_->
isolate(),
this,
72 non_nestable_tasks_enabled
73 ? StackState::kNoHeapPointers
74 : StackState::kMayContainHeapPointers);
75 if (non_nestable_tasks_enabled) {
78 task_runner->
PostTask(std::move(task));
85 "[IncrementalMarking] Job: Schedule\n");
92 "V8.IncrementalMarkingJob.Task");
103 heap->tracer()->RecordTimeToIncrementalMarkingTask(
113 if (
heap->IncrementalMarkingLimitReached() !=
114 Heap::IncrementalMarkingLimit::kNoLimit) {
115 heap->StartIncrementalMarking(
heap->GCFlagsForIncrementalMarking(),
119 heap->StartMinorMSIncrementalMarkingIfNeeded();
129 "[IncrementalMarking] Job: Run\n");
135 heap->incremental_marking()->AdvanceAndFinalizeIfComplete();
139 "[IncrementalMarking] Using regular task based on flags\n");
148 std::optional<base::TimeDelta> current_time_to_task;
154 return current_time_to_task;
void PostTask(std::unique_ptr< Task > task, const SourceLocation &location=SourceLocation::Current())
virtual bool NonNestableTasksEnabled() const
void PostNonNestableTask(std::unique_ptr< Task > task, const SourceLocation &location=SourceLocation::Current())
std::optional< base::TimeDelta > AverageTimeToIncrementalMarkingTask() const
bool IsTearingDown() const
IncrementalMarking * incremental_marking() const
Isolate * isolate() const
void RunInternal() override
Task(Isolate *isolate, IncrementalMarkingJob *job, StackState stack_state)
IncrementalMarkingJob *const job_
const StackState stack_state_
Isolate * isolate() const
v8::base::TimeTicks scheduled_time_
std::optional< v8::base::TimeDelta > AverageTimeToTask() const
const std::shared_ptr< v8::TaskRunner > user_blocking_task_runner_
std::optional< v8::base::TimeDelta > CurrentTimeToTask() const
void ScheduleTask(TaskPriority priority=TaskPriority::kUserBlocking)
const std::shared_ptr< v8::TaskRunner > user_visible_task_runner_
IncrementalMarkingJob(Heap *heap)
bool IsMajorMarking() const
StackGuard * stack_guard()
LiftoffAssembler::CacheState state
V8_EXPORT_PRIVATE FlagValues v8_flags
@ kGCCallbackScheduleIdleGarbageCollection
#define DCHECK_GE(v1, v2)
#define TRACE_EVENT_CALL_STATS_SCOPED(isolate, category_group, name)
#define V8_UNLIKELY(condition)