<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>Accurate Garbage Collection with LLVM</title>
  <link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>

<div class="doc_title">
  Accurate Garbage Collection with LLVM
</div>

<ol>
  <li><a href="#introduction">Introduction</a>
    <ul>
    <li><a href="#feature">GC features provided and algorithms supported</a></li>
    </ul>
  </li>

  <li><a href="#interfaces">Interfaces for user programs</a>
    <ul>
    <li><a href="#roots">Identifying GC roots on the stack: <tt>llvm.gcroot</tt></a></li>
    <li><a href="#allocate">Allocating memory from the GC</a></li>
    <li><a href="#barriers">Reading and writing references to the heap</a></li>
    <li><a href="#explicit">Explicit invocation of the garbage collector</a></li>
    </ul>
  </li>

  <li><a href="#gcimpl">Implementing a garbage collector</a>
    <ul>
    <li><a href="#llvm_gc_readwrite">Implementing <tt>llvm_gc_read</tt> and <tt>llvm_gc_write</tt></a></li>
    <li><a href="#callbacks">Callback functions used to implement the garbage collector</a></li>
    </ul>
  </li>
  <li><a href="#gcimpls">GC implementations available</a>
    <ul>
    <li><a href="#semispace">SemiSpace - A simple copying garbage collector</a></li>
    </ul>
  </li>

<!--
  <li><a href="#codegen">Implementing GC support in a code generator</a></li>
-->
</ol>

<div class="doc_author">
  <p>Written by <a href="mailto:sabre@nondot.org">Chris Lattner</a></p>
</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="introduction">Introduction</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>Garbage collection is a widely used technique that frees the programmer from
having to know the life-times of heap objects, making software easier to produce
and maintain.  Many programming languages rely on garbage collection for
automatic memory management.  There are two primary forms of garbage collection:
conservative and accurate.</p>

<p>Conservative garbage collection often does not require any special support
from either the language or the compiler: it can handle non-type-safe
programming languages (such as C/C++) and does not require any special
information from the compiler.  The [LINK] Boehm collector is an example of a
state-of-the-art conservative collector.</p>

<p>Accurate garbage collection requires the ability to identify all pointers in
the program at run-time (which requires that the source-language be type-safe in
most cases).  Identifying pointers at run-time requires compiler support to
locate all places that hold live pointer variables at run-time, including the
<a href="#roots">processor stack and registers</a>.</p>

<p>
Conservative garbage collection is attractive because it does not require any
special compiler support, but it does have problems.  In particular, because the
conservative garbage collector cannot <i>know</i> that a particular word in the
machine is a pointer, it cannot move live objects in the heap (preventing the
use of compacting and generational GC algorithms) and it can occasionally suffer
from memory leaks due to integer values that happen to point to objects in the
program.  In addition, some aggressive compiler transformations can break
conservative garbage collectors (though these seem rare in practice).
</p>

<p>
Accurate garbage collectors do not suffer from any of these problems, but they
can suffer from degraded scalar optimization of the program.  In particular,
because the runtime must be able to identify and update all pointers active in
the program, some optimizations are less effective.  In practice, however, the
locality and performance benefits of using aggressive garbage allocation
techniques dominates any low-level losses.
</p>

<p>
This document describes the mechanisms and interfaces provided by LLVM to
support accurate garbage collection.
</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="feature">GC features provided and algorithms supported</a>
</div>

<div class="doc_text">

<p>
LLVM provides support for a broad class of garbage collection algorithms,
including compacting semi-space collectors, mark-sweep collectors, generational
collectors, and even reference counting implementations.  It includes support
for <a href="#barriers">read and write barriers</a>, and associating <a
href="#roots">meta-data with stack objects</a> (used for tagless garbage
collection).  All LLVM code generators support garbage collection, including the
C backend.
</p>

<p>
We hope that the primitive support built into LLVM is sufficient to support a
broad class of garbage collected languages, including Scheme, ML, scripting
languages, Java, C#, etc.  That said, the implemented garbage collectors may
need to be extended to support language-specific features such as finalization,
weak references, or other features.  As these needs are identified and
implemented, they should be added to this specification.
</p>

<p>
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.
</p>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="interfaces">Interfaces for user programs</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>This section describes the interfaces provided by LLVM and by the garbage
collector run-time that should be used by user programs.  As such, this is the
interface that front-end authors should generate code for.
</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="roots">Identifying GC roots on the stack: <tt>llvm.gcroot</tt></a>
</div>

<div class="doc_text">

<div class="doc_code"><tt>
  void %llvm.gcroot(&lt;ty&gt;** %ptrloc, &lt;ty2&gt;* %metadata)
</tt></div>

<p>
The <tt>llvm.gcroot</tt> intrinsic is used to inform LLVM of a pointer variable
on the stack.  The first argument contains the address of the variable on the
stack, and the second contains a pointer to metadata that should be associated
with the pointer (which <b>must</b> be a constant or global value address).  At
runtime, the <tt>llvm.gcroot</tt> intrinsic stores a null pointer into the
specified location to initialize the pointer.</p>

