On 2012-03-22, at 17:26, Eliot Miranda wrote:

> 
> 
> On Thu, Mar 22, 2012 at 7:26 AM, Camillo Bruni <camillobr...@gmail.com> wrote:
> 
> On 2012-03-22, at 15:06, Stefan Marr wrote:
> 
> >
> > On 22 Mar 2012, at 14:45, Camillo Bruni wrote:
> >
> >> let's have some fun and do
> >>
> >> Object subclass: #Behavior
> >>      uses: TPureBehavior
> >>      instanceVariableNames: 'superclass methodDict format layout'
> >>      classVariableNames: 'ObsoleteSubclasses'
> >>      poolDictionaries: ''
> >>      category: 'Kernel-Classes'
> >>
> >> proceed over the several warnings not to change Behavior and BOOM! :D
> >
> > Check classNameIndex and thisClassIndex in the VM implementation.
> > They are typically the hardcoded indices into the expected object layout of 
> > Class objects.
> >
> > And you just changed the layout -> BOOM! magic ;)
> >
> > I don't know how much overhead it is to examine such kind of indices 
> > dynamically, but we do deduce indices based on inst var names to be able to 
> > support the different object layouts.
> > For my stuff, I do that at VM startup, which would not help you.
> 
> They would be expensive to recompute all the time (they're used in debug 
> printing).  But they're not expensive to compute. So they could be recomputed 
> easily.  See below.
> 
>  
> > David did it dynamically for the Process class and checked the object 
> > identity of the class I think, to know when to update the index table after 
> > a layout change.
> 
> right. I guess I will have to move it to some further position...
> although I have an old image with:
> 
> Behavior subclass: #ClassDescription
>        layout: PointerLayout
>        uses: TClassAndTraitDescription
>        slots: {
>                #instanceVariables => Slot.
>                #organization => Slot.
>                #layout => Slot.
>        }
>        classSlots: {}
>        globals: ''
>        category: #'Kernel-Classes'
> 
> 
> which works under said Cog version :/. I guess I will just have to find some 
> older VM which will support the changes
> 
> I think we should make the VM work for this.   classNameIndex and 
> thisClassIndex should only be used for debug printing, at least thats my 
> intent, and it would be possible to flush them and recompute them as a 
> side-effect of e.g. a flushCache primitive.
> 
> Camilo, would you create a reproducible case for me, an image that applies 
> this change at start-up?  Thanks.
> 
> Also, can we please get into the habit of cc'ing vm-dev for issues that touch 
> on the VM?  I ask this so that subsequent searching for VM issues can be 
> confined to a search of vm-dev archives.  Again AdvThanksance.

Submitted a bug report here:
        http://code.google.com/p/cog/issues/detail?id=76

the attached *.st files fail under Cog / StackVM. It would be indeed nice if 
they would work.

best
cami





Reply via email to