ABSTRACT
The Smalltalk-80* programming language includes dynamic storage allocation, full upward funargs, and universally polymorphic procedures; the Smalltalk-80 programming system features interactive execution with incremental compilation, and implementation portability. These features of modern programming systems are among the most difficult to implement efficiently, even individually. A new implementation of the Smalltalk-80 system, hosted on a small microprocessor-based computer, achieves high performance while retaining complete (object code) compatibility with existing implementations. This paper discusses the most significant optimization techniques developed over the course of the project, many of which are applicable to other languages. The key idea is to represent certain runtime state (both code and data) in more than one form, and to convert between forms when needed.
- 1.Ammann, U., Nori. Jensen, K., Nageli, H., "The Pascal (P) Compiler Implementation Notes." Institut Fur Informatik, Eidgenossische Technische Hochschule, Zurich, 1975.Google Scholar
- 2.Ammann, U., "On code generation in a Pascal compiler." Software Practice and Experience v7 #3. June/July 1977, pp. 391-423.Google Scholar
- 3.Bell. J. R., "Threaded Code." Communications of the ACM, v16 (1973) pp. 370-372. Google ScholarDigital Library
- 4.Deutsch, L. P., Bobrow, D. G., "An efficient, incremental, real-time garbage collector." Communications of the ACM, October 1976. Google ScholarDigital Library
- 5.Goldberg, A., Robson. D., "Smalltalk-80: The Language and its Implementation." Addison-Wesley, Reading, MA, 1983. Google ScholarDigital Library
- 6.Goldberg. A., "Smalltalk-80: The Interactive Programming Environment." Addison-Wesley, Reading, MA, 1984. Google ScholarDigital Library
- 7.Krasner, Glenn. Ed., "Smalltalk-80: Bits of History, Words of Advice." Addison-Wesley, Reading, MA, 1983. Google ScholarDigital Library
- 8.Lampson, B. W., Ed., "The Dorado: A High-Performance Personal Computer." Xerox PARC Report CSL-81-1, Palo Alto, CA, January 1981.Google Scholar
- 9.Mitchell, J. G., "The Design and Construction of Flexible and Efficient Interactive Programming Systems," Ph.D. dissertation. 1971, NTIS AD 712-721, in Outstanding Dissertations in the Computer Sciences, Garland Publishing, New York (1978). Google ScholarDigital Library
- 10.Moon D., Ed., Maclisp Manual pp. 3-75 to 3-77, MIT AI Laboratory Technical Report (1973).Google Scholar
- 11.Moore, C. H., "FORTH: a New Way to Program a Computer." Astronomy and Astrophysics Supplement, # 15 (1974) pp 497-511.Google Scholar
- 12.Patterson, D., Ed., "Smalltalk on a RISC: Architectural Investigations (Proceedings of CS 292R)." University of California, Berkeley, April 1983.Google Scholar
- 13.Perkins, D. R., Sites, R. I., "Machine independent Pascal code optimization." ACM SIGPLAN Notices v14 #8 (August 1979) pp. 201-207. Google ScholarDigital Library
- 14.Pittman, T.J., "A Practical Optimizer: Zero-Address to Multi-Address Code." M.S. thesis, University of California, Santa Cruz, June 1980.Google Scholar
- 15.Rau. B. R., "Levels of Representation of Programs and the Architecture of Universal Host Machines." Proceedings of Micro-11, Asilomar, CA. November 1978. Google ScholarDigital Library
- 16.Richards, M., "The portability of the BCPL. compiler." Software, Practice and Experience vl (1971) pp. 135-146.Google Scholar
- 17.Software Concepts Group, special issue on Smalltalk. BYTE Magazine, volume 6, number 8, August 1981.Google Scholar
- 18.Masinter, L. M., Ed., "Interlisp Reference Manual," Xerox Special Information Systems, Pasadena, CA, 1983.Google Scholar
- 19.Zellweger, P. T., "Machine-Independent Optimization in SOPAIPILLA." The S-1 Project 1979 Annual Report (Chapter 8), Lawrence Livermore Laboratory (1979).Google Scholar
Index Terms
- Efficient implementation of the smalltalk-80 system
Recommendations
A third generation Smalltalk-80 implementation
OOPSLA '86: Conference proceedings on Object-oriented programming systems, languages and applicationsA new, high performance Smalltalk-80™ implementation is described which builds directly upon two previous implementation efforts. This implementation supports a large object space while retaining compatibility with previous Smalltalk-80™ images. The ...
Programming with explicit metaclasses in Smalltalk-80
OOPSLA '89: Conference proceedings on Object-oriented programming systems, languages and applicationsThis paper discusses the introduction of explicit metaclasses á la ObjVlisp into the Smalltalk-80 language. The rigidity of Smalltalk metaclass architecture motivated this work. We decided to implement the ObjVlisp model into the standard Smalltalk-80 ...
Comments