<p>
Consider the following fragment of Java code:
</p>

<pre>
       {
         Object X;   // A null-initialized reference to an object
         ...
       }
</pre>

<p>
This block (which may be located in the middle of a function or in a loop nest),
could be compiled to this LLVM code:
</p>

<pre>
Entry:
   ;; In the entry block for the function, allocate the
   ;; stack space for X, which is an LLVM pointer.
   %X = alloca %Object*
   ...

   ;; "CodeBlock" is the block corresponding to the start
   ;;  of the scope above.
CodeBlock:
   ;; Initialize the object, telling LLVM that it is now live.
   ;; Java has type-tags on objects, so it doesn't need any
   ;; metadata.
   call void %llvm.gcroot(%Object** %X, sbyte* null)
   ...

   ;; As the pointer goes out of scope, store a null value into
   ;; it, to indicate that the value is no longer live.
   store %Object* null, %Object** %X
   ...
</pre>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="allocate">Allocating memory from the GC</a>
</div>

<div class="doc_text">

<div class="doc_code"><tt>
  sbyte *%llvm_gc_allocate(unsigned %Size)
</tt></div>

<p>The <tt>llvm_gc_allocate</tt> function is a global function defined by the
garbage collector implementation to allocate memory.  It returns a
zeroed-out block of memory of the appropriate size.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="barriers">Reading and writing references to the heap</a>
</div>

<div class="doc_text">

<div class="doc_code"><tt>
  sbyte *%llvm.gcread(sbyte *, sbyte **)<br>
  void %llvm.gcwrite(sbyte*, sbyte*, sbyte**)
</tt></div>

<p>Several of the more interesting garbage collectors (e.g., generational
collectors) need to be informed when the mutator (the program that needs garbage
collection) reads or writes object references into the heap.  In the case of a
generational collector, it needs to keep track of which "old" generation objects
have references stored into them.  The amount of code that typically needs to be
executed is usually quite small (and not on the critical path of any 
computation), so the overall performance impact of the inserted code is 
tolerable.</p>

<p>To support garbage collectors that use read or write barriers, LLVM provides
the <tt>llvm.gcread</tt> and <tt>llvm.gcwrite</tt> intrinsics.  The first
intrinsic has exactly the same semantics as a non-volatile LLVM load and the
second has the same semantics as a non-volatile LLVM store, with the
additions that they also take a pointer to the start of the memory
object as an argument.  At code generation
time, these intrinsics are replaced with calls into the garbage collector
(<tt><a href="#llvm_gc_readwrite">llvm_gc_read</a></tt> and <tt><a
href="#llvm_gc_readwrite">llvm_gc_write</a></tt> respectively), which are then
inlined into the code.
</p>

<p>
If you are writing a front-end for a garbage collected language, every load or
store of a reference from or to the heap should use these intrinsics instead of
normal LLVM loads/stores.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="initialize">Garbage collector startup and initialization</a>
</div>

<div class="doc_text">

<div class="doc_code"><tt>
  void %llvm_gc_initialize(unsigned %InitialHeapSize)
</tt></div>

<p>
The <tt>llvm_gc_initialize</tt> function should be called once before any other
garbage collection functions are called.  This gives the garbage collector the
chance to initialize itself and allocate the heap spaces.  The initial heap size
to allocate should be specified as an argument.
</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="explicit">Explicit invocation of the garbage collector</a>
</div>

<div class="doc_text">

<div class="doc_code"><tt>
  void %llvm_gc_collect()
</tt></div>

<p>
The <tt>llvm_gc_collect</tt> function is exported by the garbage collector
implementations to provide a full collection, even when the heap is not
exhausted.  This can be used by end-user code as a hint, and may be ignored by
the garbage collector.
</p>

</div>


<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="gcimpl">Implementing a garbage collector</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>
Implementing a garbage collector for LLVM is fairly straight-forward.  The LLVM
garbage collectors are provided in a form that makes them easy to link into the
language-specific runtime that a language front-end would use.  They require
functionality from the language-specific runtime to get information about <a
href="#gcdescriptors">where pointers are located in heap objects</a>.
</p>

<p>The
implementation must include the <a
href="#allocate"><tt>llvm_gc_allocate</tt></a> and <a
href="#explicit"><tt>llvm_gc_collect</tt></a> functions, and it must implement
the <a href="#llvm_gc_readwrite">read/write barrier</a> functions as well.  To
do this, it will probably have to <a href="#traceroots">trace through the roots
from the stack</a> and understand the <a href="#gcdescriptors">GC descriptors
for heap objects</a>.  Luckily, there are some <a href="#gcimpls">example
implementations</a> available.
</p>
</div>


<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="llvm_gc_readwrite">Implementing <tt>llvm_gc_read</tt> and <tt>llvm_gc_write</tt></a>
</div>

