Erm... Does this mean that the void functions themselves do or do not need to leave an svalue at the stack before returning?
They don't need to.
First I thought, they should not leave anything. Then I found some sample code in the Shuffler which explicitly does a push_int(0) at the end of a void function, so I copied that. Which is it now?
Both are fine; apply will check if the function pushed anything and push a zero if it didn't.