Exploring the Interaction between Java's Implicitly Thrown
Exceptions and Instruction Scheduling
Matthew Arnold, Michael Hsiao, Ulrich Kremer, Barbara Ryder
The frequent occurrence of implicitly thrown exceptions poses one of
the challenges present in a Java compiler. Not only do these
implicitly thrown exceptions directly affect the performance by
requiring explicit checks, they also indirectly impact the performance
by restricting code movement in order to satisfy the precise exception
model in Java. In particular, instruction scheduling is one
transformation which is restricted by implicitly thrown exceptions due
to the heavy reliance on reordering instructions to exploit maximum
hardware performance. The goal of this study is two-fold: first,
investigate the degree to which implicitly thrown exceptions in Java
hinder instruction scheduling, and second, find new techniques for
allowing more efficient execution of Java programs containing
implicitly thrown exceptions. Experimental results show that with
aggressive scheduling techniques, such as superblock scheduling, the
negative performance impact can be greatly reduced.