Improve "complete" codegen for interleaved state machines

This commit is contained in:
2024-10-28 22:15:05 -07:00
parent dc16eccf06
commit 6a6fe5738a

View File

@@ -3284,13 +3284,14 @@ PRESERVE_NONE void complete(Job *job, Context *context) {
} }
job->prev->next = job->next; job->prev->next = job->next;
job->next->prev = job->prev; job->next->prev = job->prev;
job = job->prev; job = job->next;
MUSTTAIL return job->continuation(job, context);
} else { } else {
int temp = context->started++; int temp = context->started++;
job->init(context->queries + temp, context->results + temp, context->root, job->init(context->queries + temp, context->results + temp, context->root,
context->oldestVersionFullPrecision); context->oldestVersionFullPrecision);
MUSTTAIL return job->continuation(job, context);
} }
MUSTTAIL return keepGoing(job, context);
} }
template <class NodeT> template <class NodeT>
@@ -4112,12 +4113,13 @@ PRESERVE_NONE void complete(Job *job, Context *context) {
} }
job->prev->next = job->next; job->prev->next = job->next;
job->next->prev = job->prev; job->next->prev = job->prev;
job = job->prev; job = job->next;
MUSTTAIL return job->continuation(job, context);
} else { } else {
int temp = context->started++; int temp = context->started++;
job->init(context, temp); job->init(context, temp);
MUSTTAIL return job->continuation(job, context);
} }
MUSTTAIL return keepGoing(job, context);
} }
template <class NodeT> PRESERVE_NONE void iter(Job *, Context *); template <class NodeT> PRESERVE_NONE void iter(Job *, Context *);