[Squeak-e] Programming the VM

Andreas Raab andreas.raab at gmx.de
Mon Feb 3 22:18:10 CET 2003


Don't get me wrong here - if adding an extra word to the object header is
the best solution for the problem it might be a worthwhile change to make. I
was just trying to point out that such a change really deserves a good
reason to make it and from what I can tell this is currently just one of the
possible design alternatives (I'm travelling so I haven't entirely caught up
with everything going on).

Re: Virtualizing classes
You lost me somewhere. I don't exactly understand what the point about
"virtualizing objects/classes" really is. So I can't quite comment on the
overall issue but it seems to me that what you are describing is technically

  - Andreas

> -----Original Message-----
> From: squeak-e-bounces at lists.squeakfoundation.org 
> [mailto:squeak-e-bounces at lists.squeakfoundation.org] On 
> Behalf Of Mark S. Miller
> Sent: Monday, February 03, 2003 10:01 PM
> To: Squeak-E - a capability-secure Squeak
> Subject: RE: [Squeak-e] Programming the VM
> 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
> >> changes).
> >
> >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 
> class. 
> 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 
> Java objects.
> Could this work? Might it even work without needing any VM changes?
> ----------------------------------------
> Text by me above is hereby placed in the public domain
>         Cheers,
>         --MarkM
> _______________________________________________
> Squeak-e mailing list
> Squeak-e at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/listinfo/squeak-e

More information about the Squeak-e mailing list