July 19, 1996 Meeting

10:00am Barbara Ryder: Interprocedural Static Analysis of C Programs

Compile-time analysis of C programs is useful for code transformation, semantic change analysis of evolving software systems, and debugging/testing. Former analysis approaches for C have been limited by the precision of pointer aliasing information. Our "alg-flow sensitive", interprocedural pointer aliasing algorithm, yields a good approximation of possible aliases at each program point. This algorithm has served as a basis for modification side effect analysis (MOD-C) and def-use associations in C programs, as well as compile-time, method resolution at virtual calls in C++ programs.

This talk will explain intuitively our approach to the MOD-C analyses through examples. Recent empirical findings for MOD-C will also demonstrate the feasibility of our analysis.

This is joint research with Dr. William Landi (Siemens Corporate Research, Princeton, NJ) and Rutgers graduate student, Sean Zhang.

11:30am Scott Nettles: Transactions for Java

I will discuss the design and implementation of support for transactions and general-purpose persistence for Java. Using our extensions Java programmers can manipulate any Java object transactionally; any changes made to these objects are made resilient to machine failure when a transaction commits. These extensions allow Java to be used directly in applications that demand high reliability; for example, network-based banking. These additions extend Java's current emphasis on safety and reliability to the safe and consistent management of permanent state.

We have made changes to Java at both the level of the language design and throughout the Java implementation. Our additions take the form of syntactic extensions for transactions and runtime system support for durability and atomicity. The ability to make any object persistent is a key aspect of the design and we provide orthogonal persistence and persistence-by-reachability.

The results of running a simple transaction processing benchmark on our prototype shows that it can attain 41 TPS, just under half the maximum possible given the disks in use. Furthermore, our results suggest several avenues for improvement and it seem feasible to achieve transaction rates that are very close to the limits of our disks. Lunch

1:45pm New Business

2:00pm Trevor Jim: Catching Type Errors Early

Type inference speeds program development by detecting errors early, when they are easy to correct. However, ML, the most popular language with type inference, does not detect errors early enough. We show how to design an efficient type inference algorithm that can detect type errors much sooner than ML. In particular, our algorithm will be able to detect type errors in incomplete programs, which arise naturally during program development.

3:30pm Dave MacQueen: Simplified Standard ML