Comment by pizlonator
1 year ago
> How exactly do we force the CPU to use the last opcode in its branch prediction model?
In the tail call case: because each opcode is implemented by a function that has an indirect tail call at the end.
In the computed goto case: each `goto curInst->handler` is its own indirect branch.
> Related to that: in your second example, what exactly happens in `goto curInst->handler;`?
`curInst->handler` is a pointer that points to some label. The goto is an indirect branch to exactly that pointer value, i.e. that label.
It's a super crazy and dangerous feature! It obviates the need for a switch; it is the switch.
No comments yet
Contribute on Hacker News ↗