Articles

Wake Up and Smell the Coffee: Evaluation Methodology for the 21st Century, Communications of the ACM (2008)

Evaluation methodology underpins all innovation in experimental computer science. It requires relevant workloads, appropriate experimental...

 

CASL: A Rapid-Prototyping Language for Modern Micro-architectures, Computer Languages, Systems, and Structures (2008)

We introduce CASL, the CoGenT Architecture Specification Language, a mixed behavioral–structure architecture description language designed...

 

Design, Implementation, and Evaluation of a Compilation Server, ACM Transactions on Programming Languages and Systems (2007)

Modern JVM implementations interleave execution with compilation of “hot” methods to achieve reasonable performance. Since...

 

Profile-Based Pretenuring, ACM Transactions on Programming Languages and Systems (2007)

Pretenuring can reduce copying costs in garbage collectors by allocating long-lived objects into regions that...

 

Nested Transactional Memory: Model and Architecture Sketches, Science of Computer Programming (2006)

We offer a reference model for nested transactions at the level of memory accesses, and...

 

Understanding the Behavior of Compiler Optimizations, Software: Practice and Experience (2006)

Compiler optimizations are difficult to implement and add complexity to a compiler. For this reason,...

 

Generating Object Lifetime Traces with Merlin, ACM Transactions on Programming Languages and Systems (2006)

Programmers are writing a rapidly growing number of programs in object-oriented languages, such as Java...

 

CISL: A Class-based Machine Description Language for Co-generation of Compilers and Simulators, International Journal of Parallel Programming (2005)

It is currently difficult fully to understand the performance of a modern dynamic programming language...

 

Atomicity as a First-Class System Provision, Journal of Universal Computer Science (2005)

We argue that atomicity, i.e., atomic actions with most of the traditional "ACID" properties, namely...

 

The Jikes Research Virtual Machine project: Building an open-source research community, IBM Systems Journal (2005)

This paper describes the evolution of the Jikese Research Virtual Machine project from an IBM...

 

Sapphire: Copying GC Without Stopping theWorld, Concurrency and Computation: Practice and Experience (2003)

The growing use in concurrent systems of languages that require garbage collection (GC), such as...

 

Building a Basic Block Instruction Scheduler with Reinforcement Learning and Rollouts, Machine Learning (2002)

The execution order of a block of computer instructions on a pipelined machine can make...

 

Using Types to Analyze and Optimize Object-Oriented Programs, ACM Transactions on Programming Languages and Systems (2001)

Object-oriented programming languages provide many software engineering benefits, but these often come at a performance...

 

Memory Subsystem Performance of Programs with Intensive Heap Allocation, ACM Transactions on Computer Systems (1995)
 

Memory Subsystem Performance of Programs with Intensive Heap Allocation, Twenty-First Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 1994) (1994)

Heap allocation with copying garbage collection is believed to have poor memory subsystem performance, We...

 

Working with Persistent Objects: To Swizzle or Not to Swizzle, IEEE Transactions on Software Engineering (1992)
 

Lock-Free Garbage Collection for Multiprocessors, IEEE Transactions on Parallel and Distributed Systems (1992)
 

Design of the Mneme Persistent Object Store, ACM Transactions on Information Systems (1990)

The Mneme project is an investigation of techniques for integrating programming language and database features...

 

Contributions to Books

Supporting Full-Text Information Retrieval with a Persistent Object Store, Fourth International Conference on Extending Database Technology (EDBT 1994) (1994)

The inverted file index common to many full-text information retrieval systems presents unusual and challenging...

 

Object Orientation as Catalyst for Language-Database Integration, Object-Oriented Concepts, Applications, and Databases (1989)
 

Nested Transactions: An Introduction, Concurrency Control and Reliability in Distributed Systems (1987)
 

Conference Papers

Open Nesting in Software Transactional Memory, ACM SIGPLAN 2007 Symposium on Principles and Practice of Parallel Programming (2007)

Transactional memory (TM) promises to simplify concurrent programming while providing scalability competitive to fine-grained locking....

 

CRAMM: Virtual Memory Support for Garbage-Collected Applications, 7th USENIX Symposium on Operating Systems Design and Implementation (OSDI ’06) (2006)

Existing virtual memory systems usually work well with applications written in C and C++, but...

 

