From 39273424c145f06bf6f7b26dcdac0320672577ae Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Wed, 19 Jun 2024 12:16:09 -0700 Subject: [PATCH] Only search backward for materializing clear range --- VersionedMap.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/VersionedMap.cpp b/VersionedMap.cpp index c4109ea..f90c552 100644 --- a/VersionedMap.cpp +++ b/VersionedMap.cpp @@ -1220,20 +1220,20 @@ VersionedMap::Iterator::operator*() const { void materializeMutations(VersionedMap::Iterator::Impl *impl, const Entry *prev) { - if (prev == nullptr) { - Finger copy; - impl->finger.copyTo(copy); - impl->map->move(copy, impl->version); - if (copy.searchPathSize() > 0) { - prev = impl->map->mm.base[copy.backNode()].entry; - } else { - assert(!impl->map->mm.base[impl->finger.backNode()].entry->clearTo()); - } - } - const auto &entry = *impl->map->mm.base[impl->finger.backNode()].entry; impl->mutationCount = 0; if (entry.clearTo()) { + if (prev == nullptr) { + Finger copy; + impl->finger.copyTo(copy); + impl->map->move(copy, impl->version); + if (copy.searchPathSize() > 0) { + prev = impl->map->mm.base[copy.backNode()].entry; + } else { + assert(!impl->map->mm.base[impl->finger.backNode()].entry->clearTo()); + } + } + impl->mutations[impl->mutationCount++] = { prev->getKey(), entry.getKey(),