Copyright © 2007 Elsevier Ltd All rights reserved.
Received 30 November 2006;
References and further reading may be available for this article. To view references and further reading you must purchase this article.
Abstract
Dynamic, unanticipated adaptation of running systems is of interest in a variety of situations, ranging from functional upgrades to on-the-fly debugging or monitoring of critical applications. In this paper we study a particular form of computational reflection, called unanticipated partial behavioral reflection (UPBR), which is particularly well suited for unanticipated adaptation of real-world systems. Our proposal combines the dynamicity of unanticipated reflection, i.e., reflection that does not require preparation of the code of any sort, and the selectivity and efficiency of partial behavioral reflection (PBR). First, we propose unanticipated partial behavioral reflection which enables the developer to precisely select the required reifications, to flexibly engineer the metalevel and to introduce the metabehavior dynamically. Second, we present a system supporting unanticipated partial behavioral reflection in Squeak Smalltalk, called GEPPETTO, and illustrate its use with a concrete example of a web application. Benchmarks validate the applicability of our proposal as an extension to the standard reflective abilities of Smalltalk.
Keywords: Reflection; Metaprogramming; Metaobject protocol; Smalltalk
Article Outline
- 1. Introduction
- 2. Running example
- 3. Related work and motivation
- 3.1. Reflection in Smalltalk-80
- 3.2. Extended behavioral reflection in Smalltalk: MetaclassTalk
- 3.3. Unanticipated behavioral reflection: Iguana/J
- 3.4. Partial behavioral reflection: Reflex
- 3.5. Motivation
- 4. Unanticipated partial behavioral reflection for Smalltalk
- 4.1. Partial behavioral reflection in a nutshell
- 4.2. Bytecode manipulation for unanticipated behavioral reflection in Smalltalk
- 5. Solving the running example with Geppetto
- 5.1. Profiling MOP
- 5.2. Caching MOP
- 5.3. Persistence MOP
- 6. Geppetto design
- 7. Implementation issues
- 7.1. Adapting method binaries
- 7.2. Structure of a hook
- 7.3. Hook composition
- 8. Evaluation
- 9. Future work
- 10. Conclusion
- Acknowledgements
- References






E-mail Article
Add to my Quick Links

Cited By in Scopus (1)







