March 14 '96 Seminar Agenda

10:00am Suresh Jagannathan: Flow-directed Inlining

A flow-directed inlining strategy uses information derived from control-flow analysis to specialize and inline procedures for functional and object-oriented languages. Since it uses control-flow analysis to identify candidate call sites, flow-directed inlining can inline procedures whose relationships to their call sites are not apparent. For instance, procedures defined in other modules, passed as arguments, returned as values, or extracted from data structures can all be inlined. Flow-directed inlining specializes procedures for particular call sites, and can selectively inline a particular procedure at some call sites but not at others. Finally, flow-directed inlining encourages modular implementations: control-flow analysis, inlining, and post-inlining optimizations are all orthogonal components. Results from a prototype implementation indicate that this strategy effectively reduces procedure call overhead and leads to significant reduction in execution time.

This is joint work with Andrew Wright.

11:00am Carl Gunter: Abstracting Dependencies Between Software Configuration Items

This project studies an abstract model of dependencies between software configuration items based on a theory of concurrent computation over a class of enriched Petri nets. The primary goal is to illustrate the descriptive power of the model and lay theoretical groundwork for using it to design software configuration maintenance tools. As a start in this direction, the work analyzes and addresses certain limitations in make description files using a form of abstract interpretation.

12:00pm Lunch

2:00pm Greg Morrisett: TIL/ML Compiler Internals

The TIL compiler is a prototype compiler for Standard ML developed by various people at CMU. TIL incorporates many novel technologies, including dynamic type dispatch (a.k.a. intensional polymorphism), "mostly" tag-free garbage collection, a statically typed intermediate language, and a fairly complete suite of lambda-calculus-based optimizations. In this talk, I will walk through the internal structure of TIL, discuss the good and bad design decisions that we made, and plans for addressing the shortcomings of the current system.

3:00pm New Business

3:15pm Lorenz Huelsbergen: Very Concurrent, Incremental Garbage Collection

At least two phenomena are shaping language implementation: computers are becoming more parallel and garbage collection is gaining acceptance as a desirable mechanism for storage management. This motivates the investigation of using multiple processors to both speed the reclamation of spent storage and to ameliorate the overhead -- perceptible pauses in particular -- of garbage collection.

I will describe a new mark-and-sweep collection algorithm based on node coloring and designed to address these goals. In this algorithm, allocation, marking, and sweeping proceed concurrently in three separate threads. Further concurrency is available in the mark and sweep threads.

This is very much work in progress.

4:00pm Discussion