Um... goto &SUB doesn't
do the same thing as a normal sub call; no new stack frame is created, which is what tail call optimization is about, only creating a new stack frame when necessary. But it's still awfully slow (actually I've not done a speed comparison between goto SUB
and the approach I'm currently using, and I'm not entirely sure how I'd code the benchmark.
The big problem with goto LABEL is that it's even more awfully slow; doing a linear search through the source file every time it's called, which is why I discounted it. And implementing continuations means using a computed goto.
I really should try an implementation that uses goto SUB though.