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