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.
References
- 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 Scholar
Digital Library
- 4.Deutsch, L. P., Bobrow, D. G., "An efficient, incremental, real-time garbage collector." Communications of the ACM, October 1976. Google Scholar
Digital Library
- 5.Goldberg, A., Robson. D., "Smalltalk-80: The Language and its Implementation." Addison-Wesley, Reading, MA, 1983. Google Scholar
Digital Library
- 6.Goldberg. A., "Smalltalk-80: The Interactive Programming Environment." Addison-Wesley, Reading, MA, 1984. Google Scholar
Digital Library
- 7.Krasner, Glenn. Ed., "Smalltalk-80: Bits of History, Words of Advice." Addison-Wesley, Reading, MA, 1983. Google Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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




Comments