Craig Chambers

Abstract Extensibility, Safety and Performance in the SPIN Operating System (2008)

Brian N. Bershad, Stefan Savage, Przemysław Pardyak, Emin Gün Sirer, Marc E. Fiuczynski, David Becker, ...

This paper describes the motivation, architecture and performance of SPIN, an extensible operating system. SPIN provides an extension infrastructure, together with a core set of extensible services,...

ABSTRACT Automatically Proving the Correctness of Compiler Optimizations (2008)

Sorin Lerner, Todd Millstein, Craig Chambers

We describe a technique for automatically proving compiler optimizations sound, meaning that their transformations are always semantics-preserving. We first present a domainspecific language, called...

Abstract (2008)

Sorin Lerner, Sorin Lerner, Craig Chambers, Craig Chambers, Daniel Grossman, Sorin Lerner

This is to certify that I have examined this copy of a doctoral dissertation by

Abstract Object-Oriented Multi-Methods in Cecil (2008)

Craig Chambers

Multiple dispatching provides increased expressive power over single dispatching by guiding method lookup using the values of all arguments instead of only the receiver. However, existing languages...

Formal Definitions and Theory—syntax, semantics (2008)

Todd Millstein, Colin Bleckner, Craig Chambers

One promising approach for adding object-oriented (OO) facilities to functional languages like ML is to generalize the existing datatype and function constructs to be hierarchical and extensible, so...

An Evaluation of Staged Run-Time Optimizations in DyC Abstract (2008)

Brian Grant, Matthai Philipose, Markus Mock, Craig Chambers, Susan J. Eggers

Previous selective dynamic compilation systems have demonstrated that dynamic compilation can achieve performance improvements at low cost on small kernels, but they have had difficulty scaling to...

www.elsevier.com/locate/entcs Cobalt: A Language for Writing Provably-Sound Compiler Optimizations (2008)

Sorin Lerner, Todd Millstein, Craig Chambers

We overview the current status and future directions of the Cobalt project. Cobalt is a domainspecific language for implementing compiler optimizations as guarded rewrite rules. Cobalt optimizations...

An Evaluation of Staged Run-Time Optimizations in DyC Abstract (2008)

Brian Grant, Matthai Philipose, Markus Mock, Craig Chambers, Susan J. Eggers

Previous selective dynamic compilation systems have demonstrated that dynamic compilation can achieve performance improvements at low cost on small kernels, but they have had difficulty scaling to...

ABSTRACT HydroJ: Object-Oriented Pattern Matching for Evolvable Distributed Systems (2008)

Keunwoo Lee, Anthony Lamarca, Craig Chambers

In an evolving software system, components must be able to change independently while remaining compatible with their peers. One obstacle to independent evolution is the brittle parameter problem:...

Abstract Iterative Type Analysis and Extended Message Splitting: Optimizing Dynamically-Typed Object-Oriented Programs (2008)

Craig Chambers, David Ungar

Object-oriented languages have suffe=d from poor perfor-mance caused by frequent and slow dynamically-bound pro-cedure calls. The best way to speed up a procedure call is to compile it out, but...

VarDecl:: = id: Type 2 (2008)

Sorin Lerner, Todd Millstein, Erika Rice, Craig Chambers, Rhodium Syntax, Decl Vardecls

This document contains a formal description of the Rhodium language. Section 1 presents the Rhodium syntax. Section 2 presents our composing framework, which is used to formalize Rhodium analyses....

Abstract Searching for Type-Error Messages (2008)

Benjamin S. Lerner, Matthew Flower, Dan Grossman, Craig Chambers

Advanced type systems often need some form of type inference to reduce the burden of explicit typing, but type inference often leads to poor error messages for ill-typed programs. This work pursues a...

Abstract In PEPM’97 Proceedings Annotation-Directed Run-Time Specialization in C (2008)

Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

We present the design of a dynamic compilation system for C. Directed by a few declarative user annotations specifying where and on what dynamic compilation is to take place, a binding time analysis...

An Evaluation of Staged Run-Time Optimizations in DyC Abstract (2008)

Brian Grant, Matthai Philipose, Markus Mock, Craig Chambers, Susan J. Eggers

Previous selective dynamic compilation systems have demonstrated that dynamic compilation can achieve performance improvements at low cost on small kernels, but they have had difficulty scaling to...

Abstract Searching for Type-Error Messages (2008)

Benjamin S. Lerner, Matthew Flower, Dan Grossman, Craig Chambers

Advanced type systems often need some form of type inference to reduce the burden of explicit typing, but type inference often leads to poor error messages for ill-typed programs. This work pursues a...

Abstract Extensibility, Safety and Performance in the SPIN Operating System (2008)

Brian N. Bershad, Stefan Savage, Przemysław Pardyak, Emin Gün Sirer, Marc E. Fiuczynski, David Becker, ...

This paper describes the motivation, architecture and performance of SPIN, an extensible operating system. SPIN provides an extension infrastructure, together with a core set of extensible services,...

In PLDI’96 Fast, Effective Dynamic Compilation (2008)

Joel Ausl, Matthai Philipose, Craig Chambers, Susan J. Eggers, Brian N. Bershad

Dynamic compilation enables optimizations based on the values of invariant data computed at run-time. Using the values of these runtime constants, a dynamic compiler can eliminate their memory loads,...

1 (2008)

Searching Type-error, Messages Benjamin, S. Lerner, Matthew Flower, Dan Grossman, Craig Chambers

Abstract Advanced type systems often need some form of type inference toreduce the burden of explicit typing, but type inference often leads to poor error messages for ill-typed programs. This work...

ABSTRACT Automatically Proving the Correctness of Compiler Optimizations (2008)

Sorin Lerner, Todd Millstein, Craig Chambers

We describe a technique for automatically proving compiler optimizations sound, meaning that their transformations are always semantics-preserving. We first present a domainspecific language, called...

A theory of platform-dependent low-level software (2008)

Marius Nita, Dan Grossman, Craig Chambers

