| Index: src/heap/incremental-marking-job.h
|
| diff --git a/src/heap/incremental-marking-job.h b/src/heap/incremental-marking-job.h
|
| index 9c78182f2ed3b81a6f08d43fba852aa903b5e986..ccc60c55cbb73458dc467fd13b7757899b5066f4 100644
|
| --- a/src/heap/incremental-marking-job.h
|
| +++ b/src/heap/incremental-marking-job.h
|
| @@ -14,31 +14,13 @@ class Heap;
|
| class Isolate;
|
|
|
| // The incremental marking job uses platform tasks to perform incremental
|
| -// marking steps. The job posts an idle and a delayed task with a large delay.
|
| -// The delayed task performs steps only if the idle task is not making progress.
|
| -// We expect this to be a rare event since incremental marking should finish
|
| -// quickly with the help of the mutator and the idle task.
|
| -// The delayed task guarantees that we eventually finish incremental marking
|
| -// even if the mutator becomes idle and the platform stops running idle tasks,
|
| -// which can happen for background tabs in Chrome.
|
| +// marking steps. The job posts a foreground task that makes a small (~1ms)
|
| +// step and posts another task until the marking is completed.
|
| class IncrementalMarkingJob {
|
| public:
|
| - class IdleTask : public CancelableIdleTask {
|
| + class Task : public CancelableTask {
|
| public:
|
| - explicit IdleTask(Isolate* isolate, IncrementalMarkingJob* job)
|
| - : CancelableIdleTask(isolate), job_(job) {}
|
| - enum Progress { kDone, kMoreWork };
|
| - static Progress Step(Heap* heap, double deadline_in_ms);
|
| - // CancelableIdleTask overrides.
|
| - void RunInternal(double deadline_in_seconds) override;
|
| -
|
| - private:
|
| - IncrementalMarkingJob* job_;
|
| - };
|
| -
|
| - class DelayedTask : public CancelableTask {
|
| - public:
|
| - explicit DelayedTask(Isolate* isolate, IncrementalMarkingJob* job)
|
| + explicit Task(Isolate* isolate, IncrementalMarkingJob* job)
|
| : CancelableTask(isolate), job_(job) {}
|
| static void Step(Heap* heap);
|
| // CancelableTask overrides.
|
| @@ -48,33 +30,18 @@ class IncrementalMarkingJob {
|
| IncrementalMarkingJob* job_;
|
| };
|
|
|
| - // Delay of the delayed task.
|
| - static const double kLongDelayInSeconds;
|
| - static const double kShortDelayInSeconds;
|
| -
|
| - IncrementalMarkingJob()
|
| - : idle_task_pending_(false),
|
| - delayed_task_pending_(false),
|
| - made_progress_since_last_delayed_task_(false) {}
|
| + IncrementalMarkingJob() : task_pending_(false) {}
|
|
|
| - bool ShouldForceMarkingStep() {
|
| - return !made_progress_since_last_delayed_task_;
|
| - }
|
| -
|
| - bool IdleTaskPending() { return idle_task_pending_; }
|
| + bool TaskPending() { return task_pending_; }
|
|
|
| void Start(Heap* heap);
|
|
|
| - void NotifyIdleTask();
|
| - void NotifyDelayedTask();
|
| - void NotifyIdleTaskProgress();
|
| - void ScheduleIdleTask(Heap* heap);
|
| - void ScheduleDelayedTask(Heap* heap);
|
| + void NotifyTask();
|
| +
|
| + void ScheduleTask(Heap* heap);
|
|
|
| private:
|
| - bool idle_task_pending_;
|
| - bool delayed_task_pending_;
|
| - bool made_progress_since_last_delayed_task_;
|
| + bool task_pending_;
|
| };
|
| } // namespace internal
|
| } // namespace v8
|
|
|