Date of this Version
Accurate representations of program control flow are important to the soundness and efficiency of program analysis and testing techniques. The Java programming language has introduced structured exception handling features that complicate the task of constructing safe and precise representations of the possible control flow in Java programs. Prior work has considered applying various type inference algorithms to exceptions, but has not yet investigated whether the use of higher cost algorithms is necessarily justified. It is important to understand and assess the tradeoffs associated with the use of more powerful yet costly algorithms, thus we conducted an empirical study to evaluate the relative performance of several such algorithms. We find that applying type inference to exceptions may improve representations of control flow, but that these improvements do not necessarily translate into benefits for practical techniques that use them. Thus we argue that type inference should not be blindly applied, but rather the tradeoffs of applying them must be assessed with respect to particular program analyses and techniques.