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

Reply via email to