| Index: src/incremental-marking.cc
|
| diff --git a/src/incremental-marking.cc b/src/incremental-marking.cc
|
| index 8fe89b4a98c4500ed5527fd602ab55793e21896a..f3255e21ebf75022ce40b774f9cc5578fc0e2adf 100644
|
| --- a/src/incremental-marking.cc
|
| +++ b/src/incremental-marking.cc
|
| @@ -743,7 +743,7 @@ void IncrementalMarking::Finalize() {
|
| }
|
|
|
|
|
| -void IncrementalMarking::MarkingComplete() {
|
| +void IncrementalMarking::MarkingComplete(CompletionAction action) {
|
| state_ = COMPLETE;
|
| // We will set the stack guard to request a GC now. This will mean the rest
|
| // of the GC gets performed as soon as possible (we can't do a GC here in a
|
| @@ -754,13 +754,14 @@ void IncrementalMarking::MarkingComplete() {
|
| if (FLAG_trace_incremental_marking) {
|
| PrintF("[IncrementalMarking] Complete (normal).\n");
|
| }
|
| - if (!heap_->idle_notification_will_schedule_next_gc()) {
|
| + if (action == GC_VIA_STACK_GUARD) {
|
| heap_->isolate()->stack_guard()->RequestGC();
|
| }
|
| }
|
|
|
|
|
| -void IncrementalMarking::Step(intptr_t allocated_bytes) {
|
| +void IncrementalMarking::Step(intptr_t allocated_bytes,
|
| + CompletionAction action) {
|
| if (heap_->gc_state() != Heap::NOT_IN_GC ||
|
| !FLAG_incremental_marking ||
|
| !FLAG_incremental_marking_steps ||
|
| @@ -833,7 +834,7 @@ void IncrementalMarking::Step(intptr_t allocated_bytes) {
|
| Marking::MarkBlack(obj_mark_bit);
|
| MemoryChunk::IncrementLiveBytesFromGC(obj->address(), size);
|
| }
|
| - if (marking_deque_.IsEmpty()) MarkingComplete();
|
| + if (marking_deque_.IsEmpty()) MarkingComplete(action);
|
| }
|
|
|
| allocated_ = 0;
|
|
|