CS577 Modern Language Processors Spring 2005
Course Information
Project
Homework
Lectures
- April 4: Java Virtual Machine Architecture (pdf) (4up pdf)
- April 13: Efficient Interpretation (rough notes)
- April 18: Efficient Interpretation (continued) (rough notes)
- April 20: Just-in-time compilation (rough notes)
- April 25: Optimization: Value Numbering (rough notes)
- April 27: SSA Form; Dominators; Available Expressions (rough notes)
- May 2: Available Expressions (more); partitioning; computing data flow (rough notes)
- May 4: Liveness analysis; more on computing data flow (rough notes)
- May 9: Building SSA graphs; Sparse Conditional Constant Propagation (rough notes)
- May 11: Organizing Optimizations; SSA and Functional Languages (see Appel handout)
- May 16: Optimizing memory accesses; Aliasing (rough notes)
- May 18: Basic garbage collection (pdf) (4up pdf)
- May 23: More garbage collection (pdf) (4up pdf)
Assigned Readings
-
Read for April 4:
-
Cooper and Torczon, Engineering A Compiler, Chs. 1,5.
-
Bill Venners,
Inside the Java 2 Virtual Machine, Chs. 1 and 5.
-
Lindholm & Yellin,The Java Virtual Machine Specification, 2nd ed., Read Chapter 3 and skim Chapter 6.
-
If you are unfamiliar with Java, skim a good introductory textbook, such as
Arnold, Gosling, and Holmes, The Java Programming Language, Addison-Wesley.
- Read for April 18 (i.e. as soon as you can):
- Read for April 25:
- Cooper & Torczon, Ch. 5 (Intermediate Representations) and Ch. 8 (Introduction to Code Optimization)
- Read for May 2:
-
Cooper & Torczon, Ch. 9 (Data Flow Analysis) & Ch. 10 (Scalar Optimizations)
- Read for May 9:
- Read for May 18:
- Read for May 23:
- Read for June 1:
Other Readings
- Books about Java Bytecode and .NET
- Tim Lindholm & Frank Yellin, The Java Virtual Machine Specification, 2nd ed., happily available on-line
- Bill Venners, Inside the Java 2 Virtual Machine, McGraw-Hill, 1999.
Substantial portions of this book are also available
on-line. This is probably the best book to look at first.
- Jon Meyer & Troy Downing,Java Virtual Machine, O'Reilly 1997. This is available from the PSU library
as an ebook.
- Joshua Engel,Progrmamming for the Java Virtual Machine, Addison-Wesley, 1999.
- John Gough,Compiling for the .NET Common Language Runtime, Prentice Hall PTR, 2001.
- General Books on Compilers
- Al Aho, Ravi Sethi, and Jeff Ullman, Compilers: Principles, Tools, and Techniques, Addison-Wesley, 1986. (PSU Reserve)
- Steve Muchnick, Advanced Compiler Design & Implmentation, Morgan Kaufmann, 1997. (PSU Reserve)
- Christopher Fraser and David Hanson,A Retargetable C Compiler: Design and Implementation, Benjamin/Cummings, 1995. (PSU Reserve)
- Andrew Appel, Modern Compiler Implementation in Java, 2nd ed., Cambridge UP, 2002. (Or earlier editions;
be careful to check errata on author's web page.) (PSU Reserve)
- Randy Allen and Ken Kennedy,Optimizing Compilers for Modern Architectures, Morgan Kaufmann, 2002.
- Robert Morgan,Building an Optimizing Compiler, Digital Press, 1998.
- Books on Garbage Collection
- Richard Jones and Rafael Lins, Garbage Collection: Algorithms for Automatic Dynamic Memory Management, Wiley, 1996.
Useful Project Resources
- JVM Implementations with sourcecode
- Benchmarks
-
The single most useful set of meaningful benchmarks available for free is
from the Java Grande Forum.
Users on the CS Solaris network can access the source and .class files in
directory /u/apt/jgf/v2.0. These benchmarks are biased towards floating point array
computations. I'd recommend running a combination of floating point and integer
benchmarks, including some that create lots of objects, from sections 2 and 3.
Good possibilities include raytracer, heapsort, and crypt. Note that some of
the benchmarks run a long time, even in the smallest ("A") size; be kind to
your fellow users if running these on a shared machine.
- I also have a copy of the JavaSpec benchmark suite. For copyright reasons,
I cannot put this on the web, but I can arrange to get you access to it.