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