[LLVMdev] Garbage Collection Project

Eric Smith eric at brouhaha.com
Wed Jun 24 00:29:06 PDT 2009


Talin wrote:
 > A while back there was a discussion thread about whether an accurate,
 > concurrent garbage collector could be "generic" in the sense of being
 > able to support multiple different languages efficiently. After having
 > done some work on this, I now believe that this is the case

Very cool!  I haven't worked on a system with good concurrent garbage
collection since using the Intel iAPX-432 back in the mid-1980s.  It
used Dijkstra's concurrent garbage collection algorithm, which is a
mark-sweep collector with three colors.  The 432 architecture inherently
divided the representation of all objects into two segments, of which
one could only contain access descriptors (pointers), and the other
could only contain date other than access descriptors.  This made it
quite easy to trace all of the live objects starting from a small set of
known root objects.  This has also been used in LISP systems, and I've
heard that it has been used in some experimental JVMs, but I wasn't
sure that precise concurrent garbage collection could be implemented
efficiently for languages like C++ without imposing significant
restrictions on the usage of the language, so I thought I'd have to get
by with conservative collectors.

Best regards,
Eric




More information about the llvm-dev mailing list