On Oct 18, 2012, at 11:56 PM, Alex Rønne Petersen <a...@lycus.org> wrote: > > I'm not really sure how this solves the problem of having pointers from a > thread-local heap into the global heap and vice versa. Can you elaborate on > that? > > The problem is that even if you know whether a piece of memory is flagged > shared, you cannot know if some arbitrary number of threads happen to have > pointers to it and can thus mutate anything inside it while a thread-local > collection is in progress.
Blocks flagged as shared would be completely ignored by the thread-local GC collection. Since shared data may never reference unshared data, that should avoid anything being collected that's still referenced. I hadn't thought about "immutable" though, which may turn out to be a problem.