ACM ACM Logo ACM Logo SIGPLAN 2004 Conference on

Programming Language Design and Implementation (PLDI)

Washington, DC

June 9-11, 2004


ACM SIGPLAN PLDI 2004 Tutorials, Tuesday, June 8th

Morning tutorial, 9am - noon

T1. Language design and the Scala Programming Language
by Martin Odersky (Ecole Polytechnique Fédérale de Lausanne)


T2. Dynamic Compilation and Adaptive Optimization in Virtual Machines,
by Stephen Fink, David Grove and Michael Hind (IBM T.J. Watson Research Center)

The past decade has witnessed the widespread adoption of programming languages designed to execute on virtual machines, such as the Java and C# programming language. However, such languages face significant performance challenges beyond those confronted by traditional languages. First, portable program representations and dynamic language features, force the deferral of most optimizations until runtime, inducing runtime optimization overhead. Second, modular program representations preclude many forms of whole-program interprocedural optimization. Third, virtual machines incur additional costs for runtime services such as security guarantees and automatic memory management. To address these challenges, mainstream virtual machine implementations include substantial infrastructure for online profiling, dynamic compilation, and feedback-directed optimization. As a result, adaptive optimization has begun to mature as a widespread production-level technology.

This tutorial will survey the state-of-the-art in the areas of dynamic compilation and adaptive optimization in virtual machines. Dynamic compilation is the process of dynamically optimizing a portable representation, such as Java bytecodes, into native code. Adaptive optimization is the online decision process that determines the overall strategy for profiling and employing dynamic compilation. In addition to surveying the state-of-the-art, this tutorial will also debunk several misconceptions about these two topics, such as

Afternoon tutorial, 1:30pm - 4:30pm

T3. The C-- Compiler Infrastructure,
by Simon Peyton-Jones (Microsoft) and Norman Ramsey (Harvard University)

The ideal compiler infrastructure should support not only a variety of target machines but also a variety of programming languages. Past infrastructures have focused only on what happens at compile time. But to support such language features as garbage collection, exception dispatch, and concurrency, run-time support is needed. I have proposed providing such support not by upcalls but through a run-time interface, which reveals to the run-time system the important decisions made in the compiler's back end. This new organization should make compiler infrastructure significantly easier to reuse with multiple languages. The distinctive feature of this infrastructure is that it is intended not so much for experiments in optimization but rather for the person who has a programming language and a target machine in mind and wants to get a reasonable implementation quickly. The focus of the tutorial will be on how to use the infrastructure and we will probably spend much of the time showing example clients: a simple front end, a simple garbage collector, that sort of thing.

T4. Enterprise Java Beans for Programming Language Researchers,
by William Pugh (Univ. of Maryland)