Addendum about the M bit.

To see why object headers want to live with their objects, consider what
happens to the fast-path store barrier on the Pentium

If the M bit is in the object header:

andb -1(%obRef), $MBIT

jnz done

call __long_store_barrier

done:


If the M bit is in the block metadata, one byte per line

%rTmp = %obRef >> $7  ; Compute the line number

%rTmp = %rTmp & $127

%rBlock = %obRef & $~!27

andB (%rBlock + %rTmp), $MBIT

jnz done

call __long_store_barrier

done:


It's a pretty substantial change. The worst of it being the need for two
additional registers.

The more I look at it, the more convinced I am that the M bit has to stay
with the object.


Jonathan
_______________________________________________
bitc-dev mailing list
bitc-dev@coyotos.org
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to