Some quick notes/questions, I’ll probably have more when I’ve digested it a bit further.
This one is pretty simple, and I agree. Implementation-wise, it can be done either as you describe it or something else, but it’s not a big change.
I agree this is unfortunate.
This is not necessarily true. Geth does a one-pass analysis, and the lookup is O(1) on the bitmap. If we have N different (small) analysis:es for each contract, it will probably actually be slower.
It can be done lazily even now. Not until an actual jump is there any need to do the analysis (geth does this, AFAIR). In theory, the analysis could stop after going past the desired jump location, and continue later if needed.
I agree with the other benefits, and the concept in general.
Oh, that’s a bit nasty, nice catch!