[SqF]Report of VI4 Project for Apr '02
peter.crowther at networkinference.com
Tue Apr 9 15:10:40 UTC 2002
> From: Rob Withers [mailto:rwithers12 at attbi.com]
> I went to look at the entire base header layout, to see if
> there were any other possible free bits, and ran into another
> puzzle. If bit 0 is the integer flag, then which bits are
> the 2 header type bits?
> ObjectMemory/TypeMask reads like it is bit 0 and 1 but that
> looks like it collides with the integer bit.
It does. But SmallIntegers are never in headers, and headers (by
definition) are never in object bodies where they can be confused with
SmallIntegers. So all is well.
The GC does, indeed, trash three bits at the bottom of the headers; it also
goes to considerable lengths to put them back correctly after collection.
I looked into this stuff about three years ago when I wanted to add a
security header to all/most object headers. It reminds me of a very, very
precisely engineered internal combustion engine: it all works reliably until
you touch something. Then it blows up and scatters bits all over the object
memory (if you're lucky; I've had them land over a much wider range :-).
More information about the Squeak-dev