diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 5a5ff20..98b2b74 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -2511,27 +2511,12 @@ namespace { // Return true if the max version among all keys that start with key[:prefixLen] // that are >= key is <= readVersion struct CheckRangeLeftSide { - CheckRangeLeftSide(Node *n, std::span key, int prefixLen, - InternalVersionT readVersion, ReadContext *tls) - : n(n), remaining(key), prefixLen(prefixLen), readVersion(readVersion), - impl(tls->impl), tls(tls) { -#if DEBUG_VERBOSE && !defined(NDEBUG) - fprintf(stderr, "Check range left side from %s for keys starting with %s\n", - printable(key).c_str(), - printable(key.subspan(0, prefixLen)).c_str()); -#endif - } - - Node *n; - std::span remaining; - int prefixLen; - InternalVersionT readVersion; - ConflictSet::Impl *impl; - ReadContext *tls; - int searchPathLen = 0; bool ok; - bool step() { + bool step(Node *n, std::span key, int prefixLen, + InternalVersionT readVersion, ReadContext *tls) { + auto remaining = key; + int searchPathLen = 0; for (;; ++tls->range_read_iterations_accum) { if (remaining.size() == 0) { assert(searchPathLen >= prefixLen); @@ -2831,9 +2816,8 @@ bool checkRangeRead(Node *n, std::span begin, // This makes it safe to check maxVersion within CheckRangeLeftSide. If this // were false, then we would have returned above since lcp == begin.size(). assert(!(n->parent == nullptr && begin.size() == 0)); - CheckRangeLeftSide checkRangeLeftSide{n, begin, lcp + 1, readVersion, tls}; - for (; !checkRangeLeftSide.step(); ++tls->range_read_iterations_accum) - ; + CheckRangeLeftSide checkRangeLeftSide{}; + checkRangeLeftSide.step(n, begin, lcp + 1, readVersion, tls); CheckRangeRightSide checkRangeRightSide{n, end, lcp + 1, readVersion, tls}; for (; !checkRangeRightSide.step(); ++tls->range_read_iterations_accum) ;