Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to main content

Eliot Moss

WE PRESENT THE INTEGRATION OF TRELLIS/OWL, A HEAP-BASED, OBJECT ORIENTED LANGUAGE, WITH MNEME, A PERSISTENT OBJECT MANAGER. IN THIS DOCUMENT WE DISCUSS GENERAL ISSUES OF SMOOTH INTEGRATION OF HEAP-BASED LANGUAGES WITH PERSISTENT OBJECT... more
WE PRESENT THE INTEGRATION OF TRELLIS/OWL, A HEAP-BASED, OBJECT ORIENTED LANGUAGE, WITH MNEME, A PERSISTENT OBJECT MANAGER. IN THIS DOCUMENT WE DISCUSS GENERAL ISSUES OF SMOOTH INTEGRATION OF HEAP-BASED LANGUAGES WITH PERSISTENT OBJECT MANAGERS, AND EVENTUALLY WE FOCUS ON PROBLEMS PARTICULAR TO TRELLIS/OWL, SUCH AS CHANGES IN THE LANGUAGE FROM THE USER''S POINT OF VIEW, HEAP MANAGEMENT, MODIFICATIONS IN THE COMPILER AND RUN-TIME SYSTEM, AND INTERFACE WITH MNEME.
This report documents the program and the outcomes of Dagstuhl Seminar 15021 "Concurrent computing in the many-core era". This seminar is a successor to Dagstuhl Seminars 08241 "Transactional memory: From implementation to... more
This report documents the program and the outcomes of Dagstuhl Seminar 15021 "Concurrent computing in the many-core era". This seminar is a successor to Dagstuhl Seminars 08241 "Transactional memory: From implementation to application" and 12161 "Abstractions for scalable multicore computing", respectively held in June 2008 and in April 2012. The current seminar built on the previous seminars by notably (1) broadening the scope to concurrency beyond transactional memory and shared-memory multicores abstractions, (2) focusing on the new challenges and potential uses of emerging hardware support for synchronization extensions, and (3) considering the increasing complexity resulting from the explosion in heterogeneity.
Online experiments are an integral part of the design and evaluation of software infrastructure at Internet firms. To handle the growing scale and complexity of these experiments, firms have developed software frameworks for their design... more
Online experiments are an integral part of the design and evaluation of software infrastructure at Internet firms. To handle the growing scale and complexity of these experiments, firms have developed software frameworks for their design and deployment. Ensuring that the results of experiments in these frameworks are trustworthy---referred to as internal validity ---can be difficult. Currently, verifying internal validity requires manual inspection by someone with substantial expertise in experimental design. We present the first approach for checking the internal validity of online experiments statically, that is, from code alone. We identify well-known problems that arise in experimental design and causal inference, which can take on unusual forms when expressed as computer programs: failures of randomization and treatment assignment, and causal sufficiency errors. Our analyses target PLANOUT, a popular framework that features a domain-specific language (DSL) to specify and run co...
Online experiments have become a ubiquitous aspect of design and engineering processes within Internet firms. As the scale of experiments has grown, so has the complexity of their design and implementation. In response, firms have... more
Online experiments have become a ubiquitous aspect of design and engineering processes within Internet firms. As the scale of experiments has grown, so has the complexity of their design and implementation. In response, firms have developed software frameworks for designing and deploying online experiments. Ensuring that experiments in these frameworks are correctly designed and that their results are trustworthy---referred to as internal validity---can be difficult. Currently, verifying internal validity requires manual inspection by someone with substantial expertise in experimental design. We present the first approach for statically checking the internal validity of online experiments. Our checks are based on well-known problems that arise in experimental design and causal inference. Our analyses target PlanOut, a widely deployed, open-source experimentation framework that uses a domain-specific language to specify and run complex experiments. We have built a tool called PlanAly...
Full precision in garbage collection implies retaining only those heap allocated objects that will actually be used in the future. Since full precision is not computable in general, garbage collectors use safe (i.e., conservative)... more
Full precision in garbage collection implies retaining only those heap allocated objects that will actually be used in the future. Since full precision is not computable in general, garbage collectors use safe (i.e., conservative) approximations such as reachability from a set of root references. Ambiguous roots collectors (commonly called "conservative") can be overly conservative because they overestimate the root set, and thereby retain unexpectedly large amounts of garbage. We consider two more precise collection schemes for Java virtual machines (JVMs). One uses a type analysis to obtain a type-precise root set (only those variables that contain references); the other adds a live variable analysis to reduce the root set to only the live reference variables. Even with the Java programming language's strong typing, it turns out that the JVM specification has a feature that makes type-precise root sets difficult to compute. We explain the problem and ways in which it...
We investigate issues that arise when attempting to integrate object-oriented languages and database features. We provide criteria for database/language support in the context of design applications, and consider the advantages of... more
We investigate issues that arise when attempting to integrate object-oriented languages and database features. We provide criteria for database/language support in the context of design applications, and consider the advantages of integration over more traditional database systems. We then discuss the design of Mneme, a system that narrows the gap between object-oriented databases and programming languages, both traditional and object-oriented.
III. EXAMPLE: PHONE DIRECTORY We now offer an example that uses two levels of transaction nesting (closed on top of open) and a concurrent update scenario to illustrate further our proposed style of use for open nesting (ie, abstract... more
III. EXAMPLE: PHONE DIRECTORY We now offer an example that uses two levels of transaction nesting (closed on top of open) and a concurrent update scenario to illustrate further our proposed style of use for open nesting (ie, abstract serializability: serializability in terms of the ...
... Descriptive Note : Master's thesis,. Corporate Author : MASSACHUSETTS INST OF TECH CAMBRIDGE LAB FOR COMPUTER SCIENCE. Personal Author(s) : Moss,John Eliot Blakeslee. Report Date : FEB 1978. Pagination or Media Count : 157. ...
An oldest-first generational garbage collector leaves intact the most recently allocated object space, and instead collects the remaining, older objects. Because these older objects have had more time to die, an oldest-first copying... more
An oldest-first generational garbage collector leaves intact the most recently allocated object space, and instead collects the remaining, older objects. Because these older objects have had more time to die, an oldest-first copying collector will generally do less copying than a traditional generational collector (which operates youngest-first), a non-generational collector, and even Clinger and Hansen''s non-predictive collector (which does wait a little while for objects to die). To explore the performance of oldest-first collection, we present a mathematical analysis, simulation results for a variety of mature object lifetime distributions, and simulation results for mature object lifetimes drawn from real programs and for real mature object traces. These results demonstrate that oldest-first collection does perform significantly better than youngest-first or non-generational collection for mature objects. Although some previous work pointed in this direction, it provided very little evidence of our conclusion. We also find that oldest-first collection works well for lifetime distributions that satisfy the generational hypothesis, which suggests we should also consider oldest-first collection in the young object space.
The Mneme project is an investigation of techniques for integrating programming language and database features to provide better support for cooperative, information-intensive tasks such as computer-aided software engineering. The project... more
The Mneme project is an investigation of techniques for integrating programming language and database features to provide better support for cooperative, information-intensive tasks such as computer-aided software engineering. The project strategy is to implement efficient, distributed, persistent programming languages. We report here on the Mneme persistent object store, a fundamental component of the project, discussing its design and initial prototype. Mneme storesobjectsin a simple and general format, preserving object identity and object interrelationships. Specific goals for the store include portability, extensibility (especially with respect to object management policies), and performance. The model of memory that the store aims at is a single, cooperatively-shared heap, distributed across a collection of networked computers. The initial prototype is intended mainly to explore performance issues and to support object-oriented persistent programming languages. We include perf...
It is popular and appealing to design and construct a persist ent programming language by extending the semantics of a non-persistent language appropriately and then modifying its compiler and run-time system to implement the extended... more
It is popular and appealing to design and construct a persist ent programming language by extending the semantics of a non-persistent language appropriately and then modifying its compiler and run-time system to implement the extended semantics. We describe here how to achieve this, and furthermore, how to sup- port query optimization, which is typically neglected in persistent programming language implementations, through judicious exploitation of reflection. Significantl y, we avoid modifying the structure of the source language or its compiler in any way, and minimize and localize the modifications to the run-time system. We work in the context of the Java programming language, and conclude that the key features required in our approach are: a typed intermediate representation (as provided by Java class files), reflection supporting code inspection (an extension to the standard Java virtual machine), and dynamic loading of code generated at run-time. We also require virtual machi...
Research Interests:
To use modern hardware effectively, compilers need extensive control-flow information. Unfortunately, the frequent method invocations in object-oriented languages obscure control flow. In this paper, we describe and evaluate a range of... more
To use modern hardware effectively, compilers need extensive control-flow information. Unfortunately, the frequent method invocations in object-oriented languages obscure control flow. In this paper, we describe and evaluate a range of analysis techniques to convert method invocations into direct calls for statically-typed object-oriented languages and thus improve control-flow information in object-oriented languages. We present simple algorithms for type hierarchy analysis, aggregate analysis, and interprocedural and intraprocedural type propagation . These algorithms are also fast, O (|procedures| * ∑ p procedure n p * v p ) worst case time (linear in practice) for our slowest analysis, where n p is the size of procedure p and v p is the number of variables in procedure p , and are thus practical for use in a compiler. When they fail, we introduce cause analysis to reveal the source of imprecision and suggest where more powerful algorithms may be warranted. We show that our simpl...

And 190 more