Micro Squeak

Tim Rowledge tim at sumeru.stanford.edu
Wed Mar 28 03:56:13 UTC 2001


Another possibility, but that involves quite lot more work, is to revert
to an Object Table and use copy-on-write semantics.

Many years ago (1989), in a galaxy far, far, away (Cambridge, UK), I did
the VM work for the Active Book Company. The Smalltalk used was a
derivative of a derivative of Eliot Miranda's rather nice BrouHaHa vm,
hacked about mercilessly for various reasons. To cope with a mainly ROM
world, I used the OT's indircetion to my benefit. All objects were in
ROM to start with and when any prim or bytecode tried to write into ROM
it was caught, the object copied to RAM and a the OT data pointer
updated. After that, the write could proceed without problem. It worked
amazingly well and nobody ever spotted a problem with it in tens of
thousands of hours of running. I even managed to come up with a way to
save the delta from the ROM (by scanning the OT, finding all the objects
now in RAM and saving them) so that typical working 'images' were
70-80kb. Loading these 'images' took very little time and was pretty
much a patching operation. The machine has 1Mb ROM, 1Mb RAM to cover the
OS, a fax filing system and screen and all working space. It was snappy
as hell and could probably be produced for about $100 these days. Sigh.

Anyway, you could probably do similar with the current Squeak
ObjectMemory format, but it would be trickier since there is potential
for a major swarm of copy/update with direct pointers. For restricted
applications (no changing classes, move class variables that get written
to a global dict, stuff like that) it would be ok.

If anybody wants it done, I'm available for the usual ursurial rates.

tim

-- 
Tim Rowledge, tim at sumeru.stanford.edu, http://sumeru.stanford.edu/tim
Strange OpCodes: MW: Multiply Work





More information about the Squeak-dev mailing list