| Index: src/heap/incremental-marking.cc
|
| diff --git a/src/heap/incremental-marking.cc b/src/heap/incremental-marking.cc
|
| index 6b447715c895843e09040e617166debcdb11b44b..106b72e3c9729feeaa1069d0e8e2723edbfb0405 100644
|
| --- a/src/heap/incremental-marking.cc
|
| +++ b/src/heap/incremental-marking.cc
|
| @@ -16,22 +16,34 @@ namespace v8 {
|
| namespace internal {
|
|
|
|
|
| +IncrementalMarking::StepActions IncrementalMarking::NoForcedStepActions() {
|
| + return StepActions(IncrementalMarking::NO_GC_VIA_STACK_GUARD,
|
| + IncrementalMarking::DO_NOT_FORCE_MARKING,
|
| + IncrementalMarking::DO_NOT_FORCE_COMPLETION);
|
| +}
|
| +
|
| +
|
| IncrementalMarking::IncrementalMarking(Heap* heap)
|
| : heap_(heap),
|
| state_(STOPPED),
|
| + is_compacting_(false),
|
| steps_count_(0),
|
| old_generation_space_available_at_start_of_incremental_(0),
|
| old_generation_space_used_at_start_of_incremental_(0),
|
| + bytes_rescanned_(0),
|
| should_hurry_(false),
|
| marking_speed_(0),
|
| + bytes_scanned_(0),
|
| allocated_(0),
|
| + write_barriers_invoked_since_last_step_(0),
|
| idle_marking_delay_counter_(0),
|
| no_marking_scope_depth_(0),
|
| unscanned_bytes_of_large_object_(0),
|
| was_activated_(false),
|
| weak_closure_was_overapproximated_(false),
|
| weak_closure_approximation_rounds_(0),
|
| - request_type_(COMPLETE_MARKING) {}
|
| + request_type_(COMPLETE_MARKING),
|
| + gc_callback_flags_(kNoGCCallbackFlags) {}
|
|
|
|
|
| void IncrementalMarking::RecordWriteSlow(HeapObject* obj, Object** slot,
|
| @@ -458,9 +470,12 @@ static void PatchIncrementalMarkingRecordWriteStubs(
|
| }
|
|
|
|
|
| -void IncrementalMarking::Start(int mark_compact_flags) {
|
| +void IncrementalMarking::Start(int mark_compact_flags,
|
| + const GCCallbackFlags gc_callback_flags,
|
| + const char* reason) {
|
| if (FLAG_trace_incremental_marking) {
|
| - PrintF("[IncrementalMarking] Start\n");
|
| + PrintF("[IncrementalMarking] Start (%s)\n",
|
| + (reason == nullptr) ? "unknown reason" : reason);
|
| }
|
| DCHECK(FLAG_incremental_marking);
|
| DCHECK(FLAG_incremental_marking_steps);
|
| @@ -470,6 +485,7 @@ void IncrementalMarking::Start(int mark_compact_flags) {
|
|
|
| ResetStepCounters();
|
|
|
| + gc_callback_flags_ = gc_callback_flags;
|
| was_activated_ = true;
|
|
|
| if (!heap_->mark_compact_collector()->sweeping_in_progress()) {
|
| @@ -812,7 +828,7 @@ void IncrementalMarking::Epilogue() {
|
|
|
| void IncrementalMarking::OldSpaceStep(intptr_t allocated) {
|
| if (IsStopped() && ShouldActivateEvenWithoutIdleNotification()) {
|
| - Start(Heap::kNoGCFlags);
|
| + Start(Heap::kNoGCFlags, kNoGCCallbackFlags, "old space step");
|
| } else {
|
| Step(allocated * kFastMarking / kInitialMarkingSpeed, GC_VIA_STACK_GUARD);
|
| }
|
|
|