The DaCapo Benchmarks: Java Benchmarking Development and Analysis, Proceedings of the 2006 ACM International Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2006) (2006)

Since benchmarks drive computer science research and industry product development, which ones we use and...

 

Hybrid Optimizations: Which Optimization Algorithm to Use?, Proceedings of the 15th International Conference on Compiler Construction (2006)

We introduce a new class of compiler heuristics: hybrid optimizations. Hybrid optimizations choose dynamically at...

 

Automatic Heap Sizing: Taking Real Memory Into Account, Proceedings of the 2004 International Symposium on Memory Management (ISMM 2004) (2004)

Heap size has a huge impact on the performance of garbage collected applications. A heap...

 

MC2: High-Performance Garbage Collection for Memory-Constrained Environments, Proceedings of the 2004 ACM International Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2004) (2004)

Java is becoming an important platform for memory-constrained consumer devices such as PDAs and cellular...

 

The Garbage Collection Advantage: Improving Program Locality, Proceedings of the 2004 ACM International Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2004) (2004)
 

Inducing Heuristics To Decide Whether To Schedule, Proceedings of the 2004 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2004) (2004)

Instruction scheduling is a compiler optimization that can improve program speed, sometimes by 10% or...

 

MarkCopy: Fast Copying GC With Less Space Overhead, Proceedings of the 2003 ACM International Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2003) (2003)

Copying garbage collectors have a number of advantages over noncopying collectors, including cheap allocation and...

 

Framework for Analyzing Garbage Collection, Second IFIP International Conference on Theoretical Computer Science (2002)
 

Error-Free Garbage Collection Traces: How to Cheat and Not Get Caught, Proceedings of the International Conference on Measurement and Modeling of Computer Systems (SIGMETRICS 2002) (2002)

Programmers are writing a large and rapidly growing number of programs in object-oriented languages such...

 

Beltway: Getting Around Garbage Collector Gridlock, Proceedings of the ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation (PLDI 2002) (2002)

We present the design and implementation of a new garbage collection framework that significantly generalizes...

 

When to Use a Compilation Service, LCTES ’02 and SCOPES ’02 Joint Conference on Languages, Compilers, and Tools for Embedded Systems and Software and Compilers for Embedded Systems (2002)

Modern handheld computers are certainly capable of running general purpose applications, such as Java virtual...

 

Pretenuring for Java, Proceedings of the 2001 ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2001) (2001)

Pretenuring can reduce copying costs in garbage collectors by allocating long-lived objects into regions that...

 

Sapphire: Copying GC Without Stopping the World, Proceedings of ACM 2001 Java Grande Conference (2001)

Many concurrent garbage collection (GC) algorithms have been devised, but few have been implemented and...

 

Starting with Termination: A Methodology for Building Distributed Garbage Collection Algorithms, Proceedings of the 24th Australasian Computer Science Conference (2001)

We propose an effective methodology in which a distributed garbage collector may be derived from...

 

Cycles to Recycle: Garbage Collection on the IA-64, Proceedings of the 2000 International Symposium on Memory Management (ISMM 2000) (2000)

The IA-64, Intel's 64-bit instruction set architecture, exhibits a number of interesting architectural features. Here...

 

On Models for Object Lifetime Distributions, Proceedings of the 2000 International Symposium on Memory Management (ISMM 2000) (2000)

Analytical models of memory object lifetimes are appealing because having them would enable mathematical analysis...

 

Age-Based Garbage Collection, Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 1999) (1999)

Modem generational garbage collectors look for garbage among the young objects, because they have high...

 

Scheduling Straight-Line Code Using Reinforcement Learning and Rollouts, Neural Information Processing Symposium, (NIPS 1998) (1998)
 

Garbage Collection and Local Variable Type-Precision and Liveness in Java Virtual Machines, 1998 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 1998) (1998)

Full precision in garbage collection implies retaining only those heap allocated objects that will actually...

 

Type-Based Alias Analysis, 1998 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLSI 1998) (1998)

This paper evaluates three alias analyses based on programming language types. The first analysis uses...

 

Where have all the pointers gone?, Proceedings of the 21st Australasian Computer Science Conference (1998)
 

Learning to Schedule Straight-Line Code, Neural Information Processing Symposium, (NIPS 1997) (1997)
 

Garbage Collecting the World: One Car at a Time, Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, (OOPSLA 1997) (1997)
 

