[Squeak-e] Programming the VM
Mark S. Miller
markm at caplet.com
Mon Feb 3 13:00:33 CET 2003
At 12:41 PM 2/3/2003 Monday, Andreas Raab wrote:
>> Ok. My gut feeling is indeed that this is better than dynamic scoping.
>> So we need an extra slot. Time to bring in the VM hacking squad ;-)
>> (FYI: the VM object format is destined to change in Squeak 3.5, for
>> 'real' closures or whatever. So this is the ideal time to request such
>I don't know where you heard that the object format is going to be changed
>in 3.5 but adding a pointer to every object is unlikely to be done unless
>you have a Very Good Reason(tm). It will instantly break all plugins and the
>added space and GC overhead is not to be taken lightly.
Ok, here's another way to do it. Instead of modifying the format of a
virtualized object, have the virtualized object point at a virtualized
class instead of the real one. Make the layout changes in the virtualized
Each class "loaded" into a given virtual "machine", ie, each class
that will be instantiated by a given virtualizer, ie, each class that is to
be as-if interpreted by that virtualizer, is itself first virtualized. This
means that a new Behavior object of some kind is allocated, usually sharing
method dictionary with the original class object as well as wrapping the
original class object. (Can two behaviors in Smalltalk share a method
dictionary?) The instance is now just the regular instance, but points at
the virtualized class instead of the real one.
Instances of normal classes would be unchanged, would be normal Squeak
objects, and would be seen by Squeak-E as primitive objects; just as E sees
Could this work? Might it even work without needing any VM changes?
Text by me above is hereby placed in the public domain
More information about the Squeak-e