// Copyright 2020 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_HEAP_BASE_INCREMENTAL_MARKING_SCHEDULE_H_ #define V8_HEAP_BASE_INCREMENTAL_MARKING_SCHEDULE_H_ #include <atomic> #include <memory> #include <optional> #include "src/base/platform/time.h" namespace heap::base { // Incremental marking schedule that assumes a fixed time window for scheduling // incremental marking steps. // // Usage: // 1. NotifyIncrementalMarkingStart() // 2. Any combination of: // -> UpdateMutatorThreadMarkedBytes(mutator_marked_bytes) // -> AddConcurrentlyMarkedBytes(concurrently_marked_bytes_delta) // -> MarkSynchronously(GetNextIncrementalStepDuration(estimated_live_size)) class V8_EXPORT_PRIVATE IncrementalMarkingSchedule final { … }; } // namespace heap::base #endif // V8_HEAP_BASE_INCREMENTAL_MARKING_SCHEDULE_H_