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 <stephen.dolan@cl.cam.ac.uk> wrote:
On Tue, Sep 9, 2014 at 4:26 PM, Yotam Barnoy <yotambarnoy@gmail.com> 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