Computer
SOAR: Smalltalk without bytecodes
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Efficient implementation of the smalltalk-80 system
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Machine-independent PASCAL code optimization
SIGPLAN '79 Proceedings of the 1979 SIGPLAN symposium on Compiler construction
Architecture of SOAR: Smalltalk on a RISC
ISCA '84 Proceedings of the 11th annual international symposium on Computer architecture
Matching Language and Hardware for Parallel Computation in the Linda Machine
IEEE Transactions on Computers - Special issue on architectural support for programming languages and operating systems
The architecture of a Linda coprocessor
ISCA '88 Proceedings of the 15th Annual International Symposium on Computer architecture
CLOStrophobia: its etiology and treatment
ACM SIGPLAN OOPS Messenger
Polymorphism considered harmful
ACM SIGPLAN Notices
Polymorphism considered harmful
ACM SIGSOFT Software Engineering Notes
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Hi-index | 0.01 |
The Smalltalk On A RISC project at U. C. Berkeley proves that a high-level object-oriented language can attain high performance on a modified reduced instruction set architecture. The single most important optimization is the removal of a layer of interpretation, compiling the bytecoded virtual machine instructions into low-level, register-based, hardware instructions. This paper describes the compiler and how it was affected by SOAR architectural features. The compiler generates code of reasonable density and speed. Because of Smalltalk-80's semantics, relatively few optimizations are possible, but hardware and software mechanisms at runtime offset these limitations. Register allocation for an architecture with register windows comprises the major task of the compiler. Performance analysis suggests that SOAR is not simple enough; several hardware features could be efficiently replaced by instruction sequences constructed by the compiler.