been applied to remove array range check, null checks and array checks in loops.
h5. Loop Predication for Array Range Check Elimination
Use loop predicate to remove array range checks in a loop.
Example:
original loop
for (int i=init, i<limit; i+=stride) {
...
if( scale*i + offset < a.length) { // loop with range check
... a\[scale*i + offset\] ...
} else raising_uncommon_trap();
...
}
after loop predication
if( scale*imax < a.length) {
for (int i=init, i<limit; i+=stride) {//loop without range check
...
... a\[scale*i + offset\] ...
}
} else raising_uncommon_trap(); |