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.
> 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