diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 8734c02..e50f4e8 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -1680,11 +1680,6 @@ Node *erase(Node *self, WriteContext *tls, ConflictSet::Impl *impl, return result; } -struct Iterator { - Node *n; - int cmp; -}; - Node *nextSibling(Node *node) { for (;;) { if (node->parent == nullptr) { @@ -3667,12 +3662,12 @@ double internal_getMetricValue(const ConflictSet::MetricsV1 *metric) { // GCOVR_EXCL_START -Iterator firstGeqLogical(Node *n, const std::span key) { +Node *firstGeqLogical(Node *n, const std::span key) { auto remaining = key; for (;;) { if (remaining.size() == 0) { if (n->entryPresent) { - return {n, 0}; + return n; } int c = getChildGeq(n, 0); assert(c >= 0); @@ -3689,7 +3684,7 @@ Iterator firstGeqLogical(Node *n, const std::span key) { } else { n = nextSibling(n); if (n == nullptr) { - return {nullptr, 1}; + return nullptr; } goto downLeftSpine; } @@ -3721,14 +3716,9 @@ Iterator firstGeqLogical(Node *n, const std::span key) { } } downLeftSpine: - for (;;) { - if (n->entryPresent) { - return {n, 1}; - } - int c = getChildGeq(n, 0); - assert(c >= 0); - n = getChildExists(n, c); + for (; !n->entryPresent; n = getFirstChildExists(n)) { } + return n; } void ConflictSet::check(const ReadRange *reads, Result *results, @@ -3935,7 +3925,7 @@ void checkParentPointers(Node *node, bool &success) { } } -Iterator firstGeq(Node *n, std::string_view key) { +Node *firstGeq(Node *n, std::string_view key) { return firstGeqLogical( n, std::span((const uint8_t *)key.data(), key.size())); } @@ -4006,8 +3996,8 @@ checkMaxVersion(Node *root, Node *node, InternalVersionT oldestVersion, auto inc = strinc(key, ok); if (ok) { auto borrowed = firstGeq(root, inc); - if (borrowed.n != nullptr) { - expected = std::max(expected, borrowed.n->entry.rangeVersion); + if (borrowed != nullptr) { + expected = std::max(expected, borrowed->entry.rangeVersion); } } if (maxVersion(node, impl) > oldestVersion &&