[Vm-dev] Spur Object 64 bit format

Clément Bera bera.clement at gmail.com
Tue Nov 12 11:56:13 UTC 2013


By the way as you are talking about Immediate objects tags and Spur's
object representation, I read on other VMs reports that it is faster in
overall performance to have pointers tagged with the xxx1 and SmallIntegers
tagged with xxx0, because SmallIntegers arithmetics is then much faster. Is
it possible to modify that easily in Cog to try ? Do you have to edit only
a few methods such as #longAt:, #integerValueOf: and SmallInteger
primitives ?

Another thing, I read in a java VM report that only 1% of objects needs a
hash (other objects hash are unused), so their hash implementation took
only 2 bits in the header, being:
01 -> no hash
10 -> hash is the object's address
11 -> hash is in a header extension
Therefore, on first access to the hash, hash bits switches from 01 to 10,
and the GC on objects with 10 switches the hash bits from 10 to 11 and add
a header extension with the old address of the object. But I know I'm not
teaching you anything there. What I would like to know is why did you
choose in Spur to have a 22bits hash in the header over this
implementation, and will the hash in Spur be calculated at each
instantiation or lazily ?

Thanks for any answers,

Regards, Clement

2013/11/12 Henrik Johansen <henrik.s.johansen at veloxit.no>

> On 12 Nov 2013, at 11:55 , Henrik Johansen <henrik.s.johansen at veloxit.no>
> wrote:
> nterest ~= time and: [skills]
> OT: I swear, missing parenthesis will be the death of me!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20131112/c8adc751/attachment.htm

More information about the Vm-dev mailing list