An efficient online path profiling framework for Java just-in-time compilers
Abstract
Collecting hot paths is important for restructuring and optimizing the target program effectively. It is, however, challenging for just-in-time (JIT) compilers, which must collect path profiles on the fly at runtime. Here, we propose an efficient online path profiling technique, called structural path profiling (SPP), suitable for JIT compilers. The key idea is to partition the target method into a hierarchy of the nested graphs based on the loop structure, and then to profile each graph independently. With SPP, we can collect accurate path profiles efficiently with low overhead. The experimental results show that our technique can collect path profiles with an accuracy of around 90% compared to the offline complete path profiles, while it incurs only 2-3% overhead on average in the active profiling phase.