From 6a6fe5738ad9c864adf00f5f4baafffcaba1aac8 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Mon, 28 Oct 2024 22:15:05 -0700 Subject: [PATCH] Improve "complete" codegen for interleaved state machines --- ConflictSet.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 4d581f8..097f000 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -3284,13 +3284,14 @@ PRESERVE_NONE void complete(Job *job, Context *context) { } job->prev->next = job->next; job->next->prev = job->prev; - job = job->prev; + job = job->next; + MUSTTAIL return job->continuation(job, context); } else { int temp = context->started++; job->init(context->queries + temp, context->results + temp, context->root, context->oldestVersionFullPrecision); + MUSTTAIL return job->continuation(job, context); } - MUSTTAIL return keepGoing(job, context); } template @@ -4112,12 +4113,13 @@ PRESERVE_NONE void complete(Job *job, Context *context) { } job->prev->next = job->next; job->next->prev = job->prev; - job = job->prev; + job = job->next; + MUSTTAIL return job->continuation(job, context); } else { int temp = context->started++; job->init(context, temp); + MUSTTAIL return job->continuation(job, context); } - MUSTTAIL return keepGoing(job, context); } template PRESERVE_NONE void iter(Job *, Context *);