diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 097f000..3274b88 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -4127,29 +4127,6 @@ template PRESERVE_NONE void iter(Job *, Context *); static Continuation iterTable[] = {iter, iter, iter, iter, iter}; -PRESERVE_NONE void begin(Job *job, Context *context) { - if (job->remaining.size() == 0) [[unlikely]] { - context->results[job->index] = {job->n, job->remaining}; - MUSTTAIL return complete(job, context); - } - - TaggedNodePointer *child = - getChildUpdatingMaxVersion(job->n, job->remaining, context->writeVersion); - - if (child == nullptr) [[unlikely]] { - context->results[job->index] = {job->n, job->remaining}; - MUSTTAIL return complete(job, context); - } - job->n = *child; - if (job->remaining.size() == 0) [[unlikely]] { - context->results[job->index] = {job->n, job->remaining}; - MUSTTAIL return complete(job, context); - } - job->continuation = iterTable[child->getType()]; - __builtin_prefetch(job->n); - MUSTTAIL return keepGoing(job, context); -} - template void iter(Job *job, Context *context) { assert(NodeT::kType == job->n->getType()); NodeT *n = static_cast(job->n); @@ -4172,10 +4149,16 @@ template void iter(Job *job, Context *context) { void Job::init(Context *context, int index) { this->index = index; - this->continuation = interleaved_insert::begin; - this->remaining = std::span(context->writes[index].begin.p, - context->writes[index].begin.len); - this->n = context->root; + remaining = std::span(context->writes[index].begin.p, + context->writes[index].begin.len); + n = context->root; + + if (remaining.size() == 0) [[unlikely]] { + context->results[index] = {n, remaining}; + continuation = interleaved_insert::complete; + } else { + continuation = iterTable[n->getType()]; + } } } // namespace interleaved_insert