OK. Two things have me puzzled about RC-immix and immix. Both relate to
coalescing (a.k.a. forwarding).

First, I don't see why they need two forwarding bits. Neither system allows
mutators and collectors to run concurrently, so tri-coloring shouldn't be
necessary. Can anybody explain this?

Second: in *any* scheme, if mutators and (forwarding) collection are
allowed to run concurrently, I don't see how to make things work without a
read barrier. A mutator can be preempted by a collector immediately after
loading an object pointer to the object that the collector is about to
forward. Object moves, and then the mutator does an oblivious read from the
stale location.

It seems to me that concurrent forwarding probably requires that the origin
page be unmapped in the mutator address space.

Is there a trick here that I'm missing?


shap
_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to