diff --git a/ConflictSet.cpp b/ConflictSet.cpp index b7b79c0..9dfddff 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -3419,32 +3419,28 @@ PRESERVE_NONE void begin(CheckJob *job, CheckContext *context) { std::min(job->begin.size(), job->end.size())); if (job->lcp == int(job->begin.size()) && job->end.size() == job->begin.size() + 1 && job->end.back() == 0) { - job->continuation = check_point_read_state_machine::begin; // Call directly since we have nothing to prefetch - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return check_point_read_state_machine::begin(job, context); } if (job->lcp == int(job->begin.size() - 1) && job->end.size() == job->begin.size() && int(job->begin.back()) + 1 == int(job->end.back())) { - job->continuation = check_prefix_read_state_machine::begin; // Call directly since we have nothing to prefetch - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return check_prefix_read_state_machine::begin(job, context); } ++context->readContext.range_read_accum; job->remaining = job->begin.subspan(0, job->lcp); if (job->remaining.size() == 0) { - job->continuation = doneCommonPrefixIterTable[job->n->getType()]; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return doneCommonPrefixIterTable[job->n->getType()](job, context); } auto [c, maxV] = getChildAndMaxVersion(job->n, job->remaining[0]); job->maxV = maxV; job->child = c; if (job->child == nullptr) { - job->continuation = doneCommonPrefixIterTable[job->n->getType()]; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return doneCommonPrefixIterTable[job->n->getType()](job, context); } job->continuation = commonPrefixIterTable[c.getType()]; @@ -3464,8 +3460,8 @@ void common_prefix_iter(CheckJob *job, CheckContext *context) { int i = longestCommonPrefix(child->partialKey(), job->remaining.data() + 1, cl); if (i != child->partialKeyLen) { - job->continuation = doneCommonPrefixIterTable[job->n->getType()]; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return doneCommonPrefixIterTable[job->n->getType()](job, + context); } } job->n = child; @@ -3482,16 +3478,14 @@ void common_prefix_iter(CheckJob *job, CheckContext *context) { ++context->readContext.range_read_iterations_accum; if (job->remaining.size() == 0) { - job->continuation = done_common_prefix_iter; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return done_common_prefix_iter(job, context); } auto [c, maxV] = getChildAndMaxVersion(child, job->remaining[0]); job->maxV = maxV; job->child = c; if (job->child == nullptr) { - job->continuation = done_common_prefix_iter; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return done_common_prefix_iter(job, context); } job->continuation = commonPrefixIterTable[c.getType()]; @@ -3590,8 +3584,7 @@ PRESERVE_NONE void done_common_prefix_iter(CheckJob *job, auto c = nextSibling(job->n); job->n = c; if (job->n == nullptr) { - job->continuation = done_left_side_iter; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return done_left_side_iter(job, context); } job->continuation = leftSideDownLeftSpineTable[c.getType()]; __builtin_prefetch(job->n); @@ -3634,18 +3627,16 @@ PRESERVE_NONE void left_side_iter(CheckJob *job, CheckContext *context) { job->setResult(false); MUSTTAIL return complete(job, context); } - job->continuation = done_left_side_iter; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return done_left_side_iter(job, context); } else { auto c = nextSibling(n); job->n = c; if (job->n == nullptr) { - job->continuation = done_left_side_iter; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return done_left_side_iter(job, context); } job->continuation = leftSideDownLeftSpineTable[c.getType()]; __builtin_prefetch(job->n); - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return keepGoing(job, context); } } if (commonLen == n->partialKeyLen) { @@ -3661,14 +3652,12 @@ PRESERVE_NONE void left_side_iter(CheckJob *job, CheckContext *context) { job->setResult(false); MUSTTAIL return complete(job, context); } - job->continuation = done_left_side_iter; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return done_left_side_iter(job, context); } } if (job->maxV <= job->readVersion) { - job->continuation = done_left_side_iter; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return done_left_side_iter(job, context); } ++context->readContext.range_read_iterations_accum; @@ -3692,14 +3681,12 @@ PRESERVE_NONE void left_side_iter(CheckJob *job, CheckContext *context) { auto c = getChildGeq(n, job->remaining[0]); if (c != nullptr) { job->n = c; - job->continuation = done_left_side_iter; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return done_left_side_iter(job, context); } else { auto c = nextSibling(job->n); job->n = c; if (job->n == nullptr) { - job->continuation = done_left_side_iter; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return done_left_side_iter(job, context); } job->continuation = leftSideDownLeftSpineTable[c.getType()]; __builtin_prefetch(job->n); @@ -3754,8 +3741,7 @@ void left_side_down_left_spine(CheckJob *job, CheckContext *context) { job->setResult(false); MUSTTAIL return complete(job, context); } - job->continuation = done_left_side_iter; - MUSTTAIL return job->continuation(job, context); + MUSTTAIL return done_left_side_iter(job, context); } auto c = getFirstChildExists(n); job->n = c;