198:671 Seminar in Object-oriented Programming Languages:
Compilation and Code Optimization,
Tools for Testing, Debugging and Program Understanding

Fall 1999
Prof Barbara G. Ryder

Topics List

The abbreviations used here usually correspond to the following with the "*" publications usually appearing as Lecture Notes in Computer Science volumes. Only significant papers more than 5 years old have been listed. Most of these can be found in the Math Library (see reserve section for proceedings); also, often the papers are on the web, listed on the author's webpage.

You will notice there may be missing papers from the following conferences: PLDI'99, PPoPP'99, Java Grande'99, COOTS'99.


  • J.D. Choi, M. Gupta, M. Serrano, V.C. Sreedhar, and S. Midkiff, IBM T.J. Watson Research Center, Escape Analysis for Java OOPSLA 99

  • Escape Analysis for Object-Oriented Languages. Application to Java Bruno Blanchet, INRIA Rocquencourt

  • Compositional Pointer and Escape Analysis for Java Programs John Whaley and Martin Rinard, MIT Laboratory for Computer Science, OOPSLA99

  • C. Chambers, I. Pechtchanski, V. Sarkar, M. Serrano, H. Srinivasan, "Dependence Analysis for Java", LCPC'99.

  • A. Souter, L.L. Pollock, D. Hisley, "Inter-class Def-use Analysis with Partial Class Representations", PASTE'99.

  • R. Chatterjee, B.G. Ryder, W.A. Landi, "Relevant Context Inference" , (longer version), POPL'99.

  • G. DeFauw, D. Grove, C. Chambers, "Fast Interprocedural Class Analysis", POPL'98.

  • D. Grove, DeFauw, J. Dean, C. Chambers, "Call Graph Construction in OO Languages", OOPSLA'97. related to Defauw, Grove, Chambers, "Fast Interprocedural Class Analysis", POPL'98.

  • G. Snelting and F. Tip, "Reengineering Class Hiearchies Using Concept Analysis", FSE'98.

  • Y.F. Chen, E. R. Gansner, E. Koutsofios, "A C++ Data Model Supporting Reachability Analysis and Dead Code Detection", IEEE TSE, vol 24, no 9, September 1998.

  • D. Grove, J. Dean, C. Garrett, C. Chambers, "Profile-guided Receiver Class Prediction", OOPSLA'95. (Note: many of the older Vortex papers are assimilated into the long paper "Whole Program..." listed under compilers.)

  • J. Dean, D. Grove, C. Chambers, "Optimization of OO Programs using Class Hierarchy Analysis", ECOOP'95, pp 77-101.

  • J. Noble, J. Vitak, J. Potter, "Flexible Alias Protection", ECOOP'98.

  • P. Carini, M. Hind, H. Srinivasan, "Flow-sensitive Analysis for C++", IBM Research Report RC20267, November 1995.

    Type Inference

  • V. Sundaresan, L. Hendren, C. Razafimahefa, R. Vallee-Rai, P. Lam, E. Gagnon, "Practical Virtual Method Call Resolution for Java" Sable Technical Report NO 1999-2, April 1999. (Note: http://www.sable.mcgill.ca is the website for Laurie Hendren's research group.)

  • E. Gagnon, L. Hendren, Intra-procedural Inference of Static Types for Java Bytecode", Sable Technical Report NO 1999-1, March 1999.

  • A. Diwan, J.E. Moss, K. S. McKinley, "Simple and Effective Analysis of Statically Typed Object-Oriented Programs", OOPSLA'96.

  • D. Bacon, P. Sweeney, "Fast Static Analysis of C++ Virtual Function Calls", OOPSLA'96, pp 324-341.

  • O. Agesen, U. Holzle, "Type Feedback vs Concrete Type Inference: A Comparison of Optimization Techniques for OO Languages", OOPSLA'95.

  • O. Agesen, J. Palsberg, M. Schwartzbach, "Type Inference of SELF: Analysis of objects with dynamic and multiple inheritance", Software-Practice & Experience, 25(9) pp975-996, September 1995. (also Agesen's Ph.D. thesis "Concrete Type Inference: Delivering Object-Oriented Applications").

  • John Plevyak and Andrew Chien, "Precise concrete type inference for object oriented languages", OOPSLA'94, pp 324-240.

  • J. Palsberg and M. Schwartzbach, "Object Oriented type inference", OOPSLA'91, pp 146-161.



  • L. Larsen, M.J. Harrold, "Slicing OO Software", ICSE96, pp 495-505.

  • F. Tip, J.D. Choi, J. Field, G. Ramalingam, "Slicing Class Hierarchies", OOPSLA'96, pp 179-197.

  • D. Liang, M.J. Harrold, "Slicing Objects Using System Dependence Graph", International Conference on Software Maintenance, Nov 1998. (obtainable from Harrold's webpage http://www.cis.ohio-state.edu/~harrold)


  • H. Chen, T.H. Tse, F.T. Chan, T.Y. Chen, "In Black and White: An Integrated Approach to Class-level Testing of OO Programs", ACM TOSEM, vol 7, no 3, July 1998, pp 250-295.

  • R. Chatterjee, B.G. Ryder, "Data-flow-based testing of object-oriented libraries", DCS-TR-382, March 1999.

  • R. Binder, "Testing Object-oriented Software: a survey", Software Testing, Verification and Reliability, vol 6, pp 125-252, 1996.

  • Programming Language Design

  • R. Cartwright, G. Steele, Jr., "Compatible Genericity with Run-time Types for the Java Programming Language", OOPSLA'98.

  • R. Stata and M. Abadi, "A Type System for Java Bytecode Subroutines", POPL'98.

  • M. Odersky, P. Wadler, "Pizza into Java: Translating theory into practice", POPL97, January 1997.

  • J. Boyland, G. Castagna, "Parasitic Methods: An Implementation of Multi-Methods for Java", OOPSLA'97, pages 66-76, Atlanta GA.

  • F. Yellin, "Low Level Security in Java", Sun Microsystems white paper, 1996. http://java.sun.com/sfaq/verifier.html

  • M. Franz, T. Kistler, "Does Java Have Alternatives?" in D.J. Richardson and D. Wile (Eds.), Proceedings of the Third California Software Symposium (CSS'97), Irvine, California, 5-10; November 1997.

  • ???"Adding Type Parametrization to Java", OOPSLA'97


  • Rajesh Bordawekar and Donna Dillenberger, IBM T.J. Watson Research Center, "Design and Implementation of a Java(TM) Virtual Machine for Transactional Servers", JavaGrande 99

  • ByungPSun Yang, SooPMook Moon, Seongbae Park, Kemal Ebcioglu, Junpyo Lee, SeungIl Lee, Jinpyo Park, Erik Altman, Yoo C. Chung, Suhyun Kim, and Heungbok Lee Seoul National University and IBM T. J. Watson Research Center, "LaTTe and VLaTTe: Java VM Just-in-Time Compilers for RISCs and VLIWs", (poster), JavaGrande 99

  • B. Alpern, A. Cocchi, D. Liever, M. Mergen, V. Sarkar, "Jalapeno: A Compiler-supproted Java Virtual Machine for Servers", ACM SIGPLAN Workshop on Compiler Support for System Software, March 1999.

  • "The Jalapeno Dynamic Optimizing Compiler for Java", 1999 ACM Java Grande Conference

  • SUNs HOTSPOT compiler

  • V. Seshadri, "IBM High Performance Compiler for Java", AIXpert Magazine, September 1997, (an optimizing native code compiler for java applications"), http://www.alphaWorks.ibm.com/formuals.nsf (search native compiler)

  • R. Vallee-Rai, "Profiling the Kaffee JIT Compiler, Sable Technical Report NO 1998-2, February 1998.

  • T. Proebsting, G. Townsend, P. Bridges, J.H. Hartman, T.Newsham, S.A. Watterson, "Toba: Java for Applications: A Way Ahead of Time (WAT) Compiler" by Todd A. Tech Report 97-01, Department of Computer Science, 1997.

  • A. Krall,"Efficient JavaVM Just-in-time Compilation", PACT98 workshop, see his webpage

  • A. Krall, R. Grafl, Krall's webage, "CACAO - A 64-bit JavaVM Just-in-Time Compiler", COOTS'97, June 1997.

  • G. Muller, B. Moura, F. Bellard, C. Consel (IRISA/INRIA-University of Rennes), "Harissa: a Flexible and Efficient Java Environment Mixing Bytecode and Compiled Code", COOTS'97, June 1997.

  • M.P. Plezbert and R.K. Cytron, "Does Just in Time" = "Better Late than Never", POPL'97, pp 120-131, Paris, France, 1997.

  • Michael P. Plezbert. Continuous compilation for software development and mobile computing. Master's thesis. Washington University, 1996. http://www.cs.wustl.edu/~plezbert/contcom/thesis/thesis-main.html

  • Softway, "Introduction to Guava".

  • Kaffe is a Java Environment including a JIT

  • J. Dean, G. Defouw, D. Grove, Litinov, C. Chambers, "Vortex, An Optimizing Compiler for Object-Oriented Languages" , OOPSLA'96.

  • C. Chambers, J. Dean, D. Grove, "Whole-Program Optimization of Object-Oriented Languages", DCS Univ Washington, TR 96-06-02.


  • William Pugh, "Compressing Java Class Files", PLDI99

  • Brian Grant, Matthai Philipose, Markus Mock, Susan J. Eggers, and Craig Chambers (University of Washington), "An Evaluation of Run-time Optimizations",PLDI99

  • V. Bala, E. Duesterwald, S. Banerjia, "Transparent Dynamic Optimization", Hewlett Packard TR HPL-1999-77, June 1999.

  • J. Maasen, R. Van Nieuwpoort, R. Veldema, H. Bal, A. Plaat, "An Efficient Implementation of Java's Remote Method Invocation", PPOPP'99.

  • E. Sirer, A.J. Gregory, B.N. Bershad, "A Practical Approach for Improving Startup Latency in Java Applications", ACM SIGPLAN Workshop on Compiler Support for System Software", May 1999.

  • F. Tip, C. Laffra, P.F. Sweeney, D. Streeter, "Size Matters: Reducing the size of Java class file archives", IBM Technical Report RC21321(96063), 280CT98

  • ??? "Fast, Effective Code Generation in a Just-In-Time Compiler", PLDI'98.

  • T.R. Halfhil, "How to Soup Up Java", Byte Magazine, pages 60-74, May 1998.

  • C.H. Hsieh, M. T. Conte, T. L. Johnson, J. C. Gyllenhall, W. M. Hwu, "Optimizing NET Compilers for Improved Java Performance", IEEE Computer, June 97

  • T. Proebstin, S. Watterson, "Krakatoa: Decompilation in Java (ODes Bytecode Reveal Source?), USENEX COOTS'97.
  • P. Sweeney, F. Tip, "Class hierarchy specialization", OOPSLA'97, pp 271-285.

  • L. Clausen, "A Java Bytecode Optimizer using Side Effect Analysis", Java Workshop, 1997.

  • M. Cierniak, W. Li, "Optimizing Java Bytecodes", Java Workshop, 1996.

  • Z. Budimlic, K. Kennedy, "Optimizing Java", Java Workshop, 1996.

  • Pendragon Software. Caffeinemark 2.5. URL: http://www.webfayre.com/pendragon/cm2/index.html
  • K. Driesen, U. Holzle, "The Direct Cost of Virtual Function Calls in C++", OOPLSA96.
  • G. Aigner, U. Holzle, "Eliminating Virtual Function Calls in C++ Programs", ECOOP'96

  • T. Kistler, "Dynamic Runtime Optimization", In Proceedings of the Joint Modular Languages Conference, JMLC'97, pp 53-66. Published as Springer Lecture Notes in Computer Science No. 1204, March 1997. Also published as Technical Report No. 96-54, Department of Information and Computer Science, University of California, Irvine, November 1996. [ps or pdf].

  • M. Franz, T. Kistler, "Slim Binaries", In Communications of the ACM, 40(12), pp 87-94; December 1997. Also published as Technical Report No. 96-24, Department of Information and Computer Science, University of California, Irvine; June 1996. [ps or pdf].

  • "Java Bytecode to Native Code Translation: The Caffeine Prototype and Preliminary Results" by Cheng-Hsueh A. Hsieh, John C. Gyllenhaal, and Wen-mei W. Hwu, Proceedings of the 29th International Symposium on Microarchitecture, December 1996.
  • J. Dean, C. Chambers, D. Grove, "Selective Specialization for OO Languages", PLDI'95.

  • J. Dean, C. Chambers, "Towards Better Inlining Decision Using Inlining Trials", ACM Conference on Lisp and Functional Programming, 1994.

  • U. Holzle, C. Chambers, D. Ungar, "Optimizing dynamically-typed OO languages with polymorphic inline caches", ECOOP91.

  • C. Chambers, D. Ungar, "Iterative type analysis and extended message splitting: optimizing dynamically-typed oo programs", PLDI90, pp 150-164.

  • C. Chambers, D. Ungar, "Customization: optimizing compiler technology for SELF, a dynamically-typed oo programming language", PLDI89, pp 146-160.

  • T. Keishiro. J2c Java .class to C translator. URL: http://www.webcity.co.jp/info/andoh/java/j2c.html

    Dynamic Profiling

  • Sheng Liang and Deepa Viswanathan, Sun Microsystems Inc., "Comprehensive Profiling Support in the Java Virtual Machine", COOTS 99

  • Tia Newhall and Barton P. Miller, University of Wisconsin Madison, "Performance Measurement of Dynamically Compiled Java Executions", JavaGrande 99

  • J. Larus, "Whole program paths", PLDI99, pp 259-269.

  • D. Melski, T. Reps, "Interprocedural path profiling", CC'99

  • G. Ammons, J. Larus, "Improving DFA with path profiles", PLDI98, pp 72-84.

  • T. Ball, M. Sagiv, "Edge Profiling versus path profiling: the showdown", POPL98, pp 134-146.

  • G. Ammons, T. Ball, J. Larus, "Exploiting HW performance moniters with flow- and context-sensitive profiling", PLDI97, pp 85-96

  • T.Ball, J. Larus, "Efficient path profiling", MICRO-29, Dec 1996

  • T. Ball, "Efficiently counting program events with suport for on-line queries", ACM TOPLAS, vol 16(5), pp 1399-1410, Sept 1994.

  • T. Ball, J. Larus, "Optimally profiling and tracing programs",ACM TOPLAS 16(4)pp 1319-1360, July 1994.

    For more on profiling click here.


  • J.D. Choi, D. Grove, M. Hind, V. Sarkar, "Efficient and Precise Modeling of Exceptions for the Analysis of Java Programs", PASTE'99.

  • A. Krall, M. Probst, "Monitors and Exceptions: How to implement Java Efficiently", 1998 ACM Java Workshop for High Performance Computing, (see his website).

  • R.Chatterjee, B.G. Ryder and W.A. Landi, "Complexity of concrete type-inference in the presence of exceptions", ESOP'98, LNCS 1381.

  • Schilling, "Optimizing Away C++ Exception Handling", SIGPLAN Notices 8/98 Ertl, Krall, "Delayed Exceptions - Speculative Execution of Trapping Instructions", CC'94.

    Threads and Concurrency

  • Jeff Bogda and Urs Holzle, University of California, Santa Barbara "Removing Unnecessary Synchronization in Java", OOPSLA 99

  • G. Naumovich, G. Avrunin, L. Clarke, "Data-flow Analysis for Checking Properties of Concurrent Java Programs", ICSE'99, pp 399-410.

  • J.D. Choi, H. Srinivasan, "Deterministic Replay of Java Multithreaded Applications", SIGMETRICS, August 1998, p 48-59.

  • M. Philippsen, "Imperative Concurrent OO Languages" (a survey).

  • J. Corbett, "Constructing compact models of concurrent java programs", ISSTA'98.

  • Bell and Parr, "Java for students", chapter 25: threads (we may need chap 6 on events too)

  • Decker and Hirschfield, "Programming Java: an intro to programming using java", ch 11 on threads.


  • R.A. Milowski, P. Bother. "The Kawa Scheme interpreter project". http://www.copsol.com/sgmlimpl/tools/kawa/, 1996.

  • K.B. Sriram. Free tools for java. http://www.sbktech.org/, 1996.

  • J. Leach. John's Java page. http://lenna.easynet.it/~jhl/java.html , 1996.

  • Java OS White Paper

  • preEmptive solutions

    Computational Science

  • Martin Karrenbach, Matthias Jacob, and Michael Philippsen. Parallelizing Large-Scale Geophysical Algorithms in Java In SIAM Fourth International Conference on Mathematical and Numerical Aspects of Wave Propagation, Golden, Colorado, June 1-5, 1998

  • Michael Philippsen, Is Java ready for computational science? In Euro-PDS'98, 2nd European Parallel and Distributed Systems Conference, pages 299-304 Vienna, Austria, July 1-3, 1998

  • Michael Philippsen. Data Parallelism in Java In High Performance Computing Systems and Applications, Kluwer Academic Publishers, Boston, Dordrecht, London, 1998, to appear (12th International Symposium on High Performance Computing Systems and Applications (HPCS'98), Edmonton, Canada, May 20 - 22, 1998)

  • J. Moreira, S. Midkiff, M. Gupta, "From Flop to Megaflops: java for technical computing", IBM research report RC21166 (LCPC'98?)

  • S. Midkiff, J. Moreira, M. Snir, "Optimizing Array Reference Checking in Java Programs", IBM research report RC21184

    Some websites of interest

    Craig Chambers' Vortex group at University of Washington
    Andrew Chien's group at University of Illinois (Andrew now at UCSD)
    Laurie Hendren's Sable group at McGill in Montreal.
    Mary Jean Harrold's group (testing) at Ohio State
    Urs Holzle's group at UCSB
    Andi Krall at University of Vienna
    Bill Pugh's Java page
    Frank Tip's home page

    For papers out of the IBM T.J. Watson group look at ibm's site and use the "find a technology" button.
    Also check, here. A site devoted to dynamic compilation.

    Last updated by Barbara Ryder at 11:30am on September 26, 1999.