198:516 - Programming Languages and Compilers II
Spring 2006
Prof Barbara G. Ryder
Lecture Notes

References to sections of Dragon book (A.V. Aho, R. Sethi, and J.D. Ullman, Compilers: Principles, Technique and Tools, Addison-Wesley, 1986) are marked ASU.

Lecture 1 (1/18/2006): Machine Independent Optimizations notes 2-up for printing
Classical optimizations for procedural languages, expression DAGs, loops and dominators, classical dataflow problems
Slides covered: MachIndOpts #1-45
Slides changed: MachIndOpts #32,34,39,43
References ASU Chapter 10.1-10.3

Lecture 2 (1/23/2006): Machine Independent Optimizations-2 notes 2-up for printing
Building and optimizing basic blocks, recovering code from expression DAGs, reducibility properties,
Slides covered: MachIndOpts-2 #1-31
References: ASU Chapters 9.4, 9.8, 10.2, 10.4, 10.6

Lecture 3 (1/25/2006): Machine Independent Optimizations-2(cont)
Worklist iteration for dataflow analysis,
Worked example of worklist algorithm for REACH, interval analysis
Dataflow Analysis notes 2-up for printing
Lattice theoretic foundations
Slides covered:MachIndOpts-2 #32-41; DataFlow #1-8
Slides changed:MachIndOpts-2 #36-40

Lecture 4 (1/30/2006): Dataflow Analysis (cont)
Round robin fixed-point algorithm, function properties
References: ASU 10.11
Marlowe and Ryder, "Properties of Dataflow Frameworks: a Unified Model",
Acta Informatica, 1990, pp 121-163.
Slides covered: DataFlow #9-20

Lecture 5 (2/1/3006):Dataflow Analysis (cont)
Justification for using fixed-point iteration for dataflow analysis
Meet over all paths solution (MOP) and MFP
Reference Analysis notes 2-up for printing
Review of type-based reference analysis
Slides covered: DataFlow #16-24; RefAnal #1-12
Slides changed: DataFlow #23;

Lecture 6 (2/6/2006): Reference Analysis (cont)
VTA, Field-sensitive points-to analysis for Java
References: V. Sundaresan, et.al, "Practical Virtual Method Call Resolution for Java",
OOPSLA'00, pp 264-279.
Rountev et.al, "Points-to Analysis for Java Using Annotated Constraints", OOPSLA'01.
O. Lhotak and L. Hendren, "Scaling Java Points-to Analysis Using Spark",
CC'03, (Read this one first)
Slides covered: RefAnal #13-35
Slides changed: RefAnal #34,36

Lecture 7 (2/8/2006): Reference Analysis (cont)
field-sensitive points-to analysis for Java formulated with annotation constraints,
SPARK experiments 2003
Intro to SOOT and SPARK (Weilei)
Slides covered: RefAnal #31-44; SootSpark #1-17
Slides changed: RefAnal #34, 41-44

Lecture 8 (2/13/2006):Reference Analysis-2 notes 2-up for printing
More flow-insensitive, context-insensitive analyses,
How to deal with dynamic class loading? Context-sensitive analyses:
1-CFA, Object-sensitive;
Slides covered: RefAnal2 #1-19
Slides changed: RefAnal2 #6

Lecture 9 (2/15/2006): Reference Analysis-2
More on Object-sensitive analysis and 1-CFA, Dimensions of precision in analysis
Reference Analysis-3 notes 2-up for printing
Parameterized context-sensitive analysis, Empirical comparisons
of types of context-sensitivity
Note on the Liang et.al PASTE'05 paper precision measure.
References: (comparisons of context-sensitive points-to algs)
A. Milanova, A. Rountev, B. G. Ryder, "Parameterized Object
Sensitivity for Points-to Analysis for Java",
ACM TOSEM, January 2005 (for reference).
O. Lhotak and L. Hendren, "Context-sensitive Points-to Analysis: is it worth it?", CC'06, (for reading)
D. Liang, M. Pennigns, M.J. Harrold, "Evaluating the Impact of Context-sensitivity
on Andersen's Algorithm for Java Programs", PASTE'05, (especially good examples
of types of context-sensitive points-to analyses)
Slides covered: RefAnal2 #20-36; RefAnal3 #1-18
Slides changed: RefAnal2 #31-32

Lecture 10 (2/20/2006): Dataflow Analysis-2 notes 2-up for printing
Monotone dataflow frameworks (defn, convergence, safety),
MOP versus MFP, constant propagation, categorization of dataflow problems
References: Thomas J. Marlowe and Barbara G. Ryder, "Properties of Data Flow Frameworks: A Unified Model",
Acta Informatica, Vol. 28, pp 121-163, 1990 (also available as LCSR-TR-103).
Slides covered: #1-22

Lecture 11 (2/22/2006): Examples of monotone dataflow frameworks,
Reaching definitions, reflexive, transitive closure,
examples of different convergence behavior, boundedness,
Reflexive transitive closure, (no slides)