Simple and Effective Analysis of Statically-Typed Object-Oriented Programs, Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, (OOPSLA 1996) (1996)
 

Support Tools for Visual Information Management, Fifth Symposium on Document Analysis and Information Retrieval (SDAIR 1996) (1996)

Visual applications need to represent, manipulate, store, and retrieve both raw and processed visual data....

 

Characterisation of Object Behaviour in Standard ML of New Jersey, ACM SIGPLAN Conference on Lisp and Functional Programming (1994)

We describe a method of measuring lifetime characteristics of heap objects, and discuss ways in...

 

Efficient Packet Demultiplexing for Multiple Endpoints and Large Messages, Usenix Winter 1994 Technical Conference (1994)
 

Protection Traps and Alternatives for Memory Management of an Object-Oriented Language, ACM Symposium on Operating Systems Principles (SOSP 1993) (1993)

Many operating systems allow user programs to specify the protection level (inaccessible, read-only, read-write) of...

 

Object Fault Handling for Persistent Programming Languages, ACM Conference on Object Oriented Programming Systems, Languages, and Applications (OOPSLA 1993) (1993)

A key mechanism of a persistent programming language is its ability to detect and handle...

 

Update Logging for Persistent Programming Languages: A Comparative Performance Evaluation, Nineteenth International Conference on Very Large Data Bases (VLDB 1993) (1993)
 

Transactional Memory: Architectural Support for Lock-Free Data Structures, International Symposium on Computer Architecture (ISCA 1993) (1993)

A shared data structure is lock-free if its operations do not require mutual exclusion. If...

 

A Comparative Performance Evaluation of Write Barrier Implementations, ACM Conference on Object Oriented Programming Systems, Languages, and Applications, (OOPSLA 1992) (1992)

Generational garbage collectors are able to achieve very small pause times by concentrating on the...

 

Compiler Support for Garbage Collection in a Statically Typed Language, ACM SIGPLAN ’92 Conference on Programming Language Design and Implementation (PLDI 1992) (1992)

We cortsidertheproblemof supportingcompactinggarbage collectioninthepresenceof moderncompileroptimizations. Sinceour colleetormay move any heapobject, it mustaccuratelylocate, follow, and updateall...

 

Lock-Free Garbage Collection for Multiprocessors, Third Annual ACM Symposium on Parallel Algorithms and Architectures (SPAA 1991) (1991)

Garbage collection algorithms for shared-memory multiprocessors typically rely on some form of global synchronization to...

 

Log-Based Recovery for Nested Transactions, Thirteenth International Conference on Very Large Data Bases (VLDB 1987) (1987)

Techniques similar to shadow pages have been suggested for use in rollback and crash recovery...

 

Concurrency Features for the Trellis/Owl Language, Proceedings of the European Conference on Object-Oriented Programming (ECOOP 1987) (1987)
 

Managing Stack Frames in Smalltalk, SIGPLAN ’87 Symposium on Interpreters and Interpretive Techniques (1987)

The Smalltalk programming language allows contexts (stack frames) to be accessed and manipulated in very...

 

Finer Grained Concurrency Control for the Database Cache, Third International Conference on Data Engineering (ICDE 1987) (1987)
 

Abstraction in Recovery Management, ACM Conference on Management of Data (SIGMOD 1986) (1986)

There are many examples of actions on abstract data types which can be correctly implemented...

 

Checkpoint and Restart in Distributed Transaction Systems, Third Symposium on Reliability in Distributed Software and Database Systems (SRDSDS 1983) (1983)
 

Nested Transactions and Reliable Distributed Computing, Second Symposium on Reliability in Distributed Software and Database Systems (SRDSDS 1982) (1982)
 

Presentations

Nesting Transactions: Why and What Do We Need?, First ACM SIGPLAN Workshop on Languages, Compilers, and Hardware Support for Transactional Computing (TRANSACT) (2006)
 

Nesting Transactions: Why and What Do We Need?, First ACM SIGPLAN Workshop on Languages, Compilers, and Hardware Support for Transactional Computing (TRANSACT) (2006)
 

Compiling Object-Oriented Languages: Achievements and Promise, ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, (OOPSLA ’97) (1997)
 

Compiling Object-Oriented Languages: Achievements and Promise, ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, (OOPSLA ’97) (1997)