Enabling Optimizations Suppressed by a Loop Transfer

In the dynamic compiler, there are many circumstances in which we can improve the performance by transferring the control from the middle of the execution of the loop, called a loop transfer, to a different code compiled with a higher optimization level. This may, however, cause some optimizations to be suppressed by a merge point of two incoming control flow edges. In this paper, we first present how we can avoid such suppression by taking it into consideration that the semantics of the two code blocks before the merge point are the same. Secondly, we present how we can enable copy propagation across the merge point by combining this semantic-based technique and our new technique for generating compensation code. We implemented these techniques in the IBM Java JIT compiler on IA-64 and evaluated their effectiveness using several benchmark suites and applications.

By: Motohiro Kawahito, Hideaki Komatsu, and Toshio Nakatani

Published in: RT0568 in 2007

This Research Report is not available electronically. Please request a copy from the contact listed below. IBM employees should contact ITIRC for a copy.

Questions about this service can be mailed to reports@us.ibm.com .