July 19, 1996 Meeting
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
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.
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