Java is designed to be a mature, object-oriented programming languagemainly for Web-based programming. However, Java can support general stand-alone applications as well, such as scientific codes that consist of independent components using exceptions as a control mechanism between components. Although Java is too new to have been used extensively in applications, it is clear that user-defined exceptions will be ubiquitous in Java programs, causing them to exhibit distinctive control flow, different from previous object-oriented languages. The proposed research concentrates on combining new analysis techniques with two optimization strategies, namely speculative and non- speculative, using a testbed of scientific applications for validation. Exceptions pose new challenges to optimizing compilers since they introduce implicit control flow and their semantics requires access to user-visible state at any raised exception. Optimization strategies may either preserve exceptions and their visible states, or perform speculative optimizations by ignoring exceptions, and restore the visible state if an exception is raised. New static analyses are needed to provide an accurate estimate of control flow within and across method boundaries, including concrete type inference and subsequent def-use analyses. The resulting information is crucial for the effectiveness of many optimizations, including code specialization, code motion, register allocation, and instruction scheduling.

Project Start
Project End
Budget Start
1998-08-01
Budget End
2002-07-31
Support Year
Fiscal Year
1998
Total Cost
$235,000
Indirect Cost
Name
Rutgers University
Department
Type
DUNS #
City
New Brunswick
State
NJ
Country
United States
Zip Code
08901