A switch only selects on one character. To continue lexing you need the switch inside a loop. The compiler might optimize the switch itself to a jump table - but what does each case do - jumps back to the start of the loop, after which it enters the jump table again. There are two branches involved.
The point of direct threading is that there is no loop - you simply jump directly to the handler for the next character at the end of each handler.