VLDB 2026 Research / reviewers in the wild / expert
David Gay
dblp:98/3981
· DBLP profile ↗
31ranked-venue papers
8as first author
2since 2021 · last 2024
0000-0003-1885-8630ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 19 · 6 first-authorComputer networks · 5Systems, architecture and hardware · 4 · 2 first-authorDatabases, data management, data science and information retrieval · 2 · 2 since 2021
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.
| Computer architecture, parallel and distributed computing, and storage systems
7 papers |
Cloud and datacenter computing · 53% Storage systems · 29% Distributed systems · 11% | |
| Software engineering, system software, and programming languages
12 papers |
Concurrent programming · 56% Program analysis · 23% Operating systems · 13% | |
| Databases, data mining, and information retrieval
1 paper |
Distributed and cloud data management · 100% | |
| Computer networks
6 papers |
Internet of things and sensor networks · 100% | |
| Network and information security
2 papers |
Web and mobile security · 73% Systems and software security · 27% |
Topics — the 30 heaviest of 44, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Cloud and datacenter computing
database migration |
0.8 | 1 | 2024 | Transparent Migration from Datastore to Firestore · Proc. VLDB Endow. 2024 |
Distributed systems › consistency models
strong consistency |
0.2 | 1 | 2024 | Transparent Migration from Datastore to Firestore · Proc. VLDB Endow. 2024 |
Concurrent programming
concurrency bugs |
0.2 | 2 | 2010 | An effective dynamic analysis for detecting generalized deadlocks · SIGSOFT FSE 2010 Effective static deadlock detection · ICSE 2009 |
Concurrent programming
deadlock detection |
0.2 | 2 | 2010 | An effective dynamic analysis for detecting generalized deadlocks · SIGSOFT FSE 2010 Effective static deadlock detection · ICSE 2009 |
Internet of things and sensor networks
wireless sensor network |
0.2 | 5 | 2007 | Reprogramming sensor networks safely, quickly, and efficiently · SenSys 2005 Active Sensor Networks · NSDI 2005 The Emergence of Networking Abstractions and Techniques in TinyOS · NSDI 2004 |
Concurrent programming › concurrency bugs
data races |
0.2 | 2 | 2009 | Lightweight annotations for controlling sharing in concurrent data structures · PLDI 2009 SharC: checking data sharing strategies for multithreaded C · PLDI 2008 |
Program analysis › heap analysis
sharing analysis |
0.2 | 2 | 2009 | Lightweight annotations for controlling sharing in concurrent data structures · PLDI 2009 SharC: checking data sharing strategies for multithreaded C · PLDI 2008 |
Program analysis
static analysis |
0.2 | 2 | 2009 | Effective static deadlock detection · ICSE 2009 Autolocker: synchronization inference for atomic sections · POPL 2006 |
Concurrent programming
atomicity |
0.1 | 1 | 2011 | Composable, nestable, pessimistic atomic statements · OOPSLA 2011 |
Concurrent programming
synchronization |
0.1 | 1 | 2011 | Composable, nestable, pessimistic atomic statements · OOPSLA 2011 |
Concurrent programming › concurrency bugs
deadlock |
0.1 | 1 | 2010 | An effective dynamic analysis for detecting generalized deadlocks · SIGSOFT FSE 2010 |
Program analysis
dynamic analysis |
0.1 | 1 | 2010 | An effective dynamic analysis for detecting generalized deadlocks · SIGSOFT FSE 2010 |
Systems and software security
memory safety |
0.1 | 1 | 2007 | Efficient memory safety for TinyOS · SenSys 2007 |
Operating systems › i/o › i/o subsystem
device drivers |
0.1 | 1 | 2007 | Integrating concurrency control and energy management in device drivers · SOSP 2007 |
Energy-efficient computing
energy management |
0.1 | 1 | 2007 | Integrating concurrency control and energy management in device drivers · SOSP 2007 |
Embedded and real-time systems › embedded software › embedded operating systems
sensor node operating system |
0.1 | 1 | 2007 | Integrating concurrency control and energy management in device drivers · SOSP 2007 |
Concurrent programming › atomicity
atomic sections |
0.1 | 1 | 2006 | Autolocker: synchronization inference for atomic sections · POPL 2006 |
Concurrent programming › synchronization
synchronization synthesis |
0.1 | 1 | 2006 | Autolocker: synchronization inference for atomic sections · POPL 2006 |
Distributed systems › distributed network
sensor networks |
0.1 | 2 | 2005 | The nesC language: A holistic approach to networked embedded systems · PLDI 2003 Reprogramming sensor networks safely, quickly, and efficiently · SenSys 2005 |
Operating systems › special-purpose operating system
embedded operating system |
0.1 | 2 | 2004 | The nesC language: A holistic approach to networked embedded systems · PLDI 2003 The Emergence of Networking Abstractions and Techniques in TinyOS · NSDI 2004 |
Internet of things and sensor networks › wireless sensor network
environmental monitoring |
0.1 | 1 | 2005 | A macroscope in the redwoods · SenSys 2005 |
Internet of things and sensor networks › wireless sensor network › sensor network programming
reprogramming |
0.1 | 1 | 2005 | Reprogramming sensor networks safely, quickly, and efficiently · SenSys 2005 |
Internet of things and sensor networks › wireless sensor network
sensor deployment |
0.1 | 1 | 2005 | A macroscope in the redwoods · SenSys 2005 |
Operating systems › resource management
memory management |
0.1 | 2 | 2001 | Language Support for Regions · PLDI 2001 Memory Management with Explicit Regions · PLDI 1998 |
Operating systems › resource management › memory management
region-based memory management |
0.1 | 2 | 2001 | Language Support for Regions · PLDI 2001 Memory Management with Explicit Regions · PLDI 1998 |
Programming languages and type systems
domain-specific languages |
0.0 | 1 | 2003 | The nesC language: A holistic approach to networked embedded systems · PLDI 2003 |
Programming languages and type systems
language design |
0.0 | 1 | 2003 | The nesC language: A holistic approach to networked embedded systems · PLDI 2003 |
Operating systems › special-purpose operating system › embedded operating system
sensor network operating system |
0.0 | 1 | 2003 | The nesC language: A holistic approach to networked embedded systems · PLDI 2003 |
Concurrent programming
transactional memory |
0.0 | 1 | 2011 | Composable, nestable, pessimistic atomic statements · OOPSLA 2011 |
Performance modeling and evaluation › parallel performance evaluation
multicore scalability |
0.0 | 1 | 2011 | Composable, nestable, pessimistic atomic statements · OOPSLA 2011 |
Methods — techniques the papers use, named apart from their topics
static analysis · 0.3shelters · 0.2lock-based synchronization · 0.2concurrency-based energy management · 0.2dynamic analysis · 0.2safe compilation · 0.1nesc extension · 0.1interrupt-driven concurrency · 0.1trace program generation · 0.1model checking · 0.1sharing casts · 0.1control-dependence graph · 0.1annotation checking · 0.1multidimensional data analysis · 0.1multi-dimensional data analysis · 0.1whole-program analysis · 0.0function inlining · 0.0data race detection · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | Transparent Migration from Datastore to FirestoreabstractDatastore was one of Google's first cloud databases, launched initially as part of App Engine, and built over Google's internal Megastore database system. Firestore was launched in 2019, both a re-implementation of Datastore over Google's Spanner database system and a new, mobile and web-friendly Firestore API. Spanner was chosen as the storage engine of Firestore in particular for technical reasons---it provides unrestricted transaction capabilities, strong consistency guarantees, and other improvements over Megastore. To provide these improvements to all our customers, and simplify our overall system, a non-disruptive, zero-downtime migration was executed of all Datastore databases (stored in Megastore) to Firestore databases (stored in Spanner). This migration took a couple of years to design and plan, and about three to execute. This paper describes both the core engine for migrating databases, and various practical problems that were solved to make this journey successful. As of the writing of this paper, all (over one million) databases have been successfully migrated. Ed Davisson, Tilo Dickopp, David Gay, Eric Karasuda, Ram Kesavan, Vadim Yushprakh |
Proc. VLDB Endow. | 3 |
| 2023 | Firestore: The NoSQL Serverless Database for the Application DeveloperabstractThe recent years have seen an explosive growth in web and mobile application development. Such applications typically have rapid development cycles, and their developers expect mobile-friendly features and serverless characteristics such as rapid deployment capabilities (with minimal initialization), scalability to handle workload spikes, and flexible pay-as-you-go billing. Google’s Firestore is a NoSQL serverless database with real-time notification capability, and together with the Firebase ecosystem greatly simplifies common app development challenges by letting application developers focus primarily on their business logic and user experience. This paper presents the Firestore architecture, how it satisfies the aforementioned requirements, and how its real-time notification system works in tandem with Firebase client libraries to allow mobile applications to provide a smooth user experience even in the presence of network connectivity issues. Ram Kesavan, David Gay, Daniel Thevessen, Jimit Shah, C. Mohan 0001 |
ICDE | 2 |
| 2011 | Composable, nestable, pessimistic atomic statementsabstractIn this paper we introduce a new method for pessimistically implementing composable, nestable atomic statements. Our mechanism, called shelters, is inspired by the synchronization strategy used in the Jade programming language. Unlike previous lock-based pessimistic approaches, our mechanism does not require a whole-program analysis that computes a global lock order. Further, this mechanism frees us to implement several optimizations, impossible with automatically inserted locks, that are necessary for scaling on recent multi-core systems. Additionally we show how our basic mechanism can be extended to support both open- and closed-nesting of atomic statements, something that, to our knowledge, has not yet been implemented fully-pessimistically in this context. Unlike optimistic, transactional-memory-based approaches, programmers using our mechanism do not have to write compensating actions for open-nesting, or worry about the possibly awkward semantics and performance impact of aborted transactions. Zachary R. Anderson, David Gay |
OOPSLA | 2 |
| 2011 | Yada: Straightforward parallel programming
David Gay, Joel Galenson, Mayur Naik, Katherine A. Yelick |
Parallel Comput. | 1 |
| 2010 | An effective dynamic analysis for detecting generalized deadlocksabstractWe present an effective dynamic analysis for finding a broad class of deadlocks, including the well-studied lock-only deadlocks as well as the less-studied, but no less widespread or insidious, deadlocks involving condition variables. Our analysis consists of two stages. In the first stage, our analysis observes a multi-threaded program execution and generates a simple multi-threaded program, called a trace program, that only records operations observed during the execution that are deemed relevant to finding deadlocks. Such operations include lock acquire and release, wait and notify, thread start and join, and change of values of user-identified synchronization predicates associated with condition variables. In the second stage, our analysis uses an off-the-shelf model checker to explore all possible thread interleavings of the trace program and check if any of them deadlocks. A key advantage of our technique is that it discards most of the program logic which usually causes state-space explosion in model checking, and retains only the relevant synchronization logic in the trace program, which is sufficient for finding deadlocks. We have implemented our analysis for Java, and have applied it to twelve real-world multi-threaded Java programs. Our analysis is effective in practice, finding thirteen previously known as well as four new deadlocks. Pallavi Joshi, Mayur Naik, Koushik Sen, David Gay |
SIGSOFT FSE | 4 |
| 2009 | Effective static deadlock detectionabstractWe present an effective static deadlock detection algorithm for Java. Our algorithm uses a novel combination of static analyses each of which approximates a different necessary condition for a deadlock. We have implemented the algorithm and report upon our experience applying it to a suite of multi-threaded Java programs. While neither sound nor complete, our approach is effective in practice, finding all known deadlocks as well as discovering previously unknown ones in our benchmarks with few false alarms. Mayur Naik, Chang-Seo Park, Koushik Sen, David Gay |
ICSE | 4 |
| 2009 | Lightweight annotations for controlling sharing in concurrent data structuresabstractSharC is a recently developed system for checking data-sharing in multithreaded programs. Programmers specify sharing rules (read-only, protected by a lock, etc.) for individual objects, and the SharC compiler enforces these rules using static and dynamic checks. Violations of these rules indicate unintended data sharing, which is the underlying cause of harmful data-races. Additionally, SharC allows programmers to change the sharing rules for a specific object using a sharing cast, to capture the fact that sharing rules for an object often change during the object's lifetime. SharC was successfully applied to a number of multi-threaded C programs. Zachary R. Anderson, David Gay, Mayur Naik |
PLDI | 2 |
| 2008 | SharC: checking data sharing strategies for multithreaded CabstractUnintended or unmediated data sharing is a frequent cause of insidious bugs in multithreaded programs. We present a tool called SharC (short for Sharing Checker) that allows a user to write lightweight annotations to declare how they believe objects are being shared between threads in their program. SharC uses a combination of static and dynamic analyses to check that the program conforms to this specification. Zachary R. Anderson, David Gay, Robert Ennals, Eric A. Brewer |
PLDI | 2 |
| 2007 | Dependent Types for Low-Level Programming
Jeremy Condit, Matthew Harren, Zachary R. Anderson, David Gay, George C. Necula |
ESOP | 4 |
| 2007 | Multi-language Synchronization
Robert Ennals, David Gay |
ESOP | 2 |
| 2007 | Beyond Bug-Finding: Sound Program Analysis for Linux
Zachary R. Anderson, Eric A. Brewer, Jeremy Condit, Robert Ennals, David Gay, Matthew Harren, George C. Necula |
HotOS | 5 |
| 2007 | User-friendly functional programming for web mashupsabstractMashMaker is a web-based tool that makes it easy for a normal user to create web mashups by browsing around, without needing to type, or plan in advance what they want to do. Robert Ennals, David Gay |
ICFP | 2 |
| 2007 | Safe manual memory managementabstractWe present HeapSafe, a tool that uses reference counting to dynamically verify the soundness of manual memory management of C programs. HeapSafe relies on asimple extension to the usual malloc/free memory management API: delayed free scopes during which otherwise dangling references can exist. Porting programs for use with HeapSafe typically requires little effort (on average 0.6% oflines change), adds an average 11% time overhead (84% in the worst case), and increases space usage by an average of 13%. These results are based on portingover half a million lines of C code, including perl where we found sixpreviously unknown bugs.Many existing C programs continue to use unchecked manual memorymanagement. One reason is that programmers fear that moving to garbage collection is too big a risk. We believe that HeapSafe is a practical way toprovide safe memory management for such programs. Since HeapSafe checks existing memory management rather than changing it, programmers need not worrythat HeapSafe will introduce new bugs; and, since HeapSafe does not managememory itself, programmers can choose to deploy their programs without HeapSafe if performance is critical (a simple header file allows HeapSafe programs to compile and run with a regular C compiler). In contrast, we foundthat garbage collection, although faster, had much higher space overhead, and occasionally caused a space-usage explosion that made the program unusable. David Gay, Robert Ennals, Eric A. Brewer |
ISMM | 1 |
| 2007 | Efficient memory safety for TinyOSabstractReliable sensor network software is difficult to create: applications are concurrent and distributed, hardware-based memory protection is unavailable, and severe resource constraints necessitate the use of unsafe, low-level languages. Our work improves this situation by providing efficient memory and type safety for TinyOS 2 applications running on the Mica2, MicaZ, and TelosB platforms. Safe execution ensures that array and pointer errors are caught before they can corrupt RAM. Our contributions include showing that aggressive optimizations can make safe execution practical in terms of resource usage; developing a technique for efficiently enforcing safety under interrupt-driven concurrency; extending the nesC language and compiler to support safety annotations; finding previously unknown bugs in TinyOS; and, finally, showing that safety can be exploited to increase the availability of sensor networks applications even when memory errors are left unfixed. Nathan Cooprider, Will Archer, Eric Eide, David Gay, John Regehr |
SenSys | 4 |
| 2007 | Integrating concurrency control and energy management in device driversabstractEnergy management is a critical concern in wireless sensornets. Despite its importance, sensor network operating systems today provide minimal energy management support, requiring applications to explicitly manage system power states. To address this problem, we present ICEM, a device driver architecture that enables simple, energy efficient wireless sensornet applications. The key insight behind ICEM is that the most valuable information an application can give the OS for energy management is its concurrency. Using ICEM, a low-rate sensing application requires only a single line of energy management code and has an efficiency within 1.6 % of a hand-tuned implementation. ICEM’s effectiveness questions the assumption that sensornet applications must be responsible for all power management and sensornets cannot have a standardized OS with a simple API. Kevin Klues, Vlado Handziski, Chenyang Lu 0001, Adam Wolisz, David E. Culler, David Gay, Philip Alexander Levis |
SOSP | 6 |
| 2007 | Software design patterns for TinyOSabstractWe present design patterns used by software components in the TinyOS sensor network operating system. They differ significantly from traditional software design patterns because of the constraints of sensor networks and to TinyOS's focus on static allocation and whole-program composition. We describe how nesC has evolved to support these design patterns by including a few simple language primitives and optimizations. David Gay, Philip Alexander Levis, David E. Culler |
ACM Trans. Embed. Comput. Syst. | 1 |
| 2006 | Atomicity and visibility in tiny embedded systemsabstractVisibility is a property of a programming language's memory model that determines when values stored by one concurrent computation become visible to other computations. Our work exploits the insight that in nesC, a C-like language with explicit atomicity, the traditional way of ensuring timely visibility---volatile variables---can be entirely avoided. This is advantageous because the volatile qualifier is a notorious source of programming errors and misunderstandings. Furthermore, the volatile qualifier hurts performance by inhibiting many more optimizations than are necessary to ensure visibility. In this paper we extend the semantics of nesC's atomic statements to include a visibility guarantee, we show two ways that these semantics can be implemented, and we also show that our better implementation has no drawbacks in terms of resource usage. John Regehr, Nathan Cooprider, David Gay |
PLOS | 3 |
| 2006 | Autolocker: synchronization inference for atomic sectionsabstractThe movement to multi-core processors increases the need for simpler, more robust parallel programming models. Atomic sections have been widely recognized for their ease of use. They are simpler and safer to use than manual locking and they increase modularity. But existing proposals have several practical problems, including high overhead and poor interaction with I/O. We present pessimistic atomic sections, a fresh approach that retains many of the advantages of optimistic atomic sections as seen in "transactional memory" without sacrificing performance or compatibility. Pessimistic atomic sections employ the locking mechanisms familiar to programmers while relieving them of most burdens of lock-based programming, including deadlocks. Significantly, pessimistic atomic sections separate correctness from performance: they allow programmers to extract more parallelism via finer-grained locking without fear of introducing bugs. We believe this property is crucial for exploiting multi-core processor designs.We describe a tool, Autolocker, that automatically converts pessimistic atomic sections into standard lock-based code. Autolocker relies extensively on program analysis to determine a correct locking policy free of deadlocks and race conditions. We evaluate the expressiveness of Autolocker by modifying a 50,000 line high-performance web server to use atomic sections while retaining the original locking policy. We analyze Autolocker's performance using microbenchmarks, where Autolocker outperforms software transactional memory by more than a factor of 3. Bill McCloskey, David Gay, Eric A. Brewer |
POPL | 3 |
| 2005 | Software design patterns for TinyOSabstractWe present design patterns used by software components in the TinyOS operating system. They differ significantly from traditional software design patterns due to TinyOS's focus on static allocation and whole-program composition. We describe how nesC has evolved to support design patterns by including a few simple language primitives David Gay, Philip Alexander Levis, David E. Culler |
LCTES | 1 |
| 2005 | Active Sensor Networks
Philip Alexander Levis, David Gay, David E. Culler |
NSDI | 2 |
| 2005 | Language Support for Interoperable Messaging in Sensor NetworksabstractDevelopment of network communication in a homogeneous sensor network environment is straightforward as the nodes can share message layouts simply by letting the compiler lay out messages in an arbitrary fashion and using the same executable code on all nodes. However, this simple approach does not usually work in a heterogeneous sensor network setting because different compilers may generate different message layouts, and different processors often have different basic type representations and alignments. The traditional solutions to this problem is to either require programmers to insert network-byte-order and host-byte-order conversions, or to use a compiler that automatically generates marshalling and unmarshalling routines. Unfortunately, these approaches are in-adequate for sensor networks because they are either error-prone and/or add significant overheads to already resource-constrained sensor motes. Instead, we propose a language extension --- network types --- which supports heterogeneous networking in a simple and efficient way. We have implemented network types in the nesC, the language of the TinyOS sensor network operating system and its applications. We have used network types to supports heterogeneous networking between micaz and telos motes (which have different alignment restrictions). We also show that our implementation introduces a negligible amount of overhead in runtime and code size. Network types have the additional benefit of requiring few changes to existing TinyOS code. Kevin K. Chang, David Gay |
SCOPES | 2 |
| 2005 | Reprogramming sensor networks safely, quickly, and efficientlyabstractNo abstract available. Philip Alexander Levis, David Gay |
SenSys | 2 |
| 2005 | A macroscope in the redwoodsabstractThe wireless sensor network "macroscope" offers the potential to advance science by enabling dense temporal and spatial monitoring of large physical volumes. This paper presents a case study of a wireless sensor network that recorded 44 days in the life of a 70-meter tall redwood tree, at a density of every 5 minutes in time and every 2 meters in space. Each node measured air temperature, relative humidity, and photosynthetically active solar radiation. The network captured a detailed picture of the complex spatial variation and temporal dynamics of the microclimate surrounding a coastal redwood tree. This paper describes the deployed network and then employs a multi-dimensional analysis methodology to reveal trends and gradients in this large and previously-unobtainable dataset. An analysis of system performance data is then performed, suggesting lessons for future deployments. Gilman Tolle, Joseph Polastre, Robert Szewczyk, David E. Culler, Neil Turner, Kevin Tu, Stephen Burgess, Todd Dawson, Philip Buonadonna, David Gay, Wei Hong 0001 |
SenSys | 10 |
| 2004 | The Emergence of Networking Abstractions and Techniques in TinyOS
Philip Alexander Levis, Samuel Madden 0001, David Gay, Joseph Polastre, Robert Szewczyk, Alec Woo, Eric A. Brewer, David E. Culler |
NSDI | 3 |
| 2003 | The nesC language: A holistic approach to networked embedded systemsabstractWe present nesC, a programming language for networked embedded systems that represent a new design space for application developers. An example of a networked embedded system is a sensor network, which consists of (potentially) thousands of tiny, low-power "motes," each of which execute concurrent, reactive programs that must operate with severe memory and power constraints.nesC's contribution is to support the special needs of this domain by exposing a programming model that incorporates event-driven execution, a flexible concurrency model, and component-oriented application design. Restrictions on the programming model allow the nesC compiler to perform whole-program analyses, including data-race detection (which improves reliability) and aggressive function inlining (which reduces resource consumption).nesC has been used to implement TinyOS, a small operating system for sensor networks, as well as several significant sensor applications. nesC and TinyOS have been adopted by a large number of sensor network research groups, and our experience and evaluation of the language shows that it is effective at supporting the complex, concurrent programming style demanded by this new class of deeply networked systems. David Gay, Philip Alexander Levis, J. Robert von Behren, Matt Welsh, Eric A. Brewer, David E. Culler |
PLDI | 1 |
| 2002 | An analysis of VI Architecture primitives in support of parallel and distributed communicationabstractAbstract We present the results of a detailed study of the Virtual Interface (VI) paradigm as a communication foundation for a distributed computing environment. Using Active Messages and the Split‐C global memory model, we analyze the inherent costs of using VI primitives to implement these high‐level communication abstractions. We demonstrate a minimum mapping cost (i.e. the host processing required to map one abstraction to a lower abstraction) of 5.4 μs for both Active Messages and Split‐C using four‐way 550 MHz Pentium III SMPs and the Myrinet network. We break down this cost to the use of individual VI primitives in supporting flow control, buffer management and event processing and identify the completion queue as the source of the highest overhead. Bulk transfer performance plateaus at 44 Mbytes/s for both implementations are due to the addition of fragmentation requirements. Based on this analysis, we present the implications for the VI successor, Infiniband. Copyright © 2002 John Wiley & Sons, Ltd. Andrew Begel, Philip Buonadonna, David E. Culler, David Gay |
Concurr. Comput. Pract. Exp. | 4 |
| 2001 | Language Support for RegionsabstractRegion-based memory management systems structure memory by grouping objects in regions under program control. Memory is reclaimed by deleting regions, freeing all objects stored therein. Our compiler for C with regions, RC, prevents unsafe region deletions by keeping a count of references to each region. Using type annotations that make the structure of a program's regions more explicit, we reduce the overhead of reference counting from a maximum of 27% to a maximum of 11% on a suite of realistic benchmarks. We generalise these annotations in a region type system whose main novelty is the use of existentially quantified abstract regions to represent pointers to objects whose region is partially or totally unknown. A distribution of RC is available at http://www.cs.berkeley.edu/~dgay/rc.tar.gz. David Gay, Alex Aiken |
PLDI | 1 |
| 2000 | Fast Escape Analysis and Stack Allocation for Object-Based Programs
David Gay, Bjarne Steensgaard |
CC | 1 |
| 1998 | Memory Management with Explicit RegionsabstractMuch research has been devoted to studies of and algorithms for memory management based on garbage collection or explicit allocation and deallocation. An alternative approach, region-based memory management, has been known for decades, but has not been well-studied. In a region-based system each allocation specifies a region, and memory is reclaimed by destroying a region, freeing all the storage allocated therein. We show that on a suite of allocation-intensive C programs, regions are competitive with malloc/free and sometimes substantially faster. We also show that regions support safe memory management with low overhead. Experience with our benchmarks suggests that modifying many existing programs to use regions is not difficult. David Gay, Alex Aiken |
PLDI | 1 |
| 1998 | Barrier InferenceabstractMany parallel programs are written in SPMD style i.e. by running the same sequential program on all processes. SPMD programs include synchronization, but it is easy to write incorrect synchronization patterns. We propose a system that verifies a program's synchronization pattern. We also propose language features to make the synchronization pattern more explicit and easily checked. We have implemented a prototype of our system for Split-C and successfully verified the synchronization structure of realistic programs. Alex Aiken, David Gay |
POPL | 2 |
| 1998 | Titanium: A High-performance Java DialectabstractTitanium is a language and system for high-performance parallel scientific computing. Titanium uses Java as its base, thereby leveraging the advantages of that language and allowing us to focus attention on parallel computing issues. The main additions to Java are immutable classes, multidimensional arrays, an explicitly parallel SPMD model of computation with a global address space, and zone-based memory management. We discuss these features and our design approach, and report progress on the development of Titanium, including our current driving application: a three-dimensional adaptive mesh refinement parallel Poisson solver. © 1998 John Wiley & Sons, Ltd. Katherine A. Yelick, Luigi Semenzato, Geoff Pike, Carleton Miyamoto, Ben Liblit, Arvind Krishnamurthy, Paul N. Hilfinger, Susan L. Graham, David Gay, Phillip Colella, Alex Aiken |
Concurr. Pract. Exp. | 9 |