Lecture 12 (2/27/2006): Static Single-Assignment (SSA) form notes 2-up for printing
definition of control dependence; postdominators
Ron Cytron, Jeanne Ferrante, Barry K. Rosen, and Mark Wegman,
"Efficiently Computing Static Single Assignment Form",
ACM TOPLAS, Vol 12, No. 4, October 1991, (classically cited paper).
V. Shreedhar and G. Gao, "Computing Phi Nodes in Linear Time Using DJ graphs",
Journal of Programming Languages, 1995
Slides covered: SSAForm #1-13

Lecture 13 (03/01/2006): Static Single-Assignment form, cont
static single assignment form, dominance frontier, iterated dominence frontier,
phi node placement
Slides covered: SSAForm #14-31

Lecture 14 (03/07/2006): Static-Single-Assignment form, cont.
variable numbering, efficient phi node placement using DJ graphs,
Bound Set problem as a monotone dataflow framework
Slides covered: SSAForm #32-47
Slides changed: SSAForm #22,24,27,39

Lecture 15 (03/20/2006): Optimizations for OOPLs
(see Lecture 17 for new version of slides)
optimizing dynamic dispatch, method inlining
Slides covered: OptsOOPLs #1-14

Lecture 16 (03/22/2006): Answers for HW 3

Lecture 17 (03/27/2006): Optimizations for OOPLs NEW notes 2-up for printing
Optimizations for OOPLs, cont
method specialization, path splitting,
object layout for memory performance, object spitting
T. Chilimbi, B. Davidson, J. Larus, "Cache-conscious Structure
Definition", PLDI'99
J. Dean, G. DeFouw, D. Grove, V. Litvinov, C. Chambers,
"Vortex" An Optimizing Compiler for OO Languages", OOPSLA'96
Slides covered: OptsOOPLs #15-29
Slides changed: OptsOOPLs #27, new#28 added

Lecture 18 (03/29/2006): Optimizations for OOPLs
object splitting, synchronization removal
Two OO Optimizing Compilers notes 2-up for printing
Vortex, Jikes RVM
OOPSLA'96 paper above; and for more details:
C. Chambers, J. Dean, D. Grove< "Whole-program Optimization of
Object-oriented Languages", DCS U Washington TR 96-06-02, June 1996.
Mike Hind's and Dave Grove's 2002 OOPSLA Tutorial about Jikes RVM
Slides covered: OptsOOPLs #28-34; OptsOOPLs2 #1-15
Slides changed: OptsOOPLs2 #14

Lecture 19 (04/03/2006): Optimizations for OOPLs-2
Jikes RVM
Online Sampling for Feedback Directed Optimization
last changed at 2:48pm Monday, April 3rd
References: M. Arnold, B.G. Ryder, "A Framework for Reducing the
Cost of Instrumented Code", PLDI'01
M. Arnold, M. Hind, B.G. Ryder, "Online Feedback-directed
Optimization of Java", OOPSLA'02
Slides covered: OptsOOPLs2 #16-18; OptsOOPLs3 #1-29

Lecture 20 (04/05/2006): Go over answers to SSA homework

Lecture 21: EXAM (04/10/2006)

Lecture 22 (04/12/2006):Testing OO Programs notes 2-up for printing
standard dataflow test coverage metrics, class testing,
S.Rapps, E. Weyuker, "Selecting Software Test Data Using Dataflow Information",
IEEE TSE, April 1985
M.J. Harrold and Gregg Rothermel, "Performing Data Flow
Testing on Classes,
Slides covered: Testing #1-21

Lecture 23 (04/17/2006:) Testing OO Programs, cont.
testing polymorphic calls, fragment dataflow analysis
Testing OO Programs-2 notes 2-up for printing
Regression testing of Java software
Program Slicing notes 2-up for printing Weiser's algorithm, Horwitz-Reps-Binkley algm, SDG,
Class DG for OO slicing
A. Rountev, A. Milanova, B.G. Ryder, "Fragment Class Analysis for Tesing
of Polymorphism in Java Software", ICSE 2003.
MJ Harrold, J. Jones, T. Li, D. Liang, "Regression Test Selection
for Java Software, OOPSLA'01
F. Tip, "A Survey of Program Slicing Techniques", Journal of Programming
Languages, vol 3 1995, pp 121-189.
Slides covered: Testing #20-33; Testing-2 #1-14; Slicing #1-23
Slides changed: Testing-2 #7; Slicing #8

Lecture 24 (4/26/2003): notes 2-up for printing
Program Slicing-2
Dynamic slicing algorithms, precise vs. imprecise, storage concerns,
algorithm variations, empirical experiments
critical predicates
References: H. Agrawal, J. Horgan, "Dynamic Program Slicing", PLDI'90
X. Zhang, R. Gupta, Y. Zhang, "Precise Dynamic Slicing Algorithms", ICSE'03
Slides covered: Slicing-2 #1-25
Slides changed: Slicing-2 #2-3, 6-8

Lecture 25 (05/01/2006): Student Project Presentations

Last updated by Barbara Ryder at 5:30pm on April 27, 2006.