Prototypes at
Fri May 15 05:15:44 UTC 1998

The link below seems to be out of order . I would be very much interested in
locating the article in question.



Extensible dynamic instance variables can also be simulated using
>dictionaries (
>and doesNotUnderstand:.

-----Original Message-----
From: Brian Foote <foote at>
To: Squeak <squeak at>
Date: Tuesday, March 03, 1998 5:56 PM
Subject: Re: Prototypes

>Ralph Johnson and I descibed some work we did to allow more dynamic,
>changes to objects so that they could act more like prototypes
>many moons ago in Smalltalk itself in
>at OOPSLA '89.
>In those days, there was no changeClassToThatOf:,
>so we had to <add> a class change primitive ourselves.
>We also added a bit to the object headers to force a doesNotUnderstand:
>(dispatchMessage:) at the start of the lookup process instead of the end.
>Once you can clone yourself quickly, and change your parent/class pointer,
>the one thing left is adding a method or variable slot.  You can do that by
>adding a LightWeight
>class (a.k.a. HeavyweightObject or MetaObject), or with instance "clone and
>becomes:" tricks.
>Adding a lightweight Behavior gives you a place to put methods or state.
>Extensible dynamic instance variables can also be simulated using
>dictionaries (
>and doesNotUnderstand:.
>(The change class and dispatch hacks
>were patched in in binary, with MPW C , the assembler, and the debugger.
>We got a lot of bits under our fingernails...)
>Obligatory Squeak Content:  these sorts of VM alterations are a <lot>
>under Squeak.
>The thing that was interesting about how Self did dynamic slots was the
>meta-architecture under the hood (the maps and all) that made it possible
>do these dynamic
>things, and yet run efficiently when you knew you weren't doing them.
>Since Self's VM was a big C++ program,
>making this part of the system first-class objects wasn't something they
>were too enthusiastic about.  I was always frustrated that you
>couldn't get your hands on these too.
>I sense considerable enthusiasm for fleshing out this part of the
>tale in this community: the objects that connect the object models and
>implementation.  These can make experimentation with a variety of models
>possible.  In any case, it's good to see the MOP hackers getting
>flushed out into the open...
>As for Mike's point about dangerous facilities, I'm for refactoring
>things in such a way as to give us the dynamic power to make
>such facilities easier to hide.

More information about the Squeak-dev mailing list