In the last use of something on the stack, instead of storing and loading we can just let it be removed from the stack for good. It is no longer needed.
No jump operations before the next store (there could be a jump to a label above that relies on the local variable). Checking recursively for jump is very difficult and requires a stack, so this rule is simplified to NO jump operations
In the last use of something on the stack, instead of storing and loading we can just let it be removed from the stack for good. It is no longer needed.
EXAMPLE from bench01/backtracksolver.j
We can remove all of these astore/aload combos eliminating 8 lines!!!
Optimized: