So to take the example from the article, if your optimising compiler unrolls the loop so there are four loop iterations per jump, and i is incrementing 0, 4, 8, 12... if you set a conditional breakpoint on i=10, how does it work out that it needs to break at the earlier safepoint (when i=8) and switch to the non-optimised code?