diff options
Diffstat (limited to 'chromium/v8/src/heap/cppgc/persistent-node.cc')
-rw-r--r-- | chromium/v8/src/heap/cppgc/persistent-node.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/chromium/v8/src/heap/cppgc/persistent-node.cc b/chromium/v8/src/heap/cppgc/persistent-node.cc index 299cefc5210..9c5113f86a2 100644 --- a/chromium/v8/src/heap/cppgc/persistent-node.cc +++ b/chromium/v8/src/heap/cppgc/persistent-node.cc @@ -7,9 +7,21 @@ #include <algorithm> #include <numeric> +#include "include/cppgc/persistent.h" + namespace cppgc { namespace internal { +PersistentRegion::~PersistentRegion() { + for (auto& slots : nodes_) { + for (auto& node : *slots) { + if (node.IsUsed()) { + static_cast<PersistentBase*>(node.owner())->ClearFromGC(); + } + } + } +} + size_t PersistentRegion::NodesInUse() const { return std::accumulate( nodes_.cbegin(), nodes_.cend(), 0u, [](size_t acc, const auto& slots) { |