Text preview for : 19780531_Getting_Started.pdf part of xerox 19780531 Getting Started xerox notetaker memos 19780531_Getting_Started.pdf



Back to : 19780531_Getting_Started. | Home

(' XEROX
I)ALO ALTO RESEARCH CENTER
Learning Research Group
fvlay 31. 1978

From: Dan IngaUs

To: NoteTaker Smalltalk Interest

Subject: Getting Started_.,

File on: MAXC

Now is the Time
The NoteTaker hardware schedule is very short. and writing a new SmaHtalk from scratch
will take a while. Many components of the Notetaker Smalltalk system can be coded at this
point in time (BitBLT. byte fetch. text primitives). Of those that remain, most (ROT
format, storage management, method lookup) depend on design decisions which can be
argued on both sides, and which may as well be decided by fiat. In order to get us going,
this memo proposes some arbitrary decisions. and outlines the tasks involved in transfering
our current Smalltalk system to the NoteTaker hardware~ I feel that the small machine
environment wiii be sufficientiy different that we s.hould concentrate on getting something
up, and then look at performance improvements after the dust settles. In the places where
we already have good ideas. we will make sure the initial implementation admits
improvement readily.
Some Arbitrary Decisions
( The simplest of the ROT formats is one which uses a two-word entry for each object. in the
form which the 8086 can load with its doubleword LDS (Load Data Segment) instruction.
This provides high speed access to data. an" makes enough room in the ROT for reference
counts and garbage collector bits. It is limited to 16K objects at this level of simplicity. but
that is no problem for 128K. and may even be adequate for a 256K NoteTaker.
The simplest storage reclamation scheme is a fun sweep garbage collector. and, by
augmenting it with an incremental sceme (see good or better performance than with our current reference cOtlnting. If not. then we can
go back to reference counting for the incremental stuff - a possibility which must be'
provided for in our coding style.
Our current access to methods via MessageDicts is hard to beat for compactness and
simplicity. Its efficiency can be greatly enhanced with a cache, and such an enhancement
will be essential if multiple superclassing gets heavily used. I propose that we implement
this scheme with cache; the latter being separately debuggable..
Given the restricted range of object pointers, we can get some extra simplicity and speed out
of using 1/2 the pointer space for IS-bit integers. For Largelntegers. we can go with Daveis
current implementation for a while, later writing 8086 code to take advantage of the 8086's
hardware support for extended arithmetic. IncidentallYt it would be nice if we could borrow
an existing 8080 or 8086 floating-point package to support Floats.

We have gotten a lot of simplicity out of our Contexts as objects, and I'm reluctant to
change this scheme in the first implementation. The one thing I would change, however. is
to build the tempframe into the Contexts so that allocation can go a little faster, and work
out a scheme (I-bit reference count?) to recognize the common case that a returning
Context can be freed.
Then 'Vb at?
Assuming that we go with these or similar decisions, the NoteTaker Smal1talk environment
. requires implementation of the following modules:

Interpreter: byte fetch, fast ops, method lookup, activation
Storage Management: allocate, liberate. compact, full gc, inc gc
Text display: pick string. pick runs, pick font, measure/display
Bi tBLT: clipping, setup, actual BLT line-drawing control
t



In addition, some