[Vm-dev] Re: headerTypeBytes oddity
Igor Stasenko
siguctua at gmail.com
Wed Feb 18 13:32:36 UTC 2009
sorry for ranting , but i tend to hate more and more VMMaker's code generator :)
It lacks a most critical feature, which is highly important for such
complex projects like VM: data encapsulation.
To write a quite simple method, i have spent 10 hours , rewriting it
again and again , splitting it to more shorter methods, just to keep
code readable (if 'readable' term can be applied to slang ;) .
I even started to write own C code generator, which would allow a
decomposition of a huge ObjectMemory+Interpreter to a set of smaller,
more isolated classes.
For instance, we can declare a special MemoryOop class to write:
oop header vs self longAt: oop.
oop isMarked vs ((self longAt: oop) bitAnd: MarkBit) ~= 0
oop isIntegerObject vs self isIntegerObject: oop
this list can be continued...
2009/2/18 Igor Stasenko <siguctua at gmail.com>:
> A headerTypeBytes ivar used in Interpreter, but initialized only once
> during its lifetime - in readImageFromFile: f HeapSize:
> desiredHeapSize StartingAt: imageOffset),
> and with same constants:
>
> headerTypeBytes at: 0 put: BytesPerWord * 2. "3-word header (type 0)"
> headerTypeBytes at: 1 put: BytesPerWord. "2-word header (type 1)"
> headerTypeBytes at: 2 put: 0. "free chunk (type 2)"
> headerTypeBytes at: 3 put: 0. "1-word header (type 3)"
>
> I think this initialization could be put into static var declaration,
> in #declareCVarsIn:
> aCCodeGenerator
> var: #headerTypeBytes
> declareC: 'static sqInt headerTypeBytes[4] = { blablabla}'.
>
> then we don't have to pollute already complex #readImageFromFile:...
> method with odd stuff like this.
>
> It maybe not worth much attention for Squeak VM, but for Hydra, i
> found that this ivar placed into Interpreter struct (which means that
> each instance of interpreter will having separate headerTypeBytes).
> There are tons of ivars in ObjectMemory and Interpreter and its hard
> to track all, which worth keeping on a per-interpreter basis :)
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
--
Best regards,
Igor Stasenko AKA sig.
More information about the Vm-dev
mailing list