I'm not sure the other ways are any better. The way to transfer to a context without disturbing its stack is to do a process switch.
[...]
One of the advantages the process switch versions have is in not updating the receiving context sp there's a chance the context-to-stack mapping machinery won't flush the context to the heap. In the end it might actually be faster.