| Index: src/heap/heap.cc
|
| diff --git a/src/heap/heap.cc b/src/heap/heap.cc
|
| index 951199d8166568caac66afe426a4299c92e3d172..8ff555cd34c473361dae85af2827104ac8e2133e 100644
|
| --- a/src/heap/heap.cc
|
| +++ b/src/heap/heap.cc
|
| @@ -4186,9 +4186,13 @@ void Heap::FinalizeIncrementalMarkingIfComplete(
|
| if (incremental_marking()->IsMarking() &&
|
| (incremental_marking()->IsReadyToOverApproximateWeakClosure() ||
|
| (!incremental_marking()->finalize_marking_completed() &&
|
| - MarkingDequesAreEmpty()))) {
|
| + mark_compact_collector()->marking_deque()->IsEmpty() &&
|
| + local_embedder_heap_tracer()->ShouldFinalizeIncrementalMarking()))) {
|
| FinalizeIncrementalMarking(gc_reason);
|
| - } else if (incremental_marking()->IsComplete() || MarkingDequesAreEmpty()) {
|
| + } else if (incremental_marking()->IsComplete() ||
|
| + (mark_compact_collector()->marking_deque()->IsEmpty() &&
|
| + local_embedder_heap_tracer()
|
| + ->ShouldFinalizeIncrementalMarking())) {
|
| CollectAllGarbage(current_gc_flags_, gc_reason);
|
| }
|
| }
|
| @@ -4200,13 +4204,16 @@ bool Heap::TryFinalizeIdleIncrementalMarking(
|
| tracer()->FinalIncrementalMarkCompactSpeedInBytesPerMillisecond();
|
| if (incremental_marking()->IsReadyToOverApproximateWeakClosure() ||
|
| (!incremental_marking()->finalize_marking_completed() &&
|
| - MarkingDequesAreEmpty() &&
|
| + mark_compact_collector()->marking_deque()->IsEmpty() &&
|
| + local_embedder_heap_tracer()->ShouldFinalizeIncrementalMarking() &&
|
| gc_idle_time_handler_->ShouldDoOverApproximateWeakClosure(
|
| idle_time_in_ms))) {
|
| FinalizeIncrementalMarking(gc_reason);
|
| return true;
|
| } else if (incremental_marking()->IsComplete() ||
|
| - (MarkingDequesAreEmpty() &&
|
| + (mark_compact_collector()->marking_deque()->IsEmpty() &&
|
| + local_embedder_heap_tracer()
|
| + ->ShouldFinalizeIncrementalMarking() &&
|
| gc_idle_time_handler_->ShouldDoFinalIncrementalMarkCompact(
|
| idle_time_in_ms, size_of_objects,
|
| final_incremental_mark_compact_speed_in_bytes_per_ms))) {
|
|
|