2008/6/30 tim Rowledge tim@rowledge.org:
I am trying to make time to post a few articles on some future directions I consider interesting for the core system.
First one is up at http://people.squeakfoundation.org/article/89.html - do please comment on the relevant page, or even here.
This is not the only things which i don't like. For instance look into ObjectMemory>>fetchClassOf: it fetching class depending on object header. Either from compact classes array (by index), or from slot, reserved for class reference. I think eliminating compact classes would simplify the access to object's class and free us some bits again: type mask bit (at least).
It also will make fetching a class oop faster and uniform, so there will be no branching. Fetching a class from Compact classes array, requires: getting oop at index in special objects array, and then getting oop from this object:
class := fetchPointer: ccIndex - 1 ofObject: (self fetchPointer: CompactClasses ofObject: specialObjectsOop)
A drawback of getting rid of compact classes is additional memory cost per each instance of classes which were compact.