From 72469ebb6ea81d3e27839940025e171ecadf538a Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Thu, 15 Aug 2024 15:07:44 -0700 Subject: [PATCH] Erase along left spine. Not faster --- ConflictSet.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/ConflictSet.cpp b/ConflictSet.cpp index f1e0955..c7a9774 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -3266,6 +3266,27 @@ void addWriteRange(Node *&root, std::span begin, eraseBetween(*useAsRoot, begin[0] + 1, end[0], tls); + // // Erase along left spine + // for (auto [n, key] = std::make_tuple(useAsRoot, begin);;) { + // auto before = key; + // auto **child = &getOrCreateChild(*n, key, writeVersion, tls); + // if (key.size() > 0) { + // eraseBetween(*child, int(key[0]) + 1, 256, tls); + // if ((*child)->numChildren == 1 && !(*child)->entryPresent) { + // Node *dummy = nullptr; + // mergeWithChild(*child, tls, impl, dummy, + // static_cast(*child)); + // key = before; + // continue; + // } + // } else { + // eraseBetween(*child, 0, 256, tls); + // beginNode = *child; + // break; + // } + // n = child; + // } + for (beginNode = nextLogical(beginNode); beginNode != endNode; beginNode = erase(beginNode, tls, impl, /*logical*/ true, endNode)) { }