Index: src/heap/heap.cc |
diff --git a/src/heap/heap.cc b/src/heap/heap.cc |
index ae9f4fd71ce0e88a25167112279a7cc1d5d54de6..74115665eb13372cfbaa3d34452657d173b3427a 100644 |
--- a/src/heap/heap.cc |
+++ b/src/heap/heap.cc |
@@ -923,10 +923,8 @@ void Heap::ReportExternalMemoryPressure(const char* gc_reason) { |
double deadline = MonotonicallyIncreasingTimeInMs() + |
FLAG_external_allocation_limit_incremental_time; |
incremental_marking()->AdvanceIncrementalMarking( |
- deadline, |
- IncrementalMarking::StepActions(IncrementalMarking::GC_VIA_STACK_GUARD, |
- IncrementalMarking::FORCE_MARKING, |
- IncrementalMarking::FORCE_COMPLETION)); |
+ deadline, IncrementalMarking::GC_VIA_STACK_GUARD, |
+ IncrementalMarking::FORCE_COMPLETION); |
} |
} |
@@ -1043,9 +1041,9 @@ bool Heap::CollectGarbage(GarbageCollector collector, const char* gc_reason, |
// Start incremental marking for the next cycle. The heap snapshot |
// generator needs incremental marking to stay off after it aborted. |
- if (!ShouldAbortIncrementalMarking() && incremental_marking()->IsStopped() && |
- incremental_marking()->ShouldActivateEvenWithoutIdleNotification()) { |
- StartIncrementalMarking(kNoGCFlags, kNoGCCallbackFlags, "GC epilogue"); |
+ if (!ShouldAbortIncrementalMarking()) { |
+ StartIncrementalMarkingIfNeeded(kNoGCFlags, kNoGCCallbackFlags, |
+ "GC epilogue"); |
} |
return next_gc_likely_to_collect_more; |
@@ -1081,6 +1079,13 @@ void Heap::StartIncrementalMarking(int gc_flags, |
incremental_marking()->Start(reason); |
} |
+void Heap::StartIncrementalMarkingIfNeeded( |
+ int gc_flags, const GCCallbackFlags gc_callback_flags, const char* reason) { |
+ if (incremental_marking()->IsStopped() && |
+ incremental_marking()->ShouldActivateEvenWithoutIdleNotification()) { |
+ StartIncrementalMarking(gc_flags, gc_callback_flags, reason); |
+ } |
+} |
void Heap::StartIdleIncrementalMarking() { |
gc_idle_time_handler_->ResetNoProgressCounter(); |
@@ -4287,7 +4292,7 @@ bool Heap::PerformIdleTimeAction(GCIdleTimeAction action, |
result = IncrementalMarkingJob::IdleTask::Step(this, deadline_in_ms) == |
IncrementalMarkingJob::IdleTask::kDone; |
} |
- break; |
+ break |
} |
case DO_FULL_GC: { |
DCHECK(contexts_disposed_ > 0); |