| Index: src/heap/memory-reducer.cc
|
| diff --git a/src/heap/memory-reducer.cc b/src/heap/memory-reducer.cc
|
| index 7063fc4b2eb5c549ad6c1ba26e350461a4c824da..df24df577dbc702f3eaf42ed83192ea2fb467331 100644
|
| --- a/src/heap/memory-reducer.cc
|
| +++ b/src/heap/memory-reducer.cc
|
| @@ -95,13 +95,20 @@ void MemoryReducer::NotifyBackgroundIdleNotification(const Event& event) {
|
| if (old_action == kWait && state_.action == kWait &&
|
| old_started_gcs + 1 == state_.started_gcs) {
|
| DCHECK(heap()->incremental_marking()->IsStopped());
|
| - DCHECK(FLAG_incremental_marking);
|
| - heap()->StartIdleIncrementalMarking();
|
| - if (FLAG_trace_gc_verbose) {
|
| - PrintIsolate(heap()->isolate(),
|
| - "Memory reducer: started GC #%d"
|
| - " (background idle)\n",
|
| - state_.started_gcs);
|
| + // TODO(ulan): Replace it with incremental marking GC once
|
| + // chromium:490559 is fixed.
|
| + if (event.time_ms > state_.last_gc_time_ms + kLongDelayMs) {
|
| + heap()->CollectAllGarbage(Heap::kReduceMemoryFootprintMask,
|
| + "memory reducer background GC");
|
| + } else {
|
| + DCHECK(FLAG_incremental_marking);
|
| + heap()->StartIdleIncrementalMarking();
|
| + if (FLAG_trace_gc_verbose) {
|
| + PrintIsolate(heap()->isolate(),
|
| + "Memory reducer: started GC #%d"
|
| + " (background idle)\n",
|
| + state_.started_gcs);
|
| + }
|
| }
|
| }
|
| }
|
|
|