hi David,

thanks for pointing that out. I haven't looked into the application but,
some notes from my side.

David Griffiths wrote:
> From the llvm web site: "LLVM does not currently support garbage
> collection of multi-threaded programs or GC-safe points other than
> function calls, but these will be added in the future as there is
> interest."  I would imagine that's quite a lot of work.
> 

First of all that is an issue regarding the existing llvm garbage
collector implementation not with the specification/bytecode stuff. So
its more or less an implementation detail.

AFAIK: GC-safe points are important for stop-the-world algorithms. There
are some papers around for implementing patching/polling to advance
another thread to a safe point (the one that triggers GC is already at a
safe point) = A safe point is a distinct point where GC is allowed or
"save" to happen.

So the problem really is multi-threaded apps (since safe points don't
matter for single threaded apps). The question is why they are facing
problems.

1) allocation is in principle the GC trigger
safepoints could be basic blocks that don't contain execution calls or
allocations.

2) Other problems with GC and multi threaded apps will have to be dealt
with (I don't think they are because the garbage collector is not thread
safe in its own respect - Such a thing could be simply worked around). I
will try to get into the details.

Given the amount of good papers and work in that area I don't think that
it is a too big problem to get worked out.

-- Jakob

Reply via email to