On 2012-03-22, at 17:26, Eliot Miranda wrote:
>
>
> On Thu, Mar 22, 2012 at 7:26 AM, Camillo Bruni <[email protected]> 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