<div class="doc_text">
  <div class="doc_code"><tt>
    void *llvm_gc_read(void*, void **)<br>
    void llvm_gc_write(void*, void *, void**)
 </tt></div>

<p>
These functions <i>must</i> be implemented in every garbage collector, even if
they do not need read/write barriers.  In this case, just load or store the
pointer, then return.
</p>

<p>
If an actual read or write barrier is needed, it should be straight-forward to
implement it.
</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="callbacks">Callback functions used to implement the garbage collector</a>
</div>

<div class="doc_text">
<p>
Garbage collector implementations make use of call-back functions that are
implemented by other parts of the LLVM system.
</p>
</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection">
  <a name="traceroots">Tracing GC pointers from the program stack</a>
</div>

<div class="doc_text">
  <div class="doc_code"><tt>
     void llvm_cg_walk_gcroots(void (*FP)(void **Root, void *Meta));
  </tt></div>

<p>
The <tt>llvm_cg_walk_gcroots</tt> function is a function provided by the code
generator that iterates through all of the GC roots on the stack, calling the
specified function pointer with each record.  For each GC root, the address of
the pointer and the meta-data (from the <a
href="#gcroot"><tt>llvm.gcroot</tt></a> intrinsic) are provided.
</p>
</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection">
  <a name="staticroots">Tracing GC pointers from static roots</a>
</div>

<div class="doc_text">
TODO
</div>


<!--_________________________________________________________________________-->
<div class="doc_subsubsection">
  <a name="gcdescriptors">Tracing GC pointers from heap objects</a>
</div>

<div class="doc_text">
<p>
The three most common ways to keep track of where pointers live in heap objects
are (listed in order of space overhead required):</p>

<ol>
<li>In languages with polymorphic objects, pointers from an object header are
usually used to identify the GC pointers in the heap object.  This is common for
object-oriented languages like Self, Smalltalk, Java, or C#.</li>

<li>If heap objects are not polymorphic, often the "shape" of the heap can be
determined from the roots of the heap or from some other meta-data [<a
href="#appel89">Appel89</a>, <a href="#goldberg91">Goldberg91</a>, <a
href="#tolmach94">Tolmach94</a>].  In this case, the garbage collector can
propagate the information around from meta data stored with the roots.  This
often eliminates the need to have a header on objects in the heap.  This is
common in the ML family.</li>

<li>If all heap objects have pointers in the same locations, or pointers can be
distinguished just by looking at them (e.g., the low order bit is clear), no
book-keeping is needed at all.  This is common for Lisp-like languages.</li>
</ol>

<p>The LLVM garbage collectors are capable of supporting all of these styles of
language, including ones that mix various implementations.  To do this, it
allows the source-language to associate meta-data with the <a
href="#roots">stack roots</a>, and the heap tracing routines can propagate the
information.  In addition, LLVM allows the front-end to extract GC information
from in any form from a specific object pointer (this supports situations #1 and
#3).
</p>

<p><b>Making this efficient</b></p>



</div>



<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="gcimpls">GC implementations available</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>
To make this more concrete, the currently implemented LLVM garbage collectors
all live in the <tt>llvm/runtime/GC/*</tt> directories in the LLVM source-base.
If you are interested in implementing an algorithm, there are many interesting
possibilities (mark/sweep, a generational collector, a reference counting
collector, etc), or you could choose to improve one of the existing algorithms.
</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="semispace">SemiSpace - A simple copying garbage collector</a>
</div>

<div class="doc_text">
<p>
SemiSpace is a very simple copying collector.  When it starts up, it allocates
two blocks of memory for the heap.  It uses a simple bump-pointer allocator to
allocate memory from the first block until it runs out of space.  When it runs
out of space, it traces through all of the roots of the program, copying blocks
to the other half of the memory space.
</p>

</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection">
  Possible Improvements
</div>

<div class="doc_text">

<p>
If a collection cycle happens and the heap is not compacted very much (say less
than 25% of the allocated memory was freed), the memory regions should be
doubled in size.</p>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="references">References</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p><a name="appel89">[Appel89]</a> Runtime Tags Aren't Necessary. Andrew
W. Appel. Lisp and Symbolic Computation 19(7):703-705, July 1989.</p>

<p><a name="goldberg91">[Goldberg91]</a> Tag-free garbage collection for
strongly typed programming languages.  Benjamin Goldberg. ACM SIGPLAN
PLDI'91.</p>

<p><a name="tolmach94">[Tolmach94]</a> Tag-free garbage collection using
explicit type parameters.  Andrew Tolmach.  Proceedings of the 1994 ACM
conference on LISP and functional programming.</p>

</div>

<!-- *********************************************************************** -->

<hr>
<address>
  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"></a>

  <a href="mailto:sabre@nondot.org">Chris Lattner</a><br>
  <a href="http://llvm.cs.uiuc.edu">LLVM Compiler Infrastructure</a><br>
  Last modified: $Date$
</address>

</body>
</html>
