Commit 387f2151 authored by Keishi Hattori's avatar Keishi Hattori Committed by Commit Bot

Oilpan: Run incremental marking from RunScheduledGC

We tried running incremental marking from a normal task but noticed it could cause large delays when there are many queued tasks.

This moves incremental marking step/finalize to RunScheduledGC where we run after every task.

Change-Id: Ibdd4ee0f7fa3a2ac1245c37581c0109f0206f94a
Reviewed-on: https://chromium-review.googlesource.com/1109455Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Keishi Hattori <keishi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#569169}
parent deb6bb60
......@@ -728,27 +728,11 @@ void ThreadState::PerformIdleLazySweep(TimeTicks deadline) {
void ThreadState::ScheduleIncrementalMarkingStep() {
CHECK(!IsSweepingInProgress());
// BlinkGC::kTesting incremental marking tasks are executed by
// RunScheduledGC().
if (current_gc_data_.reason != BlinkGC::kTesting) {
Platform::Current()->CurrentThread()->GetTaskRunner()->PostTask(
FROM_HERE, WTF::Bind(&ThreadState::RunIncrementalMarkingStepTask,
WTF::Unretained(this)));
}
SetGCState(kIncrementalMarkingStepScheduled);
}
void ThreadState::ScheduleIncrementalMarkingFinalize() {
CHECK(!IsSweepingInProgress());
// BlinkGC::kTesting incremental marking tasks are executed by
// RunScheduledGC().
if (current_gc_data_.reason != BlinkGC::kTesting) {
Platform::Current()->CurrentThread()->GetTaskRunner()->PostTask(
FROM_HERE, WTF::Bind(&ThreadState::RunIncrementalMarkingFinalizeTask,
WTF::Unretained(this)));
}
SetGCState(kIncrementalMarkingFinalizeScheduled);
}
......@@ -930,12 +914,10 @@ void ThreadState::RunScheduledGC(BlinkGC::StackState stack_state) {
// Idle time GC will be scheduled by Blink Scheduler.
break;
case kIncrementalMarkingStepScheduled:
if (current_gc_data_.reason == BlinkGC::kTesting)
RunIncrementalMarkingStepTask();
IncrementalMarkingStep();
break;
case kIncrementalMarkingFinalizeScheduled:
if (current_gc_data_.reason == BlinkGC::kTesting)
RunIncrementalMarkingFinalizeTask();
IncrementalMarkingFinalize();
break;
case kIncrementalGCScheduled:
IncrementalMarkingStart(reason_for_scheduled_gc_);
......@@ -1457,18 +1439,6 @@ void ThreadState::DisableWrapperTracingBarrier() {
SetWrapperTracing(false);
}
void ThreadState::RunIncrementalMarkingStepTask() {
if (GetGCState() != kIncrementalMarkingStepScheduled)
return;
IncrementalMarkingStep();
}
void ThreadState::RunIncrementalMarkingFinalizeTask() {
if (GetGCState() != kIncrementalMarkingFinalizeScheduled)
return;
IncrementalMarkingFinalize();
}
void ThreadState::IncrementalMarkingStart(BlinkGC::GCReason reason) {
VLOG(2) << "[state:" << this << "] "
<< "IncrementalMarking: Start";
......
......@@ -293,9 +293,6 @@ class PLATFORM_EXPORT ThreadState {
void ScheduleIncrementalMarkingStep();
void ScheduleIncrementalMarkingFinalize();
void RunIncrementalMarkingStepTask();
void RunIncrementalMarkingFinalizeTask();
void IncrementalMarkingStart(BlinkGC::GCReason);
void IncrementalMarkingStep();
void IncrementalMarkingFinalize();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment