David Detlefs

dblp:61/724 · DBLP profile ↗
← Back
17ranked-venue papers
9as first author
0since 2021 · last 2006
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 8 · 3 first-authorSystems, architecture and hardware · 5 · 2 first-authorTheory of computation · 2 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
5 papers
Concurrent programming · 35% Runtime systems and virtual machines · 34% Program verification · 20%
Theoretical computer science
1 paper
Automated reasoning and model checking · 100%

Topics — the 14 heaviest of 15, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Concurrent programming
synchronization
0.122006
Eliminating synchronization-related atomic operations with biased locking and bulk rebiasing · OOPSLA 2006
An Efficient Meta-Lock for Implementing Ubiquitous Synchronization · OOPSLA 1999
Runtime systems and virtual machines › virtual machine implementation
java virtual machine
0.132006
Eliminating synchronization-related atomic operations with biased locking and bulk rebiasing · OOPSLA 2006
An Efficient Meta-Lock for Implementing Ubiquitous Synchronization · OOPSLA 1999
Garbage Collection and Local Variable Type-Precision and Liveness in Java Virtual Machines · PLDI 1998
Debugging and program repair
error localization
0.112005
Simplify: a theorem prover for program checking · J. ACM 2005
Program verification › deductive verification
extended static checking
0.112005
Simplify: a theorem prover for program checking · J. ACM 2005
Program verification
theorem proving
0.112005
Simplify: a theorem prover for program checking · J. ACM 2005
Automated reasoning and model checking
decision procedures
0.112005
Simplify: a theorem prover for program checking · J. ACM 2005
Automated reasoning and model checking › deduction
quantified reasoning
0.112005
Simplify: a theorem prover for program checking · J. ACM 2005
Runtime systems and virtual machines
garbage collection
0.122001
Lock-free reference counting · PODC 2001
Garbage Collection and Local Variable Type-Precision and Liveness in Java Virtual Machines · PLDI 1998
Concurrent programming
concurrent data structures
0.012001
Lock-free reference counting · PODC 2001
Concurrent programming › non-blocking algorithms
lock-free data structures
0.012001
Lock-free reference counting · PODC 2001
Runtime systems and virtual machines › garbage collection
reference counting
0.012001
Lock-free reference counting · PODC 2001
Concurrent programming › synchronization
locking
0.011999
An Efficient Meta-Lock for Implementing Ubiquitous Synchronization · OOPSLA 1999
Concurrent programming › synchronization
synchronization primitives
0.012006
Eliminating synchronization-related atomic operations with biased locking and bulk rebiasing · OOPSLA 2006
Program analysis
type analysis
0.011998
Garbage Collection and Local Variable Type-Precision and Liveness in Java Virtual Machines · PLDI 1998

Methods — techniques the papers use, named apart from their topics

nelson-oppen method · 0.1e-graph matching · 0.1store-free biased locking · 0.1epoch-based bulk rebiasing · 0.1double compare-and-swap · 0.0thread-safe class libraries · 0.0monitors · 0.0type analysis · 0.0live variable analysis · 0.0
YearPublicationVenuePosition
2006 Eliminating synchronization-related atomic operations with biased locking and bulk rebiasing
abstract
The Java TM programming language contains built-in synchronization primitives for use in constructing multithreaded programs. Efficient implementation of these synchronization primitives is necessary in order to achieve high performance. Recent research [9, 12, 10, 3, 7] has focused on the run-time elimination of the atomic operations required to implement object monitor synchronization primitives. This paper describes a novel technique called store-free biased locking which eliminates all synchronization-related atomic operations on uncontended object monitors. The technique supports the bulk transfer of object ownership from one thread to another, and the selective disabling of the optimization where unprofitable, using epoch-based bulk rebiasing and revocation. It has been implemented in the production version of the Java HotSpot TM VM and has yielded significant performance improvements on a range of benchmarks and applications. The technique is applicable to any virtual machine-based programming language implementation with mostly block-structured locking primitives.
Kenneth B. Russell, David Detlefs
OOPSLA2
2005 Compile-Time Concurrent Marking Write Barrier Removal
abstract
Garbage collectors incorporating concurrent marking to cope with large live data sets and stringent pause time constraints have become common in recent years. The snapshot-at-the-beginning style of concurrent marking has several advantages over the incremental update alternative, but one main disadvantage: it requires the mutator to execute a significantly more expensive write barrier. This paper demonstrates that a large fraction of these write barriers are unnecessary, and may be eliminated by static analysis.
V. Krishna Nandivada, David Detlefs
CGO2
2005 Simplify: a theorem prover for program checking
abstract
This article provides a detailed description of the automatic theorem prover Simplify, which is the proof engine of the Extended Static Checkers ESC/Java and ESC/Modula-3. Simplify uses the Nelson--Oppen method to combine decision procedures for several important theories, and also employs a matcher to reason about quantifiers. Instead of conventional matching in a term DAG, Simplify matches up to equivalence in an E-graph, which detects many relevant pattern instances that would be missed by the conventional approach. The article describes two techniques, error context reporting and error localization, for helping the user to determine the reason that a false conjecture is false. The article includes detailed performance figures on conjectures derived from realistic program-checking problems.
David Detlefs, Greg Nelson, James B. Saxe
J. ACM1
2004 A Hard Look at Hard Real-Time Garbage Collection
abstract
The author reviews the literature on the use of garbage collection in real-time systems. The author concentrates on hard real-time systems, where we ideally construct mathematical proofs of correctness and of timing properties. In particular, the author examines the interaction of overheads imposed on mutator operations by garbage collection algorithms on worst-case execution time analyses of real-time threads performing those operations. In recent years there has been a shift from work-based to time-based approaches. This paper explains and motivates this shift, and reviews examples, problems, and advantages of example algorithms from each approach. Finally, the author examines what extensions to programming verification technology might be necessary to prove that sufficient memory space exists to run a real-time system with the same rigor that one proves that sufficient time exists in a real-time schedule
David Detlefs
ISORC1
2004 Garbage-first garbage collection
abstract
Garbage-First is a server-style garbage collector, targeted for multi-processors with large memories, that meets a soft real-time goal with high probability, while achieving high throughput. Whole-heap operations, such as global marking, are performed concurrently with mutation, to prevent interruptions proportional to heap or live-data size. Concurrent marking both provides collection ”completeness ” and identifies regions ripe for reclamation via compacting evacuation. This evacuation is performed in parallel on multiprocessors, to increase throughput.
David Detlefs, Christine H. Flood, Steve Heller, Tony Printezis
ISMM1
2004 DCAS is not a silver bullet for nonblocking algorithm design
abstract
Despite years of research, the design of efficient nonblocking algorithms remains difficult. A key reason is that current shared-memory multiprocessor architectures support only single-location synchronisation primitives such as compare-and-swap (CAS) and load-linked/store-conditional (LL/SC). Recently researchers have investigated the utility of double-compare-and-swap (DCAS)--a generalisation of CAS that supports atomic access to two memory locations -- in overcoming these problems. We summarise recent research in this direction and present a detailed case study concerning a previously published nonblocking DCAS-based double-ended queue implementation. Our summary and case study clearly show that DCAS does not provide a silver bullet for nonblocking synchronisation. That is, it does not make the design and verification of even mundane nonblocking data structures with desirable properties easy. Therefore, our position is that while slightly more powerful synchronisation primitives can ave a profound effect on ease of algorithm design and verification, DCAS does not provide sufficient additional power over CAS to justify supporting it in hardware.
Simon Doherty, David Detlefs, Lindsay Groves, Christine H. Flood, Victor Luchangco, Paul Alan Martin, Mark Moir, Nir Shavit, Guy L. Steele Jr.
SPAA2
2002 Lock-free reference counting
David Detlefs, Paul Alan Martin, Mark Moir, Guy L. Steele Jr.
Distributed Comput.1
2002 DCAS-Based Concurrent Deques
Ole Agesen, David Detlefs, Christine H. Flood, Alex Garthwaite, Paul Alan Martin, Mark Moir, Nir Shavit, Guy L. Steele Jr.
Theory Comput. Syst.2
2001 Lock-free reference counting
abstract
Assuming the existence of garbage collection makes it easier to design implementations of concurrent data structures. However, this assumption limits their applicability. We present a methodology that, for a significant class of data structures, allows designers to first tackle the easier problem of designing a garbage-collection-dependent implementation, and then apply our methodology to achieve a garbage-collection-independent one. Our methodology is based on the well-known reference counting technique, and employs the double compare-and-swap operation.
David Detlefs, Paul Alan Martin, Mark Moir, Guy L. Steele Jr.
PODC1
2000 A Generational Mostly-Concurrent Garbage Collector
abstract
This paper reports our experiences with a mostly-concurrent incremental garbage collector, implemented in the context of a high performance virtual machine for the Java™ programming language. The garbage collector is based on the “mostly parallel” collection algorithm of Boehm et al. and can be used as the old generation of a generational memory system. It overloads efficient write-barrier code already generated to support generational garbage collection to also identify objects that were modified during concurrent marking. These objects must be rescanned to ensure that the concurrent marking phase marks all live objects. This algorithm minimises maximum garbage collection pause times, while having only a small impact on the average garbage collection pause time and overall execution time. We support our claims with experimental results, for both a synthetic benchmark and real programs.
Tony Printezis, David Detlefs
ISMM2
2000 DCAS-based concurrent deques
abstract
The computer industry is currently examining the use of strong synchronization operations such as double compare-and-swap (DCAS) as a means of supporting non-blocking synchronization on tomorrow's multiprocessor machines. However, before such a strong primitive will be incorporated into hardware design, its utility needs to be proven by developing a body of effective non-blocking data structures using DCAS. As part of this effort, we present two new linearizable non-blocking implementations of concurrent deques using the DCAS operation. The first uses an array representation, and improves on former algorithms by allowing uninterrupted concurrent access to both ends of the deque while correctly handling the difficult boundary cases when the deque is empty or full. The second uses a linked-list representation, and is the first non-blocking unbounded-memory deque implementation. It too allows uninterrupted concurrent access to both ends of the deque.
Ole Agesen, David Detlefs, Christine H. Flood, Alex Garthwaite, Paul Alan Martin, Nir Shavit, Guy L. Steele Jr.
SPAA2
2000 Even Better DCAS-Based Concurrent Deques
David Detlefs, Christine H. Flood, Alex Garthwaite, Paul Alan Martin, Nir Shavit, Guy L. Steele Jr.
DISC1
1999 Inlining of Virtual Methods
David Detlefs, Ole Agesen
ECOOP1
1999 An Efficient Meta-Lock for Implementing Ubiquitous Synchronization
abstract
Programs written in concurrent object-oriented languages, especially ones that employ thread-safe reusable class libraries, can execute synchronization operations (lock, notify, etc.) at an amazing rate. Unless implemented with utmost care, synchronization can become a performance bottleneck. Furthermore, in languages where every object may have its own monitor, per-object space overhead must be minimized. To address these concerns, we have developed a meta-lock to mediate access to synchronization data. The meta-lock is fast (lock + unlock executes in 11 SPARC™ architecture instructions), compact (uses only two bits of space), robust under contention (no busy-waiting), and flexible (supports a variety of higher-level synchronization operations). We have validated the meta-lock with an implementation of the synchronization operations in a high-performance product-quality Java™ virtual machine and report performance data for several large programs.
Ole Agesen, David Detlefs, Alex Garthwaite, Ross C. Knippel, Y. S. Ramakrishna, Derek White
OOPSLA2
1998 Garbage Collection and Local Variable Type-Precision and Liveness in Java Virtual Machines
abstract
Full precision in garbage collection implies retaining only those heap allocated objects that will actually be used in the future. Since full precision is not computable in general, garbage collectors use safe (i.e., conservative) approximations such as reachability from a set of root references. Ambiguous roots collectors (commonly called "conservative") can be overly conservative because they overestimate the root set, and thereby retain unexpectedly large amounts of garbage. We consider two more precise collection schemes for Java virtual machines (JVMs). One uses a type analysis to obtain a type-precise root set (only those variables that contain references); the other adds a live variable analysis to reduce the root set to only the live reference variables. Even with the Java programming language's strong typing, it turns out that the JVM specification has a feature that makes type-precise root sets difficult to compute. We explain the problem and ways in which it can be solved.Our experimental results include measurements of the costs of the type and liveness analyses at load time, of the incremental benefits at run time of the liveness analysis over the type analysis alone, and of various map sizes and counts. We find that the liveness analysis often produces little or no improvement in heap size, sometimes modest improvements, and occasionally the improvement is dramatic. While further study is in order, we conclude that the main benefit of the liveness analysis is preventing bad surprises.
Ole Agesen, David Detlefs, J. Eliot B. Moss
PLDI2
1994 Memory Allocation Costs in Large C and C++ Programs
abstract
Abstract Dynamic storage allocation is an important part of a large class of computer programs written in C and C + +. High‐performance algorithms for dynamic storage allocation have been, and will continue to be, of considerable interest. This paper presents detailed measurements of the cost of dynamic storage allocation in 11 diverse C and C + + programs using five very different dynamic storage allocation implementations, including a conservative garbage collection algorithm. Four of the allocator implementations measured are publicly available on the Internet. A number of the programs used in these measurements are also available on the Internet to facilitate further research in dynamic storage allocation. Finally, the data presented in this paper is an abbreviated version of more extensive statistics that are also publicly available on the Internet.
David Detlefs, Al Dosser, Benjamin G. Zorn
Softw. Pract. Exp.1
1985 A Procedure for Automatically Proving the Termination of a Set of Rewrite Rules
David Detlefs, Randy Forgaard
RTA1