what is the rationale behind making vswap!
a macro instead of a function like vreset!
or swap!
?
it seems that macro can be written as a function, and all it does is... double-evaluates the volatile arg expr
Probably performance? Volatiles are designed to be as fast as possible short of an actual local). Even a let binding to guarantee single-eval would compromise that
there is no "double eval" here