The C language definition leaves the sizes and layouts of types partially unspecified. When a C program makes assumptions about type layout, its semantics is defined only on platforms (C compilers...

Towards Reusable, Extensible Components (2007)

Craig Chambers

Introduction The program development community has long wished for reusable software components: modules or data structures or (fine-grained) libraries which can be written and debugged once and then...

Entire and Meromorphic Solutions of Ordinary Differential Equations (2007)

Ivar Ekeland, Jeffrey Dean, David Grove, Craig Chambers, Kim B. Bruce, ...

. The abstract should summarize the contents of the paper using at least 70 and at most 150 words. It will be set in 9-point font size and be inset 1.0 cm from the right and left margins. There will...

Towards Safe Modular Extensible Objects (2007)

Chambers Leavens, Cecil Language, Gary T. Leavens, Gary T. Leavens, Craig Chambers, Craig Chambers, ...

We discuss the module system of the Cecil language, which has a flexible means of customizing views of objects. Multi-methods with invocation based on static scoping, a module system, and extension...

Cost of Garbage Collection in the (2007)

System Position, Craig Chambers

this paper we measure various costs associated with generation scavenging in the SELF system. We believe these are the first reported measurements of the overhead of a garbage collector for a...

Composing Dataflow Analyses and Transformations Technical Report UW-CSE-01-11-01 (2007)

Sorin Lerner, David Grove, Craig Chambers

Dataflow analyses can have mutually beneficial interactions. Previous efforts to exploit these interactions have either (1) iteratively performed each individual analysis until no further...

Architectural Reasoning in ArchJava Architectural Reasoning in ArchJava 1 (2007)

Jonathan Aldrich, Craig Chambers, David Notkin

Abstract. Software architecture describes the structure of a system, enabling more effective design, program understanding, and formal analysis. However, existing approaches decouple implementation...

Alias Annotations for Program Understanding UW-CSE-02-11-01 November, 2002 Alias Annotations for Program Understanding (2007)

Jonathan Aldrich, Valentin Kostadinov, Craig Chambers

One of the primary challenges in building and evolving large object-oriented systems is understanding aliasing between objects. Unexpected aliasing can lead to broken invariants, mistaken...

Abstract In PEPM’97 Proceedings Annotation-Directed Run-Time Specialization in C (2007)

Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

We present the design of a dynamic compilation system for C. Directed by a few declarative user annotations specifying where and on what dynamic compilation is to take place, a binding time analysis...

Abstract DyC: An Expressive Annotation-Directed Dynamic Compiler for C (2007)

Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

We present the design of DyC, a dynamic-compilation system for C based on run-time specialization. Directed by a few declarative user annotations that specify the variables and code on which dynamic...

Abstract DyC: An Expressive Annotation-Directed Dynamic Compiler for C (2007)

Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

We present the design of DyC, a dynamic-compilation system for C based on run-time specialization. Directed by a few declarative user annotations that specify the variables and code on which dynamic...

The Benefits and Costs of DyC's Optimizations (2007)

Brian Grant, Markus Mock, Matthal Philipose, Craig Chambers, Susan J. Eggers

DyC selectively dynamically cronpiles progrmns durhg their execution, utilizhg the run-timecmnputed values of variables and data structures to apply optinizations that are based on partial...

1 DyC: An Expressive Annotation-Directed Dynamic Compiler for C (2007)

Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

We present the design of DyC, a dynamic-compilation system for C based on run-time specialization. Directed by a few declarative user annotations that specify the variables and code on which dynamic...

In PEPM'97 Proceedings Annotation-Directed Run-Time Specialization in C (2007)

Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

We present the design of a dynamic compilation system for C. Directed by a few declarative user annotations specifying where and on what dynamic compilation is to take place, a binding time analysis...

A theory of implementationdependent low-level software (extended version). Available at http://www.cs.washington.edu/homes/marius/papers/tpd (2006)

Marius Nita, Dan Grossman, Craig Chambers

Abstract. We present a theory describing implementation-dependent assumptions that a C program might make, such as the size and alignment of data. We define a static analysis to encode such...

Parameterized modules for classes and extensible functions (2006)

Keunwoo Lee, Craig Chambers

Abstract. We present F(Eml), a language that combines classes, extensible functions, symmetric multiple dispatching, and a practical system for parameterized modules. Parameterized modules permit...

Automated Soundness Proofs for Dataflow Analyses and Transformations Via Local Rules (2005)

Sorin Lerner, Todd Millstein, Erika Rice, Craig Chambers

We present Rhodium, a new language for writing compiler optimizations that can be automatically proved sound. Unlike our previous work on Cobalt, Rhodium expresses optimizations using explicit...

Automated Soundness Proofs for Dataflow Analyses and Transformations Via Local Rules (2005)

Sorin Lerner, Todd Millstein, Erika Rice, Craig Chambers

We present Rhodium, a new language for writing compiler optimizations that can be automatically proved sound. Unlike our previous work on Cobalt, Rhodium expresses optimizations using explicit...

Approved for the Major Department (2005)

Sean Mcdirmid, Matthew Flatt, Gary Lindstrom, Craig Chambers, Gail Murphy, Martin Berzins, ...

has been read by each member of the following supervisory committee and by majority vote has been found to be satisfactory.

Automatic Staged Compilation (2005)

Matthai Philipose, Matthai Philipose, Craig Chambers, Daniel Grossman, Matthai Philipose

This is to certify that I have examined this copy of a doctoral dissertation by

MultiJava: Design rationale, compiler implementation, and applications (2004)

Curtis Clifton, Todd Millstein, Gary T. Leavens, Craig Chambers

MultiJava is a conservative extension of the Java programming language that adds symmetric multiple dispatch and open classes. Among other benefits, multiple dispatch provides a solution to the...

Ownership Domains: Separating Aliasing Policy from Mechanism (2004)

Jonathan Aldrich, Craig Chambers

Abstract. Ownership types promise to provide a practical mechanism for enforcing stronger encapsulation by controlling aliasing in objectoriented languages. However, previous ownership type proposals...

Chairs of Supervisory Committee: (2003)

Craig Chambers, Craig Chambers, David Notkin, David Notkin, Alan Borning, Jonathan Aldrich, ...

This is to certify that I have examined this copy of a doctoral dissertation by

Comprehensive synchronization elimination for Java (2003)

Jonathan Aldrich, Emin Gün Sirer, Craig Chambers, Susan J. Eggers

In this paper, we describe three novel analyses for eliminating unnecessary synchronization that remove over 70 % of dynamic synchronization operations on the majority of our 15 benchmarks and...

Language Support for Connector Abstractions (2003)

Jonathan Aldrich, Vibha Sazawal, Craig Chambers, David Notkin

Abstract. Software connectors are increasingly recognized as an important consideration in the design and implementation of object-oriented software systems. Connectors can be used to communicate...

Reconciling Software Extensibility with Modular Program Reasoning (2003)

Todd David Millstein, Todd David Millstein, Craig Chambers, Gaetano Borriello, Craig Chambers, David Notkin

Reading Committee: Date: and that any and all revisions required by the final examining committee have been made.

Automatically proving the correctness of compiler optimizations (2003)

Sorin Lerner, Todd Millstein, Craig Chambers

We describe a technique for automatically proving compiler optimizations sound, meaning that their transformations are always semantics-preserving. We first present a domain-specific language, called...

Automatically proving the correctness of compiler optimizations (2003)

Sorin Lerner, Todd Millstein, Craig Chambers

We describe a technique for automatically proving compiler optimizations sound, meaning that their transformations are always semantics-preserving. We first present a domain-specific language, called...

Comprehensive synchronization elimination for Java (2003)

Jonathan Aldrich, Emin Gün Sirer, Craig Chambers, Susan J. Eggers

In this paper, we describe three novel analyses for eliminating unnecessary synchronization that remove over 70 % of dynamic synchronization operations on the majority of our 15 benchmarks and...

Language Support for Connector Abstractions (2003)

Jonathan Aldrich, Vibha Sazawal, Craig Chambers, David Notkin

Abstract. Software connectors are increasingly recognized as an important consideration in the design and implementation of object-oriented software systems. Connectors can be used to communicate...

Comprehensive synchronization elimination for Java (2003)

Jonathan Aldrich, Emin Gn Sirer, Craig Chambers, Susan J. Eggers

In this paper, we describe three novel analyses for eliminating unnecessary synchronization that remove over 70 % of dynamic synchronization operations on the majority of our 15 benchmarks and...

Alias annotations for program understanding (2002)

Jonathan Aldrich, Valentin Kostadinov, Craig Chambers

One of the primary challenges in building and evolving large object-oriented systems is dealing with aliasing between objects. Unexpected aliasing can lead to broken invariants, mistaken assumptions,...

Architectural Reasoning in ArchJava (2002)

Jonathan Aldrich, Craig Chambers

Software architecture is a crucial part of the specification of component-based systems. Reasoning about software architecture can aid design, program understanding, and formal analysis. However,...

ArchJava: Connecting Software Architecture to Implementation (2002)

Jonathan Aldrich, Craig Chambers, David Notkin

Software architecture describes the structure of a system, enabling more effective design, program understanding, and formal analysis. However, existing approaches decouple implementation code from...

Alias annotations for program understanding (2002)

Jonathan Aldrich, Valentin Kostadinov, Craig Chambers

One of the primary challenges in building and evolving large object-oriented systems is understanding aliasing between objects. Unexpected aliasing can lead to broken invariants, mistaken...

Modular typechecking for hierarchically extensible datatypes and functions (2002)

Todd Millstein, Colin Bleckner, Craig Chambers

One promising approach for adding object-oriented (OO) facilities to functional languages like ML is to generalize the existing datatype and function constructs to be hierarchical and extensible, so...

Modular typechecking for hierarchically extensible datatypes and functions (2002)

Todd Millstein, Colin Bleckner, Craig Chambers

One promising approach for adding object-oriented (OO) facilities to functional languages like ML is to generalize the existing datatype and function constructs to be hierarchical and extensible, so...

doi:10.1006/inco.2002.3103 Modular Statically Typed Multimethods (2002)

Todd Millstein, Craig Chambers

Multimethods offer several well-known advantages over the single dispatching of conventional object-oriented languages, including a simple solution to the binary method problem, a natural...

Architectural Reasoning in ArchJava (2002)

Jonathan Aldrich, Craig Chambers, David Notkin

Software architecture describes the structure of a system, enabling more effective design, program understanding, and formal analysis. However, existing approaches decouple implementation code from...

Alias annotations for program understanding (2002)

Jonathan Aldrich, Valentin Kostadinov, Craig Chambers

Building and evolving a large software system is challenging in part because it is difficult to understand the system’s architecture: how the system breaks down into parts, and how those parts...

Architecture-Centric Programming for Adaptive Systems (2002)

Jonathan Aldrich, Vibha Sazawal, Craig Chambers, David Notkin

Ubiquitous computing applications have the potential to transform our everyday experience with computers. However, these applications also pose new and demanding software engineering challenges, as...

Alias annotations for program understanding (2002)

Jonathan Aldrich, Valentin Kostadinov, Craig Chambers

One of the primary challenges in building and evolving large object-oriented systems is understanding aliasing between objects. Unexpected aliasing can lead to broken invariants, mistaken...

Architecture-Centric Programming for Adaptive Systems (2002)

Jonathan Aldrich, Vibha Sazawal, Craig Chambers, David Notkin

Ubiquitous computing services are a fast-growing and challenging class of self-healing systems that must adapt to constant failures and environmental changes. Writing robust ubiquitous computing code...

Architectural Reasoning in ArchJava (2002)

Jonathan Aldrich, Craig Chambers, David Notkin

Abstract. Software architecture describes the structure of a system, enabling more effective design, program understanding, and formal analysis. However, existing approaches decouple implementation...

Program Slicing Using Dynamic Points-to Data (2002)

Darren C. Atkinson, Markus Mock, Craig Chambers, Susan J. Eggers

Program slicing is a potentially beneficial analysis for aiding program understanding. However, slices of even small programs are often too large to be generally useful. Imprecise pointer analyses...

Program Slicing Using Dynamic Points-to Data (2002)

Darren C. Atkinson, Markus Mock, Craig Chambers, Susan J. Eggers

Program slicing is a potentially beneficial analysis for aiding program understanding. However, slices of even small programs are often too large to be generally useful. Imprecise pointer analyses...

Modular Statically Typed Multimethods (2002)

Todd Millstein, Craig Chambers

Multimethods offer several well-known advantages over the single dispatching of conventional object-oriented languages, including a simple solution to the "binary method" problem, a natural...

Composing dataflow analyses and transformations (2002)

Sorin Lerner, David Grove, Craig Chambers

Dataflow analyses can have mutually beneficial interactions. Previous efforts to exploit these interactions have either (1) iteratively performed each individual analysis until no further...

Improving Program Slicing with Dynamic Points-To Data (2002)

Markus Mock Science, Markus Mock, Darren C. Atkinson, Craig Chambers, Susan J. Eggers

understanding. However, slices of even small programs are often too large to be generally useful. Imprecise pointer analyses have been suggested as one cause of this problem. In this paper, we use...

Composing dataflow analyses and transformations (2002)

Sorin Lerner, David Grove, Craig Chambers

Dataflow analyses can have mutually beneficial interactions. Previous efforts to exploit these interactions have either (1) iteratively performed each individual analysis until no further...

Dynamic points-to sets: A comparison with static analyses and potential applications in program understanding and optimization (2001)

Markus Mock, Manuvir Das, Craig Chambers, Susan J. Eggers

In this paper, we compare the behavior of pointers in C programs, as approximated by static pointer analysis algorithms, with the actual behavior of pointers when these programs are run. In order to...

Dynamic points-to sets: A comparison with static analyses and potential applications in program understanding and optimization (2001)

Markus Mock, Markus Mock, Manuvir Das, Manuvir Das, Craig Chambers, Craig Chambers, ...

In this paper, we compare the behavior of pointers in C programs, as approximated by static pointer analysis algorithms, with the actual behavior of pointers when these programs are run. In order to...

Component-Oriented Programming in ArchJava (2001)

Jonathan Aldrich, Craig Chambers, David Notkin

Component-oriented programming supports constructing software systems by composing independent components into a software architecture. However, existing approaches decouple implementation code from...

Abstract (2001)

Lawrence Snyder, Craig Chambers, E Christopher Lewis, E Christopher Lewis, E Christopher Lewis, E Christopher Lewis

This is to certify that I have examined this copy of a doctoral dissertation by

Generalized Aliasing as a Basis for Program Analysis Tools (2001)

Robert Callahan November, Frank Pfenning, Craig Chambers

Tools for automatic program analysis promise to improve programmer productivity by searching and summarizing large bodies of code. However, the phenomenon of aliasing --- different names being used...

Abstract Achieving Robust Performance in Parallel Programming Languages (2001)

E Christopher Lewis, E Christopher Lewis, E Christopher Lewis, Craig Chambers, Burton Smith, E Christopher Lewis

and have found that it is complete and satisfactory in all respects, and that any and all revisions required by the final examining committee have been made.

A framework for call graph construction algorithms (2001)

David Grove, Craig Chambers

A large number of call graph construction algorithms for object-oriented and functional languages have been proposed, each embodying different tradeoffs between analysis cost and call graph...

Date (2000)

Michael D. Ernst, Michael D. Ernst, Craig Chambers, Pedro M. Domingos, William G. Griswold, David Notkin, ...

This is to certify that I have examined this copy of a doctoral dissertation by

The benefits and costs of DyC’s run-time optimizations (2000)

Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

DyC selectively dynamically compiles programs during their execution, utilizing the run-timecomputed values of variables and data structures to apply optimizations that are based on partial...

Calpa: a tool for automating selective dynamic compilation (2000)

Markus Mock, Craig Chambers, Susan J. Eggers

Selective dynamic compilation systems, typically driven by annotations that identify run-time constants, can achieve significant program speedups. However, manually inserting annotations is a tedious...

An Assessment of Call Graph Construction Algorithms (2000)

David Grove, Craig Chambers

A large number of call graph construction algorithms for object-oriented and functional languages have been proposed, each embodying different tradeoffs between analysis cost and call graph...

MultiJava: Modular Open Classes and Symmetric Multiple Dispatch for Java (2000)

Curtis Clifton, Gary T. Leavens, Craig Chambers, Todd Millstein

We present MultiJava, a backward-compatible extension to Java supporting open classes and symmetric multiple dispatch. Open classes allow one to add to the set of methods that an existing class...

Abstract (2000)

Michael D. Ernst, Michael D. Ernst, David Notkin, Craig Chambers, Pedro M. Domingos, William G. Griswold, ...

This is to certify that I have examined this copy of a doctoral dissertation by

DyC: An Expressive Annotation-Directed Dynamic Compiler for C (2000)

Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

We present the design of DyC, a dynamic-compilation system for C based on run-time specialization. Directed by a few declarative user annotations that specify the variables and code on which dynamic...

MultiJava: Modular symmetric multiple dispatch and extensible classes for Java (2000)

Copyright Curtis Clifton, Craig Chambers, Craig Chambers, Todd Millstein, Todd Millstein, Curtis Clifton, ...

Languages] Language Classifications — object-oriented languages; D.3.3 [Programming Languages] Language Constructs and Features — abstract data types, classes and objects, control structures,...

