6 research outputs found
A Partial Read Barrier for Efficient Support of Live Object-oriented Programming
International audienceLive programming, originally introduced by Smalltalk and Lisp, and now gaining popularity in contemporary systems such as Swift, requires on-the-fly support for object schema migration, such that the layout of objects may be changed while the program is at one and the same time being run and developed. In Smalltalk schema migration is supported by two primitives, one that answers a collection of all instances of a class, and one that exchanges the identities of pairs of objects, called the become primitive. Existing instances are collected, copies using the new schema created, state copied from old to new, and the two exchanged with become, effecting the schema migration. Historically the implementation of become has either required an extra level of indirection between an object's address and its body, slowing down slot access, or has required a sweep of all objects, a very slow operation on large heaps. Spur, a new object representation and memory manager for Smalltalk-like languages, has neither of these deficiencies. It uses direct pointers but still provides a fast become operation in large heaps, thanks to forwarding objects that when read conceptually answer another object and a partial read barrier that avoids the cost of explicitly checking for forwarding objects on the vast majority of object accesses
Recommended from our members
A real time garbage collection algorithm
This paper describes a real time garbage collection algorithm. It allocates storage automatically from a heap, and does not require the programmer to give any indication that particular items are no longer useful or accessible. A garbage collection algorithm is considered to be real time if the amount of work to be done can be controlled each time the garbage collector is called. Since objects with short lifetimes account for a large portion of storage use. it is worth optimizing a garbage collector to reclaim storage for these objects more quickly. A reference count scheme in cooperation with compaction for reclaiming storages for young objects, and a linearizing, compacting, copying scheme to collect self-referential structures and reorganize storage for old objects at the users discretion are proposed.Keywords: garbage collection, storage management, real time, virtual memory1989 best estimate for issue date based on available information
A Measurement-Based Study of Memory Usage and Garbage Collection in a Lisp System
Coordinated Science Laboratory was formerly known as Control Systems LaboratoryNASA / NAG 1-613National Science Foundation / MIP-860489
Run-time Support for Distributed Object Sharing in Safe Programming Languages
We present a new run-time system that supports object sharing in a distributed system. The key insight in this system is that a handle-based implementation of such a system enables effcient and transparent sharing of data with both fine-grained and coarse-grained access patterns. In addition, it supports effcient execution of garbage-collected programs. In contrast, conventional distributed shared memory (DSM) systems are limited to providing only one granularity with good performance, and have experienced diffculty in effciently supporting garbage collection. A safe language, in which no pointer arithmetic is allowed, can transparently be compiled into a handle-based system and constitutes its preferred mode of use. A programmer can also directly use a handle-based programming model that avoids pointer arithmetic on the handles, and achieve the same performance but without the programming benefits of a safe programming language. This new run-time system, DOSA (Distributed Object Sharing Architecture), provides a shared object space abstraction rather than a shared address space abstraction. The key to its effciency is the observation that a handle-based distributed implementation permits VM-based access and modification detection without suffering false sharing for fine-grained access patterns. We compare DOSA to TreadMarks, a conventional DSM system that is effcient at handling coarse-grained sharing. The performance of fine-grained applications and garbage-collected applications is considerably better than in TreadMarks. The performance of coarse-grained applications is nearly as good as in TreadMarks. Since the performance of such applications is already good in TreadMarks, we consider this an acceptable performance penalty