Maybe I misunderstood something. Does each domain only have a minor private heap (ie. copying gc) or do they each also have a major private heap/older generation (mark and sweep)? If they have an older generation, then a thread could potentially have a lot of data there, no? On Wed, Sep 10, 2014 at 6:01 PM, Stephen Dolan wrote: > On Tue, Sep 9, 2014 at 4:26 PM, Yotam Barnoy > wrote: > > With great care is right :) But seriously, work stealing is a huge > > undertaking in this model, and may not be feasible at all as far as I can > > tell. Every private heap object accessed by a thread has to be copied > either > > to the shared heap or to the stealer's heap. This is the downside of not > > having one shared heap for everything. Of course there are huge upsides > as > > well, but I don't see how work stealing could work efficiently. The only > > exception would be for a thread that hasn't started running at all, or > has > > allocated very little. > > It's implemented, and was demoed last week in the talk you mention. > Work-stealing is the only reason the silly example program ran faster > on more cores. Still lots of work to be done, but closer to fait than > infeasible. > > Moving objects from a private to the shared heap is not a big deal. > This happens anyway during minor garbage collection. Stealing a fiber > that refers to objects in a private heap essentially involves doing > some of the minor GC work before the next minor GC would otherwise > occur. > > Stephen >