Return to search

JeX : an implementation of a Java exception analysis framework to exploit potential optimisations

Exceptions in Java are generated by explicit program syntax or implicit events at runtime. The potential control flow paths introduced by these implicit exceptions must be represented in static flow graphs. The impact of these additional paths reduces the effectiveness of standard aheadof- time optimisations. This thesis presents research that focuses on measuring and reducing the effects of these implicit exceptions. In order to conduct this research, a novel static analysis framework, called JeX, has been developed. This tool provides an environment for the analysis and optimisation of Java programs using the bytecode representation. Data generated by this tool clearly shows that implicit exceptions significantly fragment the standard flow graphs used by many intraprocedural optimisation techniques. This fragmentation increases the number of flow dependence relationships and so negatively affects numerous flow analysis techniques. The main contribution of this work is the development of new algorithms that can statically prove that certain runtime exceptions can never occur. Once these exceptions have been extracted, the control flow structures are re-generated without being affected by those potential exceptions. The results show that these algorithms extract 24-29% of all implicit potential exceptions in the eight benchmark programs selected. The novel, partial stack evaluation algorithm is particularly successful at extracting potential null pointer exceptions, with reductions in these of 53-68%. This thesis also provides a simulation of perfect exception extraction by removing the effects of all implicit exceptions in the flow graphs. The secondary contribution of this research is the development of program call graph generation algorithms with novel receiver prediction analysis. This thesis presents a comparative study of the graphs generated using fast but conservative analysis with more effective rapid type analysis algorithms. This study shows that Java bytecodes are well suited to a fine-grained instance prediction type analysis technique, although this context-sensitive approach does not scale well with larger test programs. The final contribution of this work is the JeX tool itself. This is a generic, whole program analysis system for Java programs. It includes a number of general optimisation modules, algorithms for generating several static analysis data structures and a visualisation interface for viewing all data structures and Java class file contents

Identiferoai:union.ndltd.org:bl.uk/oai:ethos.bl.uk:395000
Date January 2002
CreatorsStevens, Andrew
PublisherUniversity of Sussex
Source SetsEthos UK
Detected LanguageEnglish
TypeElectronic Thesis or Dissertation

Page generated in 0.0021 seconds