On 5/24/2010 9:47 PM, Eliot Miranda wrote:
Or store it in a flag in the image header flags word, accessed through vmParameterAt:put:. I would argue strongly that the VM should be backwards-compatible and the new mechanism is enabled by an image and that the enablement persists with the image rather than having to be reestablished on every startup.
I really don't like using header bits like that. Header bits are an *extremely* scarce resource since every new bit effectively cuts the image format version space in half. Once we have 32 header bits we can't use an image format identifier any longer because every possible combination of bits will be spoken for by some obscure combination of features.
Really, if you want to use header bits more regularly, then we should add a new image format that has room for header bits depending on image format version. That way you can add header bits and their meaning incrementally and when you've run out of space you're forced to update the image format version (which resets and accumulates previously optional features).
For the case at hand, what's wrong with simply requiring that the sizeof(splObjs) must be larger than 55 to enable the finalization scheme? That is backwards compatible and doesn't require fuzzing with header bits.
Cheers, - Andreas