On Thu, Mar 24, 2011 at 1:45 PM, Stéphane Ducasse <stephane.ducasse@inria.fr
wrote:
I like it! A great use for tuples. Not sure I like sots vs
instanceVarables, but then I'm an old man ;)
Have you thought about automatically creating accessors for byte data? I'm imagining
HeapField subclass: #ObjectHeaderLittleEndian type: #Bits fields: { #classTag => 20. #isPointers => 1 => #Boolean. #isIndexable => 1 => #Boolean. #slotSize => 8 => #Align => 8. #identityHash => 20 => #Align => 32. #isMarked => 1 => #Boolean. #isForwarded => 1 => #Boolean. #isWeak => 1 => #Boolean. #isEphemeron => 1 => #Boolean. } classSlots: {} globals: '' category: #'VMMaker-MemoryManager'
yes now we should probably avoid to have syntax in the class definition but in a description of the slots.
What means exactly: #identityHash => 20 => #Align => 32.
This is just an example but it means a 20-bit unsigned integer field aligned on a 32-bit boundary. In the above #isPointers => 1 => #Boolean would mean a 1 bit-field accessed as a boolean (a flag). The above is close to the object header in the new GC I want to build.
For slots we did a first experience with marcus in 2008/9 where we show that we could get first class instanceVariable without speed penalties. We postpone our experience because it required a working new compiler and a complete rewrite of classBuilder. We want to be able to define active value hashTable relationship magritte like description and a lot more
So if you have ideas or wishes let us know.
Stef