diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 2f8776e..c33dce5 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -4087,12 +4087,13 @@ void pointIter(Job *job, Context *context) { MUSTTAIL return complete(job, context); } + ++context->iterations; + if (!job->getChildAndIndex(child, job->remaining.front())) [[unlikely]] { *job->result = {job->n, job->remaining}; MUSTTAIL return complete(job, context); } - ++context->iterations; job->continuation = PointIterTable::table[job->child.getType()]; __builtin_prefetch(job->child); MUSTTAIL return keepGoing(job, context); @@ -4193,11 +4194,12 @@ void prefixIter(Job *job, Context *context) { } } + ++context->iterations; + if (!job->getChildAndIndex(child, job->remaining.front())) [[unlikely]] { goto noNodeOnSearchPath; } - ++context->iterations; job->continuation = PrefixIterTable::table[job->child.getType()]; __builtin_prefetch(job->child); MUSTTAIL return keepGoing(job, context); @@ -4267,11 +4269,12 @@ void beginIter(Job *job, Context *context) { goto gotoEndIter; } + ++context->iterations; + if (!job->getChildAndIndex(child, job->begin.front())) [[unlikely]] { goto gotoEndIter; } - ++context->iterations; job->continuation = BeginIterTable::table[job->child.getType()]; __builtin_prefetch(job->child); MUSTTAIL return keepGoing(job, context); @@ -4331,13 +4334,14 @@ void endIter(Job *job, Context *context) { MUSTTAIL return complete(job, context); } + ++context->iterations; + if (!job->getChildAndIndex(child, job->end.front())) [[unlikely]] { *job->result = {job->n, job->begin, job->endNode, job->end}; assert(job->endNode != nullptr); MUSTTAIL return complete(job, context); } - ++context->iterations; job->continuation = EndIterTable::table[job->child.getType()]; __builtin_prefetch(job->child); MUSTTAIL return keepGoing(job, context);