Hi Erik,
Yeah, I see how that can be confusing.
In my previous answer I assumed you meant there are pages that are only swept when we start the next GC, which is uncommon but possible.
What you're describing now, where all pages are swept but the GC remains in a sweeping state, is very likely and intentional.
Sweeping the pages can happen either concurrently or during allocations.
Switching state happens after all pages are swept but can be delayed.
Finalizing sweeping, and the state change that goes with it, requires some accounting work which, for performance reasons, we don't want to do during an allocation (it also has to happen on the main thread so can be concurrent).
Therefore the state remains as is until we can "safely" (i.e. without incurring an unnecessary performance cost) finalize sweeping, which is usually when we start the next GC (minor or major).
I hope that clarifies things.
Omer