Program optimizations have evolved from static to dynamic. However, runtime optimization often suffers from not knowing global behavior of a program?s execution, and not affording sophisticated program analysis. On the other hand, offline profiling techniques overcome both obstacles but are oblivious to the effects of program inputs.