[an error occurred while processing this directive]

Skip to Content

Computer Science Colloquia

Friday, April 29, 2011
Jeffery von Ronne

Host: Wes Weimer

OLS 009, 15:30:00

Early Analysis and Optimization of Java Programs

Static analysis can be used to discover properties that circumscribe the possible behaviors of computer programs. One application of static analysis is to find program locations where certain code transformations can be applied without changing the program's semantics. Certain dynamic language features found in modern languages and runtime environments, however, constrain the scope of static analysis used for optimizations. For example, modern Java Virtual Machine implementations dynamically load each class of a program independently and compile the methods of those classes into machine code ‘just in time.’ Consequently, the program code is not available in its final form for analysis before program execution begins. This means that the time spent analyzing programs for optimization for just-in-time (JIT) compilers must be limited in order to avoid slowing down program execution, and since choosing static analyses often involves a trade-off between speed, precision, and scope, JIT compilers are generally limited to the optimizations that can be based on fast, local, and relatively imprecise analyses.

One solution to this problem, is to perform (part of) the static analysis earlier--prior to runtime--and then apply the analysis results at runtime. In this talk, we will elaborate on one approach for providing such early analysis, and its application to bounds check elimination. In developing this approach to program analysis, it is necessary to consider the ramifications for the JVM's security, because optimizations based on incorrect analysis results can result in the compiler generating code that violates Java's security model. We will discuss a static analysis algorithm that can generate verifiable proofs of program properties constraining the relative ranges of integer variables and how those proofs can be transported and verified. We will also discuss how to address the challenges of applying this approach to analyses whose scope covers multiple program units that may be modified and loaded independently.

Jeffery von Ronne is an assistant professor in the Department of Computer Science at the University of Texas at San Antonio (UTSA). In 2009, he received a National Science Foundation CAREER award to support his research on Contingent Static Analysis for Dynamically Composed Systems. Prior to joining the faculty at UTSA in 2005, Dr. von Ronne pursued his graduate studies at the University of California, Irvine, where he received a Master of Science in Information and Computer Science in 2002 and a Doctor of Philosophy in Information in Computer Science in 2005. He received an Honors Bachelor of Science in Computer Science from Oregon State University in 1999. Dr. von Ronne is a member of the Association of Computing Machinery, IEEE, Phi Kappa Phi, and Upsilon Pi Epsilon.

Reception at 4:30 in OLS 224