How Does Java Both Optimize Hot Loops and Allow Debugging
cliffc.org
cliffc.org
"Basically, we re-enter a clone of the loop from above…. a clone specially made to be re-entered at any iteration"
This is put forward as the explanation for how variables are mutated in the debugger, but as a mechanism for "un-unrolling" the loop it probably serves to support such conditional breakpoints too.
for( int i=0; i<N; i++ )
sum += A[i] // set a breakpoint here, for "i>1e6" or maybe "i>1e7"