This morning I realized that I don't understand how an elided header is possible in the presence of concurrent mutators. Here's the scenario that bothers me:
1. Thread A creates an object O in Nursery A. 2. Thread A stores reference to O into some tenured object. 3. Thread B now reads this reference. 4. Thread B collects, or performs an integrate, causing a change in the reference count in O Except that thread A hasn't collected, so O is still in the nursery, so it has no header and therefore no reference count... There is a related hazard if the mutator and the collector are allowed to run concurrently and RC increments are deferred. You can end up with a deferred increment in thread A's state that names an object in tenured space that B is attempting to collect. shap
_______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
