How is sprite memory snapshotted and restored?

The Design & Implementation of Sprites · The Fly Blog is a really fun read. One thing I’m left wondering is how you deal with suspending and resuming the VM execution state. I’m guessing Firecracker snapshotting just like with suspending a Fly machine? But doesn’t this then require writing however much memory is being used (so maybe 1 GB or more) to your object storage every time a sprite sleeps and then reading from that every time it wakes? Seems like this would be unacceptably inefficient/slow, so what magic do you use to optimize that?