Results 1 - 10
of
16
Program Analysis and Specialization for the C Programming Language
, 1994
"... Software engineers are faced with a dilemma. They want to write general and wellstructured programs that are flexible and easy to maintain. On the other hand, generality has a price: efficiency. A specialized program solving a particular problem is often significantly faster than a general program. ..."
Abstract
-
Cited by 472 (0 self)
- Add to MetaCart
Software engineers are faced with a dilemma. They want to write general and wellstructured programs that are flexible and easy to maintain. On the other hand, generality has a price: efficiency. A specialized program solving a particular problem is often significantly faster than a general program. However, the development of specialized software is time-consuming, and is likely to exceed the production of today’s programmers. New techniques are required to solve this so-called software crisis. Partial evaluation is a program specialization technique that reconciles the benefits of generality with efficiency. This thesis presents an automatic partial evaluator for the Ansi C programming language. The content of this thesis is analysis and transformation of C programs. We develop several analyses that support the transformation of a program into its generating extension. A generating extension is a program that produces specialized programs when executed on parts of the input. The thesis contains the following main results.
Efficient Detection of All Pointer and Array Access Errors
, 1994
"... We present a pointer and array access checking technique that provides complete error coverage through a simple set of program transformations. Our technique, based on an extended safe pointer representation, has a number of novel aspects. Foremost, it is the first technique that detects all spatial ..."
Abstract
-
Cited by 195 (1 self)
- Add to MetaCart
We present a pointer and array access checking technique that provides complete error coverage through a simple set of program transformations. Our technique, based on an extended safe pointer representation, has a number of novel aspects. Foremost, it is the first technique that detects all spatial and temporal access errors. Its use is not limited by the expressiveness of the language; that is, it can be applied successfully to compiled or interpreted languages with subscripted and mutable pointers, local references, and explicit and typeless dynamic storage management, e.g., C. Because it is a source level transformation, it is amenable to both compile- and run-time optimization. Finally, its performance, even without compile-time optimization, is quite good. We implemented a prototype translator for the C language and analyzed the checking overheads of six non-trivial, pointer intensive programs. Execution overheads range from 130 % to 540%; with text and data size overheads typically below 100%.
Adaptable Pointer Swizzling Strategies in Object Bases: Design, Realization, and Quantitative Analysis
, 1993
"... In this paper, different approaches are classified and evaluated for optimizing the access to main-memory resident persistent objects---techniques which are commonly referred to as "pointer swizzling ". To speed up the access along inter-object references, the persistent pointers in the form of uniq ..."
Abstract
-
Cited by 32 (3 self)
- Add to MetaCart
In this paper, different approaches are classified and evaluated for optimizing the access to main-memory resident persistent objects---techniques which are commonly referred to as "pointer swizzling ". To speed up the access along inter-object references, the persistent pointers in the form of unique object identifiers (OIDs) are transformed (swizzled) into main-memory pointers (addresses). Pointer swizzling techniques can be directed into two classes: (1) strategies that allow replacement of swizzled objects from the buffer before the end of an application program and (2) those that outrule the displacement of swizzled objects. Whereas the latter class of pointer swizzling methods has received much attention in recent literature, the first class---i.e., techniques that take "precautions" for the replacement of swizzled objects---has not yet been thoroughly investigated. Four different pointer swizzling techniques allowing object replacement were investigated and contrasted with the p...
PANDA - Supporting Distributed Programming in C++
- Proc. of ECOOP’93, LNCS
, 1993
"... : PANDA is a run-time package based on a very small operating system kernel which supports distributed applications written in C++. It provides powerful abstractions such as very efficient user-level threads, a uniform global address space, object and thread mobility, garbage collection, and persist ..."
Abstract
-
Cited by 23 (1 self)
- Add to MetaCart
: PANDA is a run-time package based on a very small operating system kernel which supports distributed applications written in C++. It provides powerful abstractions such as very efficient user-level threads, a uniform global address space, object and thread mobility, garbage collection, and persistent objects. The paper discusses the design rationales underlying the PANDA system. The fundamental features of PANDA are surveyed, and their implementation in the current prototype environment is outlined. 1. Introduction Systems for parallel and distributed object-oriented programming can be classified into two basic categories. Firstly, there is a variety of programming languages developed especially to serve experimental purposes. Different object models for parallel and distributed programming can be investigated by designing and working with such systems. Some examples of languages in this area are Emerald [Jul el al. 88], Pool [America and van der Linden 90], Sloop [Lucco 87], and Or...
PerDiS: design, implementation, and use of a PERsistent DIstributed Store
, 1998
"... The PerDiS (Persistent Distributed Store) project addresses the issue of providing support for distributed collaborative engineering applications. We describe the design and implementation of the PerDiS platform, and its support for such applications. Collaborative engineering raises system issu ..."
Abstract
-
Cited by 17 (6 self)
- Add to MetaCart
The PerDiS (Persistent Distributed Store) project addresses the issue of providing support for distributed collaborative engineering applications. We describe the design and implementation of the PerDiS platform, and its support for such applications. Collaborative engineering raises system issues related to the sharing of large volumes of ne-grain, complex objects across wide-area networks and administrative boundaries. PerDiS manages all these aspects in a well dened, integrated, and automatic way. Distributed application programming is simplied because it uses the same memory abstraction as in the centralized case. Porting an existing centralized program written in C or C++ is usually a matter of a few, well-isolated changes. We present some performance results from a proof-of-concept platform that runs a number of small, but real, distributed applications on Unix ? This work was supported by Esprit under the PerDiS project (n o 22533), http://www.perdis.esprit.ec...
Implementing References as Chains of Links
- In 1992 Int. Workshop on Object Orientation and Operating Systems
, 1992
"... The goal of this work is to provide uniform transparent access to objects, be they local, remote, persistent, or mobile. In this way, we facilitate distributed programming and persistence management. An object (the target) is accessed through a reference. A reference retains its meaning as it is cop ..."
Abstract
-
Cited by 12 (4 self)
- Add to MetaCart
The goal of this work is to provide uniform transparent access to objects, be they local, remote, persistent, or mobile. In this way, we facilitate distributed programming and persistence management. An object (the target) is accessed through a reference. A reference retains its meaning as it is copied, stored, passed in messages, and as the target migrates. A reference is used to invoke a procedure (or method) of the target object. References support standard single-space targets, as well as fragmented objects [9]. The cost of using a reference to a local object is comparable to the cost of accessing the object through a pointer. In the implementation, a reference is a chain of links. Each link embodies a small piece of functionality. A chain may be composed of an arbitrary number of links.
Lessons Learned from Implementing the CORBA Persistent Object Service
, 1996
"... In this paper, the authors share their experiences gathered during the design and implementation of the CORBA Persistent Object Service. There are two problems related to a design and implementation of the Persistence Service: first, OMG intentionally leaves the functionality core of the Persiste ..."
Abstract
-
Cited by 11 (5 self)
- Add to MetaCart
In this paper, the authors share their experiences gathered during the design and implementation of the CORBA Persistent Object Service. There are two problems related to a design and implementation of the Persistence Service: first, OMG intentionally leaves the functionality core of the Persistence Service unspecified; second, OMG encourages reuse of other Object Services without being specific enough in this respect. The paper identifies the key design issues implied both by the intentional lack of OMG specification and the limits of the implementation environment characteristics. At the same time, the paper discusses the benefits and drawbacks of reusing other Object Services, particularly the Relationship and Externalization Services, to support the Persistence Service.
A Class Library Approach To Concurrent Object-Oriented Programming With Applications To VLSI CAD
, 1994
"... PARALLEL ARCHITECTURE : : : : : : : : : : : : : : : : 56 4.1 Thread Management : : : : : : : : : : : : : : : : : : : : : : : : : : : : 56 4.2 Resource Management : : : : : : : : : : : : : : : : : : : : : : : : : : : 64 4.3 Communication Management : : : : : : : : : : : : : : : : : : : : : : : 69 4. ..."
Abstract
-
Cited by 5 (3 self)
- Add to MetaCart
PARALLEL ARCHITECTURE : : : : : : : : : : : : : : : : 56 4.1 Thread Management : : : : : : : : : : : : : : : : : : : : : : : : : : : : 56 4.2 Resource Management : : : : : : : : : : : : : : : : : : : : : : : : : : : 64 4.3 Communication Management : : : : : : : : : : : : : : : : : : : : : : : 69 4.4 Configuration Management : : : : : : : : : : : : : : : : : : : : : : : : 72 4.5 Performance : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 76 4.6 Evaluation : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 78 4.7 Other Models and Implementations : : : : : : : : : : : : : : : : : : : : vii 5 META-PROGRAMMABILITY : : : : : : : : : : : : : : : : : : : : : : : : 85 5.1 Local Meta-programmability : : : : : : : : : : : : : : : : : : : : : : : : 85 5.2 Global Meta-programmability : : : : : : : : : : : : : : : : : : : : : : : 95 5.3 Evaluation : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 99 5.4 Other Models and Implementations : : : : : : ...
Portable Run-Time Type Description for Conventional Compilers
- In ISMM [50
, 1996
"... Many useful programming language extensions and system support libraries require knowledge of the locations of fields within objects at run time. Examples include orthogonal persistent object stores, precise garbage collectors, data structure picklers, and parameter marshaling schemes. For clean and ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
Many useful programming language extensions and system support libraries require knowledge of the locations of fields within objects at run time. Examples include orthogonal persistent object stores, precise garbage collectors, data structure picklers, and parameter marshaling schemes. For clean and efficient implementation as libraries, these systems require run-time knowledge of in-memory layouts of data objects, which is unavailable in most traditionally compiled and linked programming languages, such as C, C++, and Ada. Even the recently standardized run-time type identification (RTTI) feature in C++ is insufficient, because it describes only language-level features of the type hierarchy and not the compiler-dependent object layout decisions. We present a facility for run-time type description, or RTTD, which extracts low-level layout information from debugging information generated by conventional compilers, and makes it available to user programs. We believe this to be the simple...
Transactions for Amadeus
, 1993
"... Record provides the basis for recovery of objects. For example, the derived class RecoveryRecord provides state based recovery of user-defined atomic objects and the class ServerGroupRecord provides a means of forwarding abort messages to servers involved in an action. Instances of AbstractRecord ar ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
Record provides the basis for recovery of objects. For example, the derived class RecoveryRecord provides state based recovery of user-defined atomic objects and the class ServerGroupRecord provides a means of forwarding abort messages to servers involved in an action. Instances of AbstractRecord are maintained by the AtomicAction class so that the appropriate actions can be performed at commit and abort time. Two Unix processes are required for recovery processing: the recovery manager and the recovery daemon. The recovery daemon receives the outcomes of incomplete 2PC protocol executions. The recovery manager restarts incomplete commit protocol executions and waits for the outcome before recovering objects. Objects are temporarily made inaccessible until the outcome is known. Work has been done as part of the Arjuna project on coloured actions [39]. Coloured actions have slightly different properties and locking rules than normal atomic actions. By statically assigning different c...