Static Analyses for Eliminating Unnecessary Synchronization from Java Programs (1999)

Jonathan Aldrich, Craig Chambers, Emin Gun Sirer, Susan Eggers

Abstract. This paper presents and evaluates a set of analyses designed to reduce synchronization overhead in Java programs. Monitor-based synchronization in Java often causes significant overhead,...

Dependence analysis for java (1999)

Craig Chambers, Igor Pechtchanski, Vivek Sarkar, Mauricio J. Serrano, Harini Srinivasan

Abstract. We describe a novel approach to performing data dependence analysis for Java in the presence of Java's "non-traditional " language features such as exceptions,...

Modular Statically Typed Multimethods (1999)

Todd Millstein, Craig Chambers

Multimethods offer several well-known advantages over the single dispatching of conventional object-oriented languages, including a simple solution to the "binary method " problem,...

Efficient Multiple and Predicate Dispatching (1999)

Craig Chambers, Weimin Chen

The speed of message dispatching is an important issue in the overall performance of object-oriented programs. We have developed an algorithm for constructing efficient dispatch functions that...

Modular Statically Typed Multimethods (1999)

Todd Millstein And, Todd Millstein, Craig Chambers, S [#]o

× GFMethodTypes × LocalTypeStore m Î Modules = ModTypeEnv × ModTypeStore cnc Î Concrete = Const* abs Î Abstract = Const* isa Î Isa = (Const × ConstType)* gfms Î GFMethodTypes = (Const ×...

Static Analyses for Eliminating Unnecessary Synchronization from Java Programs (1999)

Jonathan Aldrich, Craig Chambers, Emin Gün Sirer, Emin Gun Sirer, Susan Eggers

. This paper presents and evaluates a set of analyses designed to reduce synchronization overhead in Java programs. Monitor-based synchronization in Java often causes significant overhead, accounting...

Static Analyses for Eliminating Unnecessary Synchronization from Java Programs (1999)

Jonathan Aldrich Craig, Craig Chambers, Emin Gun Sirer, Susan Eggers

. This paper presents and evaluates a set of analyses designed to reduce synchronization overhead in Java programs. Monitor-based synchronization in Java often causes significant overhead, accounting...

Modular Statically Typed Multimethods (1999)

Todd Millstein, Todd Millstein, Craig Chambers, Craig Chambers

Multimethods offer several well-known advantages over the single dispatching of conventional object-oriented languages, including a simple solution to the "binary method" problem and a form...

Modular Statically Typed Multimethods (1999)

Todd Millstein, Craig Chambers

Abstract. Multimethods offer several well-known advantages over the single dispatching of conventional object-oriented languages, including a simple solution to the “binary method ” problem,...

Static analyses for eliminating unnecessary synchronizations from Java programs (1999)

Jonathan Aldrich, Craig Chambers, Emin Gun Sirer, Susan Eggers

Abstract. This paper presents and evaluates a set of analyses designed to reduce synchronization overhead in Java programs. Monitor-based synchronization in Java often causes significant overhead,...

SPIN - An Extensible Microkernel for Application-Specific Operating System Services. (1998)

Bershad, Brian N., McNamee, Dylan, Chambers, Craig, Eggers, Susan, Sirer, Emin G.

Application domains, such as multimedia, databases, and parallel computing, require operating system services with high performance and high functionality. Existing operating systems provide fixed...

Predicate Dispatching: A Unified Theory of Dispatch (1998)

Michael Ernst, Craig Kaplan, Craig Chambers

www.cs.washington.edu/research/projects/cecil/ Abstract. Predicate dispatching generalizes previous method dispatch mechanisms by permitting arbitrary predicates to control method applicability and...

Fast interprocedural class analysis (1998)

Greg Defouw, Greg Defouw, David Grove, David Grove, Craig Chambers, Craig Chambers

Previous algorithms for interprocedural control flow analysis of higher-order and/or object-oriented languages have been described that perform propagation or constraint satisfaction and take O(N 3)...

Fast Interprocedural Class Analysis (1998)

Greg Defouw, David Grove, Craig Chambers

Previous algorithms for interprocedural control flow analysis of higher-order and/or object-oriented languages have been described that perform propagation or constraint satisfaction and take O(N 3 )...

DyC: An Expressive Annotation-Directed Dynamic Compiler for C (1998)

Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

We present the design of DyC, a dynamic-compilation system for C based on run-time specialization. Directed by a few declarative user annotations that specify the variables and code on which dynamic...

Constraint-Based Polymorphism in Cecil (1998)

Vassily Litvinov, Craig Chambers

We are developing a static type system for object-oriented languages that strives to guarantee statically and completely the absence of certain large classes of run-time errors, to enable polymorphic...

Predicate Dispatching: A Unified Theory of Dispatch (1998)

Michael Ernst, Craig Kaplan, Craig Chambers

. Predicate dispatching generalizes previous method dispatch mechanisms by permitting arbitrary predicates to control method applicability and by using logical implication between predicates as the...

Constraint-Based Polymorphism in Cecil (1998)

Vassily Litvinov, Craig Chambers

We are developing a static type system for object-oriented languages that strives to guarantee statically and completely the absence of certain large classes of run-time errors, to enable polymorphic...

Efficient Predicate Dispatching (1998)

Craig Chambers, Weimin Chen

The speed of method dispatching is an important issue in the overall performance of object-oriented programs. We have developed an algorithm for constructing efficient dispatch functions for the...

BeCecil, A core object-oriented language with block structure and multimethods: Semantics and typing (1997)

Craig Chambers, Gary T. Leavens

We present and analyze the semantics and static type system for BeCecil, a theoretical (core) language with multimethods. BeCecil is a simple and orthogonal version of object-oriented languages like...

Fast Interprocedural Class Analysis (1997)

Greg Defouw, Greg Defouw, David Grove, David Grove, Craig Chambers, Craig Chambers

Previous algorithms for interprocedural control flow analysis of higher-order and/or object-oriented languages have been described that perform propagation or constraint satisfaction and take O(N 3 )...

BeCecil, a Core Object-Oriented Language with Block Structure and Multimethods: Semantics and Typing (1997)

Craig Chambers, Gary T. Leavens

We present and analyze the semantics and static type system for BeCecil, a theoretical (core) language with multimethods. BeCecil is a simple and orthogonal version of object-oriented languages like...

Frameworks for intra- and interprocedural dataflow analysis (1996)

Craig Chambers, Craig Chambers, Jeffrey Dean, Jeffrey Dean, David Grove, David Grove

Because dataflow analyses are difficult to implement from scratch, reusable dataflow analysis frameworks have been developed which provide generic support facilities for managing propagation of...

Abstract Expressive, Efficient Instance Variables (1996)

Jeffrey Dean, David Grove, Craig Chambers, Vassily Litvinov

The decoupling of clients of abstractions from the implementations of those abstractions is a key benefit of objectoriented programming. However, many object-oriented languages provide instance...

Whole-program optimization of object-oriented languages (1996)

Craig Chambers, Jeffrey Dean, David Grove, Craig Chambers, Jeffrey Dean, David Grove

We describe Vortex, an optimizing compiler intended to produce high-quality code for programs written in a heavily-object-oriented style. To achieve this end, Vortex includes a number of intra- and...

Synergies between object-oriented programming language design and implementation research. Invited talk at ISOTAS conference (1996)

Craig Chambers

By pursuing language design and language implementation research in parallel, interactions between the two research areas can be exploited to make faster, better progress in both. We report on our...

Automatic dynamic compilation support for event dispatching in extensible systems (1996)

Craig Chambers, Susan J. Eggers, Joel Ausl, Matthai Philipose, Markus Mock, Przemyslaw Pardyak

This paper describes extensions to an automatic dynamic compilation framework to support optimized event dispatching in the SPIN extensible operating system. 1

Whole-Program Optimization of Object-Oriented Languages (1996)

Craig Chambers, Craig Chambers, Jeffrey Dean, Jeffrey Dean, David Grove, David Grove

We describe Vortex, an optimizing compiler intended to produce high-quality code for programs written in a heavily-object-oriented style. To achieve this end, Vortex includes a number of intra- and...

Frameworks for Intra- and Interprocedural Dataflow Analysis (1996)

Craig Chambers, Jeffrey Dean, David Grove, David Grove

Because dataflow analyses are difficult to implement from scratch, reusable dataflow analysis frameworks have been developed which provide generic support facilities for managing propagation of...

BeCecil, A Core Object-Oriented Language with Block Structure and Multimethods: Semantics and Typing (1996)

Craig Chambers, Craig Chambers, Gary T. Leavens, Gary T. Leavens

We present and analyze the semantics and static type system for BeCecil, a theoretical (core) language with multimethods. BeCecil is a simple and orthogonal version of object-oriented languages like...

Vortex: An Optimizing Compiler for Object-Oriented Languages (1996)

Jeffrey Dean, Greg Defouw, David Grove, Vassily Litvinov, Craig Chambers

Previously, techniques such as class hierarchy analysis and profile-guided receiver class prediction have been demonstrated to greatly improve the performance of applications written in pure...

Fast, Effective Dynamic Compilation (1996)

Joel Auslander, Matthai Philipose, Craig Chambers, Susan J. Eggers, Brian N. Bershad

Dynamic compilation enables optimizations based on the values of invariant data computed at run-time. Using the values of these runtime constants, a dynamic compiler can eliminate their memory loads,...

The Cecil Language, Specification and Rationale - Version 2.0 (1996)

Craig Chambers

Cecil is a purely object-oriented language intended to support rapid construction of high-quality, extensible software. Cecil combines multi-methods with a simple classless object model, a kind of...

Whole-program optimization of object-oriented languages (1996)

Craig Chambers, Craig Chambers, Jeffrey Dean, Jeffrey Dean, David Grove, David Grove

We describe Vortex, an optimizing compiler intended to produce high-quality code for programs written in a heavily-object-oriented style. To achieve this end, Vortex includes a number of intra- and...

Vortex: An Optimizing Compiler for Object-Oriented Languages (1996)

Jeffrey Dean, Greg Defouw, David Grove, Vassily Litvinov, Craig Chambers

Previously, techniques such as class hierarchy analysis and profile-guided receiver class prediction have been demonstrated to greatly improve the performance of applications written in pure...

Automatic dynamic compilation support for event dispatching in extensible systems (1996)

Craig Chambers, Susan J. Eggers, Joel Ausl, Matthai Philipose, Markus Mock, Przemyslaw Pardyak

This paper describes extensions to an automatic dynamic compilation framework to support optimized event dispatching in the SPIN extensible operating system. 1

Optimization of Object-Oriented Programs using Static Class Hierarchy Analysis (1995)

Jeffrey Dean, David Grove, Craig Chambers

Abstract. Optimizing compilers for object-oriented languages apply static class analysis and other techniques to try to deduce precise information about the possible classes of the receivers of...

Extensibility, safety and performance in the SPIN operating system (1995)

Brian N. Bershad, Stefan Savage, Przemys Pardyak, Emin Gun Sirer, Marc E. Fiuczynski, David Becker, ...

This paper describes the motivation, architecture and performance of SPIN, an extensible operating system. SPIN provides an extension infrastructure, together with a core set of extensible services,...

Extensibility, safety and performance in the SPIN operating system (1995)

Brian N. Bershad, Stefan Savage, Przemys Pardyak, Emin Gun Sirer, Marc E. Fiuczynski, David Becker, ...

This paper describes the motivation, architecture and performance of SPIN, an extensible operating system. SPIN provides an extension infrastructure, together with a core set of extensible services,...

Optimization of Object-Oriented Programs using Static Class Hierarchy Analysis (1995)

Jeffrey Dean, David Grove, Craig Chambers

Abstract. Optimizing compilers for object-oriented languages apply static class analysis and other techniques to try to deduce precise information about the possible classes of the receivers of...

Extensibility, safety and performance in the SPIN operating system (1995)

Brian N. Bershad, Stefan Savage, Emin Gun Sirer, Marc E. Fiuczynski, David Becker, Craig Chambers, ...

This paper describes the motivation, architecture and performance of SPIN, an extensible operating system. SPIN provides an extension infrastructure, together with a core set of extensible services,...

Extensibility, safety and performance in the SPIN operating system (1995)

Brian N. Bershad, Stefan Savage, Emin Gun Sirer, Marc E. Fiuczynski, David Becker, Craig Chambers, ...

This paper describes the motivation, architecture and performance of SPIN, an extensible operating system. SPIN provides an extension infrastructure, together with a core set of extensible services,...

The Cecil Language Specification and Rationale: Version 2.0 (1995)

Craig Chambers

ii Cecil is a purely object-oriented language intended to support rapid construction of high-quality, extensible software. Cecil combines multi-methods with a simple classless object model, a kind of...

The Cecil Language - Specification and Rationale - Version 3.0 (1995)

Craig Chambers, The Cecil Group

Cecil is a purely object-oriented language intended to support rapid construction of high-quality, extensible software. Cecil combines multi-methods with a simple classless object model, a kind of...

The Cecil Language (1995)

Specification And Rationale, Craig Chambers

Cecil is a purely object-oriented language intended to support rapid construction of high-quality, extensible software. Cecil combines multi-methods with a simple classless object model, a kind of...

Typechecking and Modules for Multi-Methods (1995)

Craig Chambers, Gary T. Leavens

Two major obstacles hindering the wider acceptance of multi-methods are concerns over the lack of encapsulation and modularity and the absence of static typechecking in existing multi-method-based...

Profile-Guided Receiver Class Prediction (1995)

David Grove, Jeffrey Dean, Charles Garrett, Craig Chambers

The use of dynamically-dispatched procedure calls is a key mechanism for writing extensible and flexible code in object-oriented languages. Unfortunately, dynamic dispatching imposes a runtime...

Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis (1995)

Jeffrey Dean, David Grove, Craig Chambers

. Optimizing compilers for object-oriented languages apply static class analysis and other techniques to try to deduce precise information about the possible classes of the receivers of messages; if...

A Framework for Selective Recompilation in the Presence of Complex Intermodule Dependencies (1995)

Craig Chambers, Jeffrey Dean, David Grove

Compilers and other programming environment tools derive information from the source code of programs; derived information includes compiled code, interprocedural summary information, and call graph...

Selective Specialization for Object-Oriented Languages (1995)

Jeffrey Dean, Craig Chambers, David Grove

Dynamic dispatching is a major source of run-time overhead in object-oriented languages, due both to the direct cost of method lookup and to the indirect effect of preventing other optimizations. To...

Extensibility, Safety and Performance in the SPIN Operating System (1995)

Brian N. Bershad, Stefan Savage, Przemyslaw Pardyak, Emin Gün Sirer, Emin Gun Sirer, Marc Fiuczynski, ...

This paper describes the motivation, architecture and performance of SPIN, an extensible operating system. SPIN provides an extension infrastructure together with a core set of extensible services...

Automatic Dynamic Compilation Support for Event Dispatching in Extensible Systems (1995)

Craig Chambers, Susan J. Eggers, Joel Ausl, Matthai Philipose, Markus Mock, Przemyslaw Pardyak

This paper describes extensions to an automatic dynamic compilation framework to support optimized event dispatching in the SPIN extensible operating system. 1 Introduction In several extensible...

Automatic Dynamic Compilation Support for Event Dispatching in Extensible Systems (1995)

Craig Chambers, Susan J. Eggers, Joel Ausl, Matthai Philipose, Markus Mock, Przemyslaw Pardyak

This paper describes extensions to an automatic dynamic compilation framework to support optimized event dispatching in the SPIN extensible operating system. 1 Introduction In several extensible...

Overview of the Cecil/Vortex Project (1995)

Craig Chambers

method dispatching and static function overloading by allowing method lookup to depend on the dynamic type of any subset of a message's arguments. Consequently, multi-methods are a promising...

Typechecking and Modules for Multi-Methods (1995)

Gary T. Leavens, Craig Chambers, Craig Chambers

Two major obstacles hindering the wider acceptance of multi-methods are concerns over the lack of encapsulation and modularity and the absence of static typechecking in existing multi-method-based...

Profile-Guided Receiver Class Prediction (1995)

David Grove, Jeffrey Dean, Charles Garrett, Craig Chambers

The use of dynamically-dispatched procedure calls is a key mechanism for writing extensible and flexible code in object-oriented languages. Unfortunately, dynamic dispatching imposes a runtime...

A framework for selective recompilation in the presence of complex intermodule dependencies (1995)

Craig Chambers, Jeffrey Dean, David Grove

Compilers and other programming environment tools derive information from the source code of programs; derived information includes compiled code, interprocedural summary information, and call graph...

Optimization of Object-Oriented Programs using Static Class Hierarchy Analysis (1995)

Jeffrey Dean, David Grove, Craig Chambers

Optimizing compilers for object-oriented languages apply static class analysis and other techniques to try to deduce precise information about the possible classes of the receivers of messages; if...

Typechecking and Modules for Multi-Methods (1995)

Craig Chambers, Craig Chambers, Gary T. Leavens, Gary T. Leavens

Two major obstacles hindering the wider acceptance of multi-methods are concerns over the lack of encapsulation and modularity and the absence of static typechecking in existing multi-method-based...

Extensibility, safety and performance in the SPIN operating system (1995)

Brian N. Bershad, Stefan Savage, Przemys Pardyak, Emin Gun Sirer, Marc E. Fiuczynski, David Becker, ...

This paper describes the motivation, architecture and performance of SPIN, an extensible operating system. SPIN provides an extension infrastructure, together with a core set of extensible services,...

Identifying Profitable Specialization in Object-Oriented Languages (1994)

Jeffrey Dean, Craig Chambers, David Grove

The performance of object-oriented languages can be greatly improved if methods can be specialized for particular classes of arguments. Such specialization can provide the compiler with enough class...

SPIN - an extensible microkernel for application-specific operating system services (1994)

Brian N. Bershad, Craig Chambers, Susan Eggers, Chris Maeda, Dylan Mcnamee, Przemyslaw Pardyak, ...

Application domains such as multimedia, databases, and parallel computing, require operating system services with high performance and high functionality. Existing operating systems provide fixed...

Identifying Profitable Specialization in Object-Oriented Languages (1994)

Jeffrey Dean, Craig Chambers, David Grove

The performance of object-oriented languages can be greatly improved if methods can be specialized for particular classes of arguments. Such specialization can provide the compiler with enough class...

Measurement and Application of Dynamic Receiver Class Distributions (1994)

Charles D. Garrett, Charles D. Garrett, Jeffrey Dean, Jeffrey Dean, David Grove, David Grove, ...

Dynamic binding slows down object-oriented programs. Dynamic dispatch mechanisms which work well where all receiver classes are equally likely are too pessimistic because at most call sites one...

Identifying Profitable Specialization in Object-Oriented Languages (1994)

Jeffrey Dean, Craig Chambers, David Grove

The performance of object-oriented languages can be greatly improved if methods can be specialized for particular classes of arguments. Such specialization can provide the compiler with enough class...

Identifying Profitable Specialization in Object-Oriented Languages (1994)

Jeffrey Dean Craig, Jeffrey Dean, Craig Chambers, Craig Chambers, David Grove, David Grove

The performance of object-oriented languages can be greatly improved if methods can be specialized for particular classes of arguments. Such specialization can provide the compiler with enough class...

SPIN - An Extensible Microkernel for Application-specific Operating System Services (1994)

Brian N. Bershad, Craig Chambers, Susan Eggers, Chris Maeda, Dylan McNamee, Przemyslaw Pardyak, ...

Application domains such as multimedia, databases, and parallel computing, require operating system services with high performance and high functionality. Existing operating systems provide fixed...

Type Checking and Modules for Multi-Methods (1994)

Craig Chambers, Gary T. Leavens

Two major obstacles hindering the wider acceptance of multi-methods are concerns over the lack of encapsulation and modularity and the absence of static typechecking in existing multi-method-based...

Identifying Profitable Specialization in Object-Oriented Languages (1994)

Jeffrey Dean Craig, Craig Chambers, David Grove

The performance of object-oriented languages can be greatly improved if methods can be specialized for particular classes of arguments. Such specialization can provide the compiler with enough class...

Identifying Profitable Specialization in Object-Oriented Languages (1994)

Jeffrey Dean Craig, Craig Chambers, David Grove

The performance of object-oriented languages can be greatly improved if methods can be specialized for particular classes of arguments. Such specialization can provide the compiler with enough class...

Type Checking and Modules for Multi-Methods (1994)

Chambers Leavens, Gary T. Leavens, Craig Chambers, Craig Chambers

ing with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Publications...

Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis (1994)

Jeffrey Dean, Jeffrey Dean, David Grove, David Grove, Craig Chambers, Craig Chambers

Optimizing compilers for object-oriented languages apply static class analysis and other techniques to try to deduce precise information about the possible classes of the receivers of messages

SPIN - An Extensible Microkernel for Application-specific Operating System Services (1994)

Brian N. Bershad, Craig Chambers, Susan Eggers, Chris Maeda, Dylan McNamee, Przemyslaw Pardyak, ...

Application domains, such as multimedia, databases, and parallel computing, require operating system services with high performance and high functionality. Existing operating systems provide fixed...

-- An Extensible Microkernel for Application-specific Operating System Services (1994)

Brian Bershad, Craig Chambers, Susan Eggers, Chris Maeda, Dylan Mcnamee, Stefan Savage, ...

Application domains such as multimedia, databases, and parallel computing, require operating system services with high performance and high functionality. Existing operating systems provide fixed...

Towards Safe Modular Extensible Objects (1994)

Chambers Leavens, Cecil Language, Gary T. Leavens, Gary T. Leavens, Craig Chambers, Craig Chambers, ...

We discuss the module system of the Cecil language, which has a flexible means of customizing views of objects. Multi-methods with invocation based on static scoping, a module system, and extension...

Towards Better Inlining Decisions Using Inlining Trials (1994)

Jeffrey Dean, Craig Chambers

Inlining trials are a general mechanism for making better automatic decisions about whether a routine is profitable to inline. Unlike standard source-level inlining heuristics, an inlining trial...

A Framework for Selective Recompilation in the Presence of Complex Intermodule Dependencies (1994)

Craig Chambers, Craig Chambers, Jeffrey Dean, Jeffrey Dean, David Grove, David Grove

Compilers and other programming environment tools derive information from the source code of programs; derived information includes compiled code, interprocedural summary information, and call graph...

Typechecking and Modules for Multi-Methods (1994)

Chambers Leavens, Gary T. Leavens, Craig Chambers, Craig Chambers

Two major obstacles preventing the wider acceptance of multi-methods are concerns over the lack of encapsulation and modularity and the lack of static typechecking in existing multi-method-based...

Abstract SPIN –AnExtensibleMicrokernel for Application-specific Operating System Services (1994)

Brian N. Bershad, Craig Chambers, Susan Eggers, Chris Maeda, Dylan Mcnamee, Przemysław Pardyak, ...

Application domains, such as multimedia, databases, and parallel computing, require operating system services with high performance and high functionality. Existing operating systems provide fixed...

Abstract A Framework for Selective Recompilation in the Presence of Complex Intermodule Dependencies (1994)

Craig Chambers, Jeffrey Dean, David Grove, Craig Chambers, Jeffrey Dean, David Grove

Compilers and other programming environment tools derive information from the source code of programs; derived information includes compiled code, interprocedural summary information, and call graph...

SPIN - An extensible microkernel for application-specific operating system services (1994)

Brian N. Bershad, Craig Chambers, Susan Eggers, Chris Maeda, Dylan Mcnamee, Przemys Pardyak, ...

Application domains such asmultimedia, databases, and parallel computing, require operating system services with high performance and high functionality. Existing operating systems provide xed...

SPIN - An extensible microkernel for application-specific operating system services (1994)

Brian N. Bershad, Craig Chambers, Susan Eggers, Chris Maeda, Dylan Mcnamee, Przemys Pardyak, ...

Application domains such asmultimedia, databases, and parallel computing, require operating system services with high performance and high functionality. Existing operating systems provide xed...

Training compilers to make better inlining decisions (1993)

Jeffrey Dean, Jeffrey Dean, Craig Chambers, Craig Chambers

Optimizing implementations for object-oriented languages rely on aggressive inlining to achieve good performance. Sometimes the compiler is over-eager in its quest for good performance, however, and...

Predicate Classes (1993)

Craig Chambers

. Predicate classes are a new linguistic construct designed to complement normal classes in objectoriented languages. Like a normal class, a predicate class has a set of superclasses, methods, and...

The Cecil Language, Specification and Rationale (1993)

Craig Chambers

Cecil is a new purely object-oriented language intended to support rapid construction of highquality, extensible software. Cecil combines multi-methods with a classless object model, object-based...

Object-Oriented Multi-Methods in Cecil (1992)

Craig Chambers

Multiple dispatching provides increased expressive power over single dispatching by guiding method lookup using the values of all arguments instead of only the receiver. However, existing languages...

Object-Oriented Multi-Methods in Cecil (1992)

Craig Chambers

Multiple dispatching provides increased expressive power over single dispatching by guiding method lookup using the values of all arguments instead of only the receiver. However, existing languages...

Object-Oriented Multi-Methods in Cecil (1992)

Craig Chambers

Multiple dispatching provides increased expressive power over single dispatching by guiding method lookup using the values of all arguments instead of only the receiver. However, existing languages...

Object-Oriented Multi-Methods in Cecil (1992)

Craig Chambers

Multiple dispatching provides increased expressive power over single dispatching by guiding method lookup using the values of all arguments instead of only the receiver. However, existing languages...

Debugging Optimized Code with Dynamic Deoptimization (1992)

Urs Hölzle, Craig Chambers, David Ungar

: SELF's debugging system provides complete source-level debugging (expected behavior) with globally optimized code. It shields the debugger from optimizations performed by the compiler by...

Optimizing dynamically-typed object-oriented languages with polymorphic inline caches (1991)

Craig Chambers, David Ungar, Elgin Lee

Abstract. We have developed and implemented techniques that double the performance of dynamically-typed object-oriented languages. Our SELF implementation runs twice as fast as the fastest Smalltalk...

Optimizing dynamically-typed object-oriented languages with polymorphic inline caches (1991)

Urs Hölzle, Craig Chambers, David Ungar

Abstract: Polymorphic inline caches (PICs) provide a new way to reduce the overhead of polymorphic message sends by extending inline caches to include more than one cached lookup result per call...

Organizing programs without classes (1991)

David Ungar, Craig Chambers, Bay-wei Chang

Abstract. All organizational functions carried out by classes can be accomplished in a simple and natural way by object inheritance in classless languages, with no need for special mechanisms. A...

Parents are shared parts of objects: Inheritance and encapsulation (1991)

Craig Chambers, David Ungar, Bay-wei Chang

Abstract. The design of inheritance and encapsulation in SELF, an object-oriented language based on prototypes, results from understanding that inheritance allows parents to be shared parts of their...

Parents are shared parts of objects: Inheritance and encapsulation (1991)

Craig Chambers, David Ungar, Bay-wei Chang

Abstract. The design of inheritance and encapsulation in SELF, an object-oriented language based on prototypes, results from understanding that inheritance allows parents to be shared parts of their...

Parents are shared parts of objects: Inheritance and encapsulation (1991)

Craig Chambers, David Ungar, Bay-wei Chang

Abstract. The design of inheritance and encapsulation in SELF, an object-oriented language based on prototypes, results from understanding that inheritance allows parents to be shared parts of their...

Organizing programs without classes (1991)

David Ungar, Craig Chambers, Bay-wei Chang

Abstract. All organizational functions carried out by classes can be accomplished in a simple and natural way by object inheritance in classless languages, with no need for special mechanisms. A...

Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic Inline Caches (1991)

Urs Hölzle, Craig Chambers, David Ungar

: Polymorphic inline caches (PICs) provide a new way to reduce the overhead of polymorphic message sends by extending inline caches to include more than one cached lookup result per call site. For a...

Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches (1991)

Urs Hölzle, Craig Chambers, David Ungar

: Polymorphic inline caches (PICs) provide a new way to reduce the overhead of polymorphic message sends by extending inline caches to include more than one cached lookup result per call site. For a...

Making Pure Object-Oriented Languages Practical (1991)

Craig Chambers, David Ungar

In the past, object-oriented language designers and programmers have been forced to choose between pure message passing and performance. Last year, our SELF system achieved close to half the speed of...

Organizing Programs Without Classes (1991)

David Ungar, Craig Chambers, Bay-wei Chang

. All organizational functions carried out by classes can be accomplished in a simple and natural way by object inheritance in classless languages, with no need for special mechanisms. A single...

An Efficient Implementation of Self, a Dynamically-Typed Object-Oriented Language Based on Prototypes (1991)

Craig Chambers, David Ungar, Elgin Lee

. We have developed and implemented techniques that double the performance of dynamically-typed object-oriented languages. Our SELF implementation runs twice as fast as the fastest Smalltalk...

Organizing Programs Without Classes (1991)

David Ungar, Craig Chambers, Bay-Wei Chang, Urs Hölzle

. All organizational functions carried out by classes can be accomplished in a simple and natural way by object inheritance in classless languages, with no need for special mechanisms. A single...

Iterative type analysis and extended message splitting: Optimizing dynamically-typed object-oriented programs (1990)

Craig Chambers, David Ungar

Abstract. Object-oriented languages have suffered from poor performance caused by frequent and slow dynamically-bound procedure calls. The best way to speed up a procedure call is to compile it out,...

Iterative Type Analysis and Extended Message Splitting: Optimizing Dynamically-Typed Object-Oriented Programs (1990)

Craig Chambers, David Ungar

. Object-oriented languages have suffered from poor performance caused by frequent and slow dynamically-bound procedure calls. The best way to speed up a procedure call is to compile it out, but...

Customization: optimizing compiler technology for SELF, a dynamically-typed object-oriented programming language (1989)

Craig Chambers, David Ungar

Dynamically-typed object-oriented languages please programmers, but their lack of static type information penalizes performance. Our new implementation tech-niques extract static type information...

DyC: An Expressive Annotation-Directed Dynamic Compiler for C

Brian Grant Markus, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

We present the design of DyC, a dynamic-compilation system for C based on run-time specialization. Directed by a few declarative user annotations that specify the variables and code on which dynamic...

DyC: An Expressive Annotation-Directed Dynamic Compiler for C

Brian Grant Markus, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

We present the design of DyC, a dynamic-compilation system for C based on run-time specialization. Directed by a few declarative user annotations that specify the variables and code on which dynamic...

Annotation-Directed Run-Time Specialization in C

Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

We present the design of a dynamic compilation system for C. Directed by a few declarative user annotations specifying where and on what dynamic compilation is to take place, a binding time analysis...

Annotation-Directed Run-Time Specialization in C

Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

We present the design of a dynamic compilation system for C. Directed by a few declarative user annotations specifying where and on what dynamic compilation is to take place, a binding time analysis...