Efficient Implementation of the Smalltalk-80 System

About this paperTiếng Việt中文

This paper is under a licence that does not allow it to be reproduced, so what is here is its front matter and a short abstract. Read it at the publisher's page.

日本語
English

Smalltalk-80システムの効率的な実装

L. Peter Deutsch Xerox PARC, Software Concepts Group

Allan M. Schiffman Fairchild Laboratory for Artificial Intelligence Research

概要

Smalltalk-80*プログラミング言語は動的記憶域割り当て、完全な上向き funarg、および普遍的多相性を持つ手続きを含む。Smalltalk-80プログラミングシステムは、対話的実行、増分コンパイル、および実装の移植性を特徴とする。現代のプログラミングシステムにおけるこれらの機能は、それぞれ単独であっても効率的に実装することが最も困難なものの一つである。小規模なマイクロプロセッサベースのコンピューター上でホストされるSmalltalk-80システムの新しい実装は、既存の実装との完全な(オブジェクトコード)互換性を維持しながら、高い性能を達成している。本論文では、プロジェクトの過程で開発された最も重要な最適化技術について論じる。その多くは他の言語にも適用可能である。中心となる考え方は、特定のランタイム状態(コードとデータの両方)を複数の形式で表現し、必要に応じて形式間で変換することである。

*Smalltalk-80はXerox Corporationの商標である。

Allan M. Schiffman Fairchild Laboratory for Artificial Intelligence Research

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.

*Smalltalk-80 is a trademark of the Xerox Corporation.

This section is missing here.

Background

This section is missing here.

Special Difficulties

This section is missing here.

Implementation Outline

This section is missing here.

Code Translation

This section is missing here.

Performance Issues

This section is missing here.

Dynamic Translation

This section is missing here.

Mapping State at Runtime

This section is missing here.

Multiple Representations of Contexts

This section is missing here.

In-line Caching of Method Addresses

This section is missing here.

Experiments

This section is missing here.

Context Representations

This section is missing here.

In-line Cache and Linked Sends

This section is missing here.

Dynamic Code Translation

This section is missing here.

Conclusions and Related Work

This section is missing here.

Acknowledgments

References

  1. [Ammann 75] Ammann, U., Nori, Jensen, K., Nageli, H., "The Pascal (P) Compiler Implementation Notes." Institut Fur Informatik, Eidgenossische Technische Hochschule, Zurich, 1975.
  2. [Ammann 77] Ammann, U., "On code generation in a Pascal compiler." Software Practice and Experience v7 #3, June/July 1977, pp. 391-423.
  3. [Bell 73] Bell, J. R., "Threaded Code." Communications of the ACM, v16 (1973) pp. 370-372.
  4. [Deutsch & Bobrow 76] Deutsch, L. P., Bobrow, D. G., "An efficient, incremental, real-time garbage collector." Communications of the ACM, October 1976.
  5. [Goldberg 83] Goldberg, A., Robson, D., "Smalltalk-80: The Language and its Implementation." Addison-Wesley, Reading, MA, 1983.
  6. [Goldberg 84] Goldberg, A., "Smalltalk-80: The Interactive Programming Environment." Addison-Wesley, Reading, MA, 1984.
  7. [Krasner 83] Krasner, Glenn, Ed., "Smalltalk-80: Bits of History, Words of Advice." Addison-Wesley, Reading, MA, 1983.
  8. [Lampson 81] Lampson, B. W., Ed., "The Dorado: A High-Performance Personal Computer." Xerox PARC Report CSL-81-1, Palo Alto, CA, January 1981.
  9. [Mitchell 71] 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).
  10. [Moon 73] Moon D., Ed., MacLisp Manual pp. 3-75 to 3-77, MIT AI Laboratory Technical Report (1973).
  11. [Moore 74] Moore, C. H., "FORTH: a New Way to Program a Computer." Astronomy and Astrophysics Supplement, #15 (1974) pp 497-511.
  12. [Patterson 83] Patterson, D., Ed., "Smalltalk on a RISC: Architectural Investigations (Proceedings of CS 292R)." University of California, Berkeley, April 1983.
  13. [Perkins 79] Perkins, D. R., Sites, R. I., "Machine independent Pascal code optimization." ACM SIGPLAN Notices v14 #8 (August 1979) pp. 201-207.
  14. [Pittman 80] Pittman, T.J., "A Practical Optimizer: Zero-Address to Multi-Address Code." M.S. thesis, University of California, Santa Cruz, June 1980.
  15. [Rau 78] Rau, B. R., "Levels of Representation of Programs and the Architecture of Universal Host Machines." Proceedings of Micro-11, Asilomar, CA, November 1978.
  16. [Richards 75] Richards, M., "The portability of the BCPL compiler." Software, Practice and Experience v1 (1971) pp. 135-146.
  17. [SCG 81] Software Concepts Group, special issue on Smalltalk. BYTE Magazine, volume 6, number 8, August 1981.
  18. [XSIS 83] Masinter, L. M., Ed., "Interlisp Reference Manual." Xerox Special Information Systems, Pasadena, CA, 1983.
  19. [Zellweger 79] Zellweger, P. T., "Machine-Independent Optimization in SOPAIPII.LA." The S-1 Project 1979 Annual Report (Chapter 8), Lawrence Livermore Laboratory (1979).

Read off the page by a vision model reading the page images using olmOCR-2-7B-1025-FP8. Translated into 日本語 by gpt-5, against glossary version 6. Translated from the English.

Read off the page by a vision model reading the page images using olmOCR-2-7B-1025-FP8.