Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
The design and evaluation of a high performance Smalltalk system
The design and evaluation of a high performance Smalltalk system
Objective ML: a simple object-oriented extension of ML
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
IEEE Std 1178-1990, IEEE Standard for the Scheme Programming Language
IEEE Std 1178-1990, IEEE Standard for the Scheme Programming Language
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
Dynamically Extensible Objects in a Class-Based Language
TOOLS '97 Proceedings of the Tools-23: Technology of Object-Oriented Languages and Systems
Runtime Support for Type-Safe Dynamic Java Classes
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
Fickle: Dynamic Object Re-classification
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
An Effective Translation of Fickle into Java
ICTCS '01 Proceedings of the 7th Italian Conference on Theoretical Computer Science
Run-time phenomena in dynamic software updating: causes and effects
Proceedings of the 12th International Workshop on Principles of Software Evolution and the 7th annual ERCIM Workshop on Software Evolution
Loosely-separated “sister” namespaces in java
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
A hybrid class- and prototype-based object model to support language-neutral structural intercession
Information and Software Technology
Hi-index | 0.02 |
This paper introduces the concepts of wide classes and widening as extensions to the object model of class-based languages such as Java and Smalltalk. Widening allows an object to be temporarily widened, that is transformed into an instance of a subclass, a wide class, and, later on, to be shrunk, that is reshaped to its original class. Wide classes share the main properties of plain classes: they have a name, a superclass, they may be instantiated, they have an associated class predicate and an associated type that may be used to override function definitions. Widening is also useful to implement transient data storage for long-lasting computations. In particular, it helps reducing software data retention. This phenomenon arises when the actual data structures used in a program fail to reflect time-dependent properties of values and can cause excessive memory consumption during the execution. Wide classes may be implemented for any dynamically-typed class-based programming language with very few modifications to the existing run-time system. We describe the simple and efficient implementation strategy used in the Bigloo runtime system.