CS690A: Seminar in Advanced Compiling and Programming Systems

or
``So you want to know how to make Java run fast''

Spring 1999

Course Description

Papers:

  1. References
    1.  The Java Language Specification
    2.  The Java Virtual Machine Specification
  2. Preliminaries:
    1. The Java Factor
    2. Why are we using Java again?
  3. Self
    1. An Efficient Implementation of Self, a Dynamically-Typed Object-Oriented Language Based on Prototypes
    2. Making Pure Object-Oriented Languages Practical
    3. Reconciling Responsiveness with Performance in Pure Object-Oriented Languages
  4. Type analysis, control flow analysis
    1. Selective Specialization for Object-Oriented Languages
    2. Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
    3. Profile-Guided Receiver Class Prediction
    4. Reducing Indirect Function Call Overhead in C++ Programs
    5. Simple and Effective Link-Time Optimization of Modula-3 Programs
    6. Simple and Effective Analysis of Statically-Typed Object-Oriented Programs
    7. Object-oriented type inference
    8. Constraint-Based Type Inference and Parametric Polymorphism
    9. The Cartesian Product Algorithm
    10. Dynamic vs. Static Optimization Techniques for Object-Oriented Languages
    11. Precise Concrete Type Inference for Object-Oriented Languages
    12. Call Graph Construction in Object-Oriented Languages
    13. Fast Interprocedural Class Analysis
  5. Pointer/alias analysis
    1. Type-Based Alias Analysis
    2. Partial Redundancy Elimination for Access Path Expressions
    3. Automatic Inline Allocation of Objects
    4. An Evaluation of Automatic Object Inline Allocation Techniques
    5. From Polyvariant Flow Information to Intersection and Union Types
    6. A Safe Approximate Algorithm for Interprocedural Pointer Aliasing
    7. Points-to Analysis in Almost Linear Time
    8. Fast and Accurate Flow-Insensitive Points-To Analysis
    9. Putting Pointer Analysis to Work
  6. Mobile code and security
    1. Extensible Security Architectures for Java
    2. Proof-Carrying Code
    3. Safe Kernel Extensions Without Run-Time Checking
    4. The Design and Implementation of a Certifying Compiler
    5. A Decentralized Model for Information Flow Control
  7. Java language extensions: genericity
    1. Parameterized Types for Java
    2. Pizza into Java: Translating theory into practice
    3. Adding Type Parameterization to the Java Language
    4. Making the future safe for the past: Adding Genericity to the Java Programming Language
    5. Compatible Genericity with Run-time Types for the Java Programming Language
    6. Parametric Polymorphism for Java: A Reflective Solution