diff options
Diffstat (limited to 'deps/v8/src/heap/array-buffer-sweeper.h')
-rw-r--r-- | deps/v8/src/heap/array-buffer-sweeper.h | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/deps/v8/src/heap/array-buffer-sweeper.h b/deps/v8/src/heap/array-buffer-sweeper.h index 14360dd67f..b49e54b994 100644 --- a/deps/v8/src/heap/array-buffer-sweeper.h +++ b/deps/v8/src/heap/array-buffer-sweeper.h @@ -9,6 +9,7 @@ #include "src/base/logging.h" #include "src/base/platform/mutex.h" +#include "src/heap/sweeper.h" #include "src/objects/js-array-buffer.h" #include "src/tasks/cancelable-task.h" @@ -46,11 +47,13 @@ struct ArrayBufferList final { class ArrayBufferSweeper final { public: enum class SweepingType { kYoung, kFull }; + enum class TreatAllYoungAsPromoted { kNo, kYes }; explicit ArrayBufferSweeper(Heap* heap); ~ArrayBufferSweeper(); - void RequestSweep(SweepingType sweeping_type); + void RequestSweep(SweepingType sweeping_type, + TreatAllYoungAsPromoted treat_young_as_promoted); void EnsureFinished(); // Track the given ArrayBufferExtension for the given JSArrayBuffer. @@ -67,13 +70,16 @@ class ArrayBufferSweeper final { // Bytes accounted in the old generation. Rebuilt during sweeping. size_t OldBytes() const { return old().ApproximateBytes(); } + bool sweeping_in_progress() const { + DCHECK_IMPLIES(!job_, local_sweeper_.IsEmpty()); + return job_.get(); + } + private: struct SweepingJob; enum class SweepingState { kInProgress, kDone }; - bool sweeping_in_progress() const { return job_.get(); } - // Finishes sweeping if it is already done. void FinishIfDone(); @@ -82,17 +88,21 @@ class ArrayBufferSweeper final { void IncrementExternalMemoryCounters(size_t bytes); void DecrementExternalMemoryCounters(size_t bytes); - void Prepare(SweepingType type); + void Prepare(SweepingType type, + TreatAllYoungAsPromoted treat_all_young_as_promoted); void Finalize(); void ReleaseAll(ArrayBufferList* extension); + void DoSweep(); + Heap* const heap_; std::unique_ptr<SweepingJob> job_; base::Mutex sweeping_mutex_; base::ConditionVariable job_finished_; ArrayBufferList young_; ArrayBufferList old_; + Sweeper::LocalSweeper local_sweeper_; }; } // namespace internal |