skip to main content
research-article

A partial read barrier for efficient support of live object-oriented programming

Published:14 June 2015Publication History
Skip Abstract Section

Abstract

Live 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.

References

  1. H. G. Baker. The Treadmill: Real-time Garbage Collection Without Motion Sickness. SIGPLAN Not., 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. A. P. Black, S. Ducasse, O. Nierstrasz, D. Pollet, D. Cassou, and M. Denker. Pharo by Example. Square Bracket Associates, Kehrsatz, Switzerland, 2009.Google ScholarGoogle Scholar
  3. G. Bracha, P. von der Ahé, V. Bykov, Y. Kashai, W. Maddox, and E. Miranda. Modules As Objects in Newspeak. In European Conference on Object-oriented Programming, ECOOP’10, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. B. Hayes. Ephemerons: A New Finalization Mechanism. In Objectoriented Programming, Systems, Languages, and Applications, OOPSLA ’97, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. U. Hölzle, C. Chambers, and D. Ungar. Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches. In European Conference on Object-Oriented Programming, ECOOP ’91, London, UK, UK, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. U. Hölzle, C. Chambers, and D. Ungar. Debugging Optimized Code with Dynamic Deoptimization. In Programming Language Design and Implementation, PLDI ’92, pages 32–43, New York, NY, USA, 1992. ACM.. IBM Research, Portland State University, Vrije Universiteit Brussel. Project Renaissance: Harness Emergence. URL http: //stefan-marr.de/renaissance/. D. Ingalls, T. Kaehler, J. Maloney, S. Wallace, and A. Kay. Back to the Future: The Story of Squeak, a Practical Smalltalk Written in Itself. In Object-oriented Programming, Systems, Languages, and Applications, OOPSLA ’97, pages 318–326, New York, NY, USA, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. M. Martinez Peck. Application-Level Virtual Memory for Object-Oriented Systems. Theses, Université des Sciences et Technologie de Lille - Lille I, 2012.Google ScholarGoogle Scholar
  8. M. Martinez Peck, N. Bouraqadi, S. Ducasse, L. Fabresse, and M. Denker. Ghost: A Uniform and General-Purpose Proxy Implementation, 2013.Google ScholarGoogle Scholar
  9. J. McCarthy. Recursive functions of symbolic expressions and their computation by machine, part I. CACM, 3(4):184–195, Apr. 1960. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. E. Miranda. Context Management in VisualWorks 5i. In OOPSLA’99 Workshop on Simplicity, Performance and Portability in Virtual Machine Design, Denver, CO, 1999.Google ScholarGoogle Scholar
  11. E. Miranda. Cog Blog: Speeding Up Terf, Squeak, Pharo and Croquet with a fast open-source Smalltalk VM, 2008. URL http://www.mirandabanda.org/cogblog/. M. Sannella, J. Maloney, B. Freeman-Benson, and A. Borning. Multi-way Versus One-way Constraints in User Interfaces: Experience with the DeltaBlue Algorithm. Softw. Pract. Exper., 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. D. Ungar. Generation Scavenging: A Non-Disruptive High Performance Storage Reclamation Algorithm. ACM SIGPLAN Notices, 19(5):157–167, 1984.. D. Ungar, R. Blau, P. Foley, D. Samples, and D. Patterson. Architecture of SOAR: Smalltalk on a RISC. In International Symposium on Computer Architecture, ISCA ’84, 1984. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. VisualWorks. Cincom Smalltalk official website. URL http://www. cincomsmalltalk.com. J. Vraný. Supporting Multiple Languages in Virtual Machines. Theses, Faculty of Information Technologies, Czech Technical University in Prague, 2010.Google ScholarGoogle Scholar
  14. D. Weinreb and D. Moon. The Lisp Machine Manual. SIGART Bull., 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. P. R. Wilson and T. G. Moher. Design of the Opportunistic Garbage Collector. In Proceedings OOPSLA ’89, ACM SIGPLAN Notices, volume 24, pages 23–36, Oct. 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A partial read barrier for efficient support of live object-oriented programming

                  Recommendations

                  Comments

                  Login options

                  Check if you have access through your login credentials or your institution to get full access on this article.

                  Sign in

                  Full Access

                  PDF Format

                  View or Download as a PDF file.

                  PDF

                  eReader

                  View online with eReader.

                  eReader
                  About Cookies On This Site

                  We use cookies to ensure that we give you the best experience on our website.

                  Learn more

                  Got it!