It also depends how leakproof the abstractions are. Goto statement and if-statement might both compile to similar jump instructions in assembly, but it's abstracted away. Similarly dynamic dispatch can abstract the branching so it can be ignored.