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) { ...@@ -728,27 +728,11 @@ void ThreadState::PerformIdleLazySweep(TimeTicks deadline) {
void ThreadState::ScheduleIncrementalMarkingStep() { void ThreadState::ScheduleIncrementalMarkingStep() {
CHECK(!IsSweepingInProgress()); 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); SetGCState(kIncrementalMarkingStepScheduled);
} }
void ThreadState::ScheduleIncrementalMarkingFinalize() { void ThreadState::ScheduleIncrementalMarkingFinalize() {
CHECK(!IsSweepingInProgress()); 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); SetGCState(kIncrementalMarkingFinalizeScheduled);
} }
...@@ -930,12 +914,10 @@ void ThreadState::RunScheduledGC(BlinkGC::StackState stack_state) { ...@@ -930,12 +914,10 @@ void ThreadState::RunScheduledGC(BlinkGC::StackState stack_state) {
// Idle time GC will be scheduled by Blink Scheduler. // Idle time GC will be scheduled by Blink Scheduler.
break; break;
case kIncrementalMarkingStepScheduled: case kIncrementalMarkingStepScheduled:
if (current_gc_data_.reason == BlinkGC::kTesting) IncrementalMarkingStep();
RunIncrementalMarkingStepTask();
break; break;
case kIncrementalMarkingFinalizeScheduled: case kIncrementalMarkingFinalizeScheduled:
if (current_gc_data_.reason == BlinkGC::kTesting) IncrementalMarkingFinalize();
RunIncrementalMarkingFinalizeTask();
break; break;
case kIncrementalGCScheduled: case kIncrementalGCScheduled:
IncrementalMarkingStart(reason_for_scheduled_gc_); IncrementalMarkingStart(reason_for_scheduled_gc_);
...@@ -1457,18 +1439,6 @@ void ThreadState::DisableWrapperTracingBarrier() { ...@@ -1457,18 +1439,6 @@ void ThreadState::DisableWrapperTracingBarrier() {
SetWrapperTracing(false); SetWrapperTracing(false);
} }
void ThreadState::RunIncrementalMarkingStepTask() {
if (GetGCState() != kIncrementalMarkingStepScheduled)
return;
IncrementalMarkingStep();
}
void ThreadState::RunIncrementalMarkingFinalizeTask() {
if (GetGCState() != kIncrementalMarkingFinalizeScheduled)
return;
IncrementalMarkingFinalize();
}
void ThreadState::IncrementalMarkingStart(BlinkGC::GCReason reason) { void ThreadState::IncrementalMarkingStart(BlinkGC::GCReason reason) {
VLOG(2) << "[state:" << this << "] " VLOG(2) << "[state:" << this << "] "
<< "IncrementalMarking: Start"; << "IncrementalMarking: Start";
......
...@@ -293,9 +293,6 @@ class PLATFORM_EXPORT ThreadState { ...@@ -293,9 +293,6 @@ class PLATFORM_EXPORT ThreadState {
void ScheduleIncrementalMarkingStep(); void ScheduleIncrementalMarkingStep();
void ScheduleIncrementalMarkingFinalize(); void ScheduleIncrementalMarkingFinalize();
void RunIncrementalMarkingStepTask();
void RunIncrementalMarkingFinalizeTask();
void IncrementalMarkingStart(BlinkGC::GCReason); void IncrementalMarkingStart(BlinkGC::GCReason);
void IncrementalMarkingStep(); void IncrementalMarkingStep();
void IncrementalMarkingFinalize(); 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