Erase along left spine. Not faster
This commit is contained in:
@@ -3266,6 +3266,27 @@ void addWriteRange(Node *&root, std::span<const uint8_t> 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<Node3 *>(*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)) {
|
||||
}
|
||||
|
Reference in New Issue
Block a user