On Thu, Feb 3, 2011 at 9:35 PM, Ben Kloosterman <[email protected]> wrote:
> It was mentioned earlier that the standard library may not use copies that > may be non atomic due to the GC.. I should have asked this at the time but > is there a point ? Can you make a GC compaction or move and not stop the > world without a scheme that is incredibly costly ? For a start you must > stop the threads to scan the stack... > The problem isn't limited to libraries. The best work on this, as I've mentioned in the past, is the work be Steensgaard, though his work does not consider unboxed unions. The limit on incrementalism is that a given object has either been copied or it has not. In a lock-free concurrent collector, the approach is to contrive to notice when the object has changed and abandon (or retry) the copy when this occurs. Provided the upper bound on object size is small enough, this eventually converges, though the argument about it is tricky. I personally don't really believe in this approach. I think a better model is to imagine that there *is* a lock between the mutator and the GC, but that we want to establish a bound on the duration of this lock by limiting the number of words that the lock covers. We can then view the lock-free implementation as an optimistic optimization. Not only is it *not* incredibly costly; it works quite nicely. But also: the metric of "costly" needs to be examined. In a time when additional cores are idle and unusable, bounding in-band wait and establishing a floor (i.e. a guarantee) on GC progress may be much more important than maximizing GC performance. Which is why GC tuning remains a black art... shap
_______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
