Background Information


Existing Systems

Various Smalltalk implementations exist in both commercial and free/share-ware form. Most of these systems are not available to us, and those that are available to us are only partially useful to our system. We are using the only freely available system, GNU's mst, as a starting point for our system. We realize that it is not an ideal system to target for our use, but our resources at this time are limited.

ParcPlace VisualWorks & ParcPlace Smalltalk

ParcPlace is the child of Xerox Palo Alto Research Center and (basically) own the rights to Smalltalk-80. VisualWorks is often considered the standard implementation currently used in the marketplace.

Digitalk Smalltalk/V

Digitalk, up until their merger with ParcPlace, was the predominant competitor with ParcPlace. Smalltalk/V, whose class libararies are different than Smalltalk-80's class libaries, is a smaller system intended to be used for smaller in-house projects and in the PC market. [Personally, I've used Smalltalk/V and Digitalk just doesn't cut it-RWD]

GNU's mst

The GNU's mst was written by Steve Byrne. His source has been used as a framework in assisting us what to do and (predominantly) not to do.

IBM's VisualAge

This is IBM's stab into the Smalltalk market. Apparently IBM has seen Smalltalk as their way into the development future, and have put a lot of time and effort into the product.

QKS's SmalltalkAgents

QKS introduced STA into the market recently. It is also a superset of the Smalltalk-80 definition, adding several gramatical constructs, a unified object model, project management, and other features.

Definitions, Acronyms, Abbreviations.

Bytecode

An instruction that the VCPU can execute.

Class

A definition of the state and behavior for a category of things (called objects). From Succeeding with Objects: Description of a set of objects that provide the same services and information. A class is a template for the creation of instances. A class itself may be an object. See also instance.

Compiler

A tool which converts text based source code into class and compiled method objects.

G.C.

Garbage Collector or Garbage Collection. The mechanism or process used to automate memory management.

Inheritance

Much like real life, descendants (subclasses) inherit the attributes and behavior of their ancestors (superclasses). From Succeeding with Objects: A relationship among classes, where one class shares the specification and perhaps the implementation of one or more other classes.

Instance

From Succeeding with Objects: A particular occurrence of a class of objects. A member of a class's set of objects. The term "instance" is often used synonymously with "object" when classes are not considered objects--as in the expression "classes and instances." See also class.

Interpreter

Translates a set of bytecodes into behavior.

Object

An individual member of a class. From Succeeding with Objects: Description of a set of behaviors and information that needed to support the behaviors.

Pointer

A variable that refers to an object in memory.

Primitives

Satori's method implementations built into the virtual machine. All behavior of Satori code is eventually defined by primitives.

Root Pointer

A pointer outside of the garbage collection pool that refers to an object inside the garbage collection pool.

Smart Pointer

An object that acts like a normal pointer but performs additional duties such as validating proper usage.

Static Binding

An optimization performed by the Satori compiler to eliminate the runtime expense caused by method invocation. From Succeeding with Objects: Association of a message name with a specific implementation at code execution time.

Static Type Checking

The process of validating that the typed variables are properly matched with objects of the same type. From Succeeding with Objects: 1. Ensuring that before the system executes, every message sent to an object will be handled by at least one service. 2. Determining the type of a variable, argument, or return value at compile time.

Subclass

From Succeeding with Objects: A class that is a refinement or an extension to one or more other classes (its superclasses). A subclass inherits the specification and possibly the implementation from its superclasses.

Superclass

From Succeeding with Objects: A class that is refined or extended by on or more other classes (its subclasses).

Type-safe

The state of having all variables in a method type-checked.

VCPU

Acronym for Virtual CPU; the Satori Interpreter.

Wrapper

From Succeeding with Objects: A technology used to encapsulate a component (or an entire system, such as a legacy system) so it behaves like an object. The wrapper provides a formal specification of the interface to the wrapped component. Other components can use the wrapped component by sending it messages.

References and annotated bibliography.

NOTE: Most of these references were hastily scoured off the internet. Consequently, the references are in incomplete form. This will be revamped in the next version of documentation.

Smalltalk & Compiler Papers

Auditing-Reg-Alloc.ps

An algorithm for telling when your register allocator makes a mistake.

debugging-opt-code.ps

How a compiler can optimize code and still provide perfect debugging.

RTL-System.ps

An overview of the Register Transfer Language System, a framework for code generation and code optimization.

detailed-RTL-System.ps

Three MS theses that describe the RTL system in detail.

graver-thesis.ps

Justin Graver's Ph.D. thesis on a type system for Smalltalk.

tan-thesis.ps

Jin-Ho Tan's MS thesis on the implementation of the type system.

tree-based-opt.prelim.ps & tree-based-opt.ps

Some proposed modifications to the RTL system.

usingSSA.ps

Experiences using SSA form in the RTL system.

GC Papers

Garbage Collecting Locally

Area Exam, Department of Electrical Engineering and Computer Science, MIT, December 1990.

Replication-Based Incremental Copying Collection

Scott Nettles, James O'Toole, David Pierce, and Nicholas Haines, Proceedings of the International Workshop on Memory Management, Springer Verlag, September 1992.

Garbage Collecting an Object Cache

To appear as MIT LCS Technical Memo TM-485, April 1993.

Concurrent Replicating Garbage Collection

James O'Toole and Scott Nettles, ACM Conference on Lisp and Functional Programming, June 1994

Concurrent Compacting Garbage Collection of a Persistent Heap

James O'Toole, Scott Nettles, and David Gifford, 14th ACM Symposium on Operating Systems Principles, Asheville, North Carolina, December 1993.

Implementing Orthogonal Persistence: A Simple Optimization Based on Replicating Collection

Scott Nettles and James O'Toole, IEEE International Workshop on Object-Orientation in Operating Systems, Asheville, North Carolina, December 1993.

Concurrent Replicating Garbage Collection

James O'Toole and Scott Nettles, to appear as MIT Laboratory of Computer Science TR-570 and Carnegie Mellon University Computer Science TR-93-138, April 1993.

Real-Time Replication-Based Garbage Collection

Scott Nettles and James O'Toole, ACM SIGPLAN Conference on Programming Language Design and Implementation, Albuquerque, New Mexico, June 1993.

Names should mean What, not Where

James O'Toole and David Gifford, ACM 5th European Workshop on Distributed Systems, September 1992.

Misc Books

Goldberg & Robson, Smalltalk-80: The Language

This book is intended for programmers or programming language designers interested in the Smalltalk-80 language and its development environment on a particular kind of hardware system. It assumes that the reader is familiar with at least one programming language and with sequencing of instruction in a computer.

Dunlavey, Building Better Applications: A theory of Efficient Software Development; Alger, Secrets of the C++ Masters; Rumbaugh, OMT There are and will be many others.

People

Scott Daniels

Scott is currently a graduate student at the Oregon Graduate Institute. He acted as a consultant for us while we were working on Satori's garbage collector.