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.
- IEEE Transactions on Software Engineering (IEEE-TSE)
- ACM Transactions on Programming Languages and Systems (TOPLAS)
- ACM Transactions on Software Engineering Methodology (TOSEM)
- ACM SIGPLAN Programming Languages Design and Implementation (PLDI)
- ACM SIGPLAN/SIGACT Symposium on Principles of Programming Languages
(POPL)
- ACM SIGPLAN Conference on Object-oriented Programming, Systems,
Languages, and Applications (OOPSLA)
- ACM SIGPLAN Conference on Principles and Practices of Parallel
Programming (PPOPP)
- ACM SIGPLAN/SIGSOFT Workshop on Program Analysis, Software Tools and
Engineering (PASTE)
- *European Conference on Object-oriented Programming (ECOOP)
- *European Symposium on Programming (ESOP)
- *Compiler Construction (CC)
- ACM SIGSOFT Foundations of Software Engineering (FSE)
- *Workshop on Languages and Compilers for Parallel Computation (LCPC)
- International Symposium on Software Testing and Analysis (ISSTA)
- International Conference on Software Engineering (ICSE)
- USENIX xx Conference on Object-Oriented Technologies and Systems (COOTS)
Analysis
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.
Applications
Slicing
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)
Testing
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
Compilers
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.
Transformations
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.
Exceptions
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.
Miscellaneous
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.