<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
        <title>Segmented Stacks in LLVM</title>
        <link rel="stylesheet" href="llvm.css" type="text/css">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>

  <body>
        <h1>Segmented Stacks in LLVM</h1>
        <div class="doc_author">
          <p>Written by <a href="mailto:sanjoy@playingwithpointers.com">Sanjoy Das</a></p>
        </div>

        <ol>
          <li><a href="#intro">Introduction</a></li>
          <li><a href="#implementation">Implementation Details</a>
                <ol>
                  <li><a href="#morestack">Allocating Stacklets</a></li>
                  <li><a href="#alloca">Variable Sized Allocas</a></li>
                </ol>
          </li>
          <li><a href="#results">Results</a>
            <ol>
              <li><a href="#go">Go on LLVM</a></li>
              <li><a href="#abi">Runtime ABI</a></li>
            </ol>
          </li>
        </ol>

        <h2><a name="intro">Introduction</a></h2>
        <div>
          <p>
            Segmented stack allows stack space to be allocated incrementally than as a monolithic chunk (of some worst case size) at thread initialization. This is done by allocating stack blocks (henceforth called <em>stacklets</em>) and linking them into a doubly linked list. The function prologue is responsible for checking if the current stacklet has enough space for the function to execute; and if not, call into the libgcc runtime to allocate more stack space. Support for segmented stacks on x86 / Linux is currently being worked on.
          </p>
          <p>
            The runtime functionality is <a href="http://gcc.gnu.org/wiki/SplitStacks">already there in libgcc</a>.
          </p>
        </div>

        <h2><a name="implementation">Implementation Details</a></h2>
        <div>
          <h3><a name="morestack">Allocating Stacklets</a></h3>
          <div>
            <p>
              As mentioned above, the function prologue checks if the current stacklet has enough space. The current approach is to use a slot in the TCB to store the current stack limit (minus the amount of space needed to allocate a new block) - this slot's offset is again dictated by <code>libgcc</code>. The generated assembly looks like this on x86-64:
            </p>
            <pre>
	          leaq	-8(%rsp), %r10
	          cmpq	%fs:112,  %r10
	          jg	.LBB0_2

            # More stack space needs to be allocated
	          movabsq	$8, %r10 # The amount of space needed
	          movabsq	$0, %r11 # The total size of arguments passed on stack
	          callq	__morestack
	          ret # The reason for this extra return is explained below
            .LBB0_2:
            # Usual prologue continues here
            </pre>
            <p>
              The size of function arguments on the stack needs to be passed to <code> __morestack</code> (this function is implemented in <code>libgcc</code>) since that number of bytes has to be copied from the previous stacklet to the current one. This is so that SP (and FP) relative addressing of function arguments work as expected.
            </p>
            <p>
              The unusual <code>ret</code> is needed to have the function which made a call to <code>__morestack</code> return correctly. <code>__morestack</code>, instead of returning, calls into <code>.LBB0_2</code>. This is possible since both, the size of the <code>ret</code> instruction and the PC of call to <code>__morestack</code> are known. When the function body returns, control is transferred back to <code>__morestack</code>. <code>__morestack</code> then de-allocates the new stacklet, restores the correct SP value, and does a second return, which returns control to the correct caller.
            </p>
          </div>

          <h3><a name="alloca">Variable Sized Allocas</a></h3>
          <div>
            <p>
              The section on <a href="#morestack">allocating stacklets</a> automatically assumes that every stack frame will be of fixed size. However, LLVM allows the use of the <code>llvm.alloca</code> intrinsic to allocate dynamically sized blocks of memory on the stack. When faced with such a variable-sized alloca, code is generated to
            </p>
            <ul>
              <li>Check if the current stacklet has enough space. If yes, just bump the SP, like in the normal case.</li>
              <li>If not, generate a call to <code>libgcc</code>, which allocates the memory from the heap.</li>
            </ul>
            <p>
              The memory allocated from the heap is linked into a list in the current stacklet, and freed along with the same. This prevents a memory leak.
            </p>
          </div>

        </div>

        <hr>
        <address>
          <a href="http://jigsaw.w3.org/css-validator/check/referer">
                <img src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS">
          </a>
          <a href="http://validator.w3.org/check/referer">
                <img src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01">
          </a>
          <a href="mailto:sanjoy@playingwithpointers.com">Sanjoy Das</a><br>
          <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
          Last modified: $Date$
        </address>
  </body>
</html>

