diff options
Diffstat (limited to 'chromium/v8/src/heap/incremental-marking.cc')
-rw-r--r-- | chromium/v8/src/heap/incremental-marking.cc | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/chromium/v8/src/heap/incremental-marking.cc b/chromium/v8/src/heap/incremental-marking.cc index 22051eaab2d..58eb0aa4097 100644 --- a/chromium/v8/src/heap/incremental-marking.cc +++ b/chromium/v8/src/heap/incremental-marking.cc @@ -16,22 +16,34 @@ namespace v8 { namespace internal { +IncrementalMarking::StepActions IncrementalMarking::IdleStepActions() { + return StepActions(IncrementalMarking::NO_GC_VIA_STACK_GUARD, + IncrementalMarking::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, @@ -472,9 +484,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); @@ -484,6 +499,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()) { @@ -826,7 +842,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); } |