University of Alberta

Department of Computing Science 
University of Alberta 

Revised January 06, 2003

Winter 2003

TIME: TR 1400-1520
INSTRUCTOR: José Nelson Amaral

Calendar Description:   Study dynamic compilation and re-compilation that takes place at run-time. Explore the trade-off between frequency and cost of re-compilation and the frequency of execution of procedures at run-time. Study register-based intermediate representation for Java programs. Characterize efficient run-time profiling and feedback-based computation.

Course Description and Goals:

The success of Java as a programming language lead to a rekindling interest on dynamic re-compilation, also known as "just-in-time compiling". The effective compile time analysis and optimization of Java programs, requires that the compiler uses a register-based intermediate representation of the program. However not all the static optimization techniques used for imperative languages applies directly to object oriented programs. Several symbolic name resolutions must be delayed until run-time, thus the attraction of dynamic re-compilation for Java.

In this course we study the most recent papers and reports in the literature dealing with dynamic re-compilation. We will also make experimental use of several virtual machines and compiler infrastructures that became available in the past few years.

The goal of the course is for the students to become conversant on the state of the art of dynamic re-compilation; to develop an in-dept understanding of the issues involved and the trade-offs faced by a dynamic compiler designer; to understand which traditional compiling techniques translate well to a dynamic recompiling environment, and which ones do not; to discover the features and limitations of the infrastructures currently available for dynamic re-compilation; and to identify open research topics that are likely to lead to significant gains either in recompiling efficiency or in execution time performance.


Class Presentations        30%
Homeworks                    20%
Practical Experiments    20%
Final Paper                      30%

Course Plan:

January 07: Assignment of responsibilitie
January 09: No meeting
January 14: Discussion of Jikes papers: Alpern et al. (Maria), Burke et al. (Kit), Arnold et al. (Cam)
January 16-28: Discussion of Jikes OOPSLA 2002 Tutorial slides.
January 30: Highlights of Jikes User Guide - Report on instalation initial testing
February 04: Overview presentation of the McGill Tool Suite
February 06: Synchronizations in Jikes
Fast, Effective Code Generation in a Just-in-Time Java Compiler
Ali-Reza, Adl-Tabatabai, Michael Cierniak, et. al., PLDI 1998

February 18: CC2000: Optimizing Java Bytecode using the Soot Framework: Is it Feasible? Authors: Raja Vallée-Rai, Etienne Gagnon, Laurie Hendren, Patrick Lam, Patrice Pominville, and Vijay Sundaresan slides

February 20: JGI02: Run-time Evaluation of Opportunities for Object Inlining in Java Authors: Ondřej Lhoták and Laurie Hendren slides

February 25: Project Proposal Presentationa

February 27/March 04: Efficient and precise datarace detection for multithreaded object-oriented programs Jong-Deok Choi, Keunwoo Lee, Alexey Loginov, Robert O'Callahan, Vivek Sarkar, Manu Sridharan, PLDI 2002

March 06: Thin Guards: A Simple and Effective Technique for Reducing Penalty of Dynamic Class Loading by Mathew Arnold and Barbara Ryder, ECCOP 2002.
March 11: ( Maria ) An Empirical Study of Selective Optimization by Matthew Arnold, Michael Hind and Barbara G. Ryder, LCPC 2000.

March 13: ( Cam ) A Comparative Study of Static and Dynamic Heuristics for Inlining by Matthew Arnold, Stephen Fink, Vivek Sarkar and Peter F. Sweeney, FDDO 2000.
March 18: ( Kit ) Dependence Analysis for Java by Craig Chambers et al., LCPC 1999.
March 20: ( Shane ) Jikes Intermediate Code Representation Examples
March 27: ( Maria ) Coupling On-Line and Off-Line Profile Information to Improve Program Performance by Chandra Krintz, Int. Symposium on Code Generation and Optimization, March 2003.
April 01: Kevin Stoodley's Visit
April 03: Cam A Study of Devirtualization Techniques for a Java Just-In-Time Compiler by Kazuaki Ishizaki et al., OOPSLA 2000.

Links for Jikes:

Slides introducing Jikes RVM at OOPSLA 2002

Jikes RVM User's Guide

Slides on Jikes Intermediate Representation by Shane Brewer

Reading Assignment for Jikes:

1. Alpern et al., The Jalapeño Virtual Machine, IBM System Journal, Vol. 39, No. 1, 2000.
2. Burke et al., The Jalapeño Dynamic Optimizing Compiler for Java, Java Grande 1999.
3. Arnold et al., Adaptive Optimization in the Jalapeño JVM, OOPSLA , 2000.

Links for The McGill Tool Suite:



[University of Alberta]
University of Alberta
[Department of Computing Science]
Computing Science