mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
Release notes for segmented stacks.
Patch by Sanjoy Das. llvm-svn: 145416
This commit is contained in:
parent
97cc6da56c
commit
8e06adec06
@ -936,7 +936,10 @@ be used to verify some algorithms.
|
||||
make it run faster:</p>
|
||||
|
||||
<ul>
|
||||
<li>XXX: Segmented stacks.</li>
|
||||
<li>LLVM can now produce code that works with libgcc
|
||||
to <a href="SegmentedStacks.html">dynamically allocate stack
|
||||
segments</a>, as opposed to allocating a worst-case chunk of
|
||||
virtual memory for each thread.</li>
|
||||
<li>LLVM generates substantially better code for indirect gotos due to a new
|
||||
tail duplication pass, which can be a substantial performance win for
|
||||
interpreter loops that use them.</li>
|
||||
|
@ -20,18 +20,12 @@
|
||||
<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.
|
||||
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. When using <tt>llc</tt>, segmented stacks can be enabled by adding <tt>-segmented-stacks</tt> to the command line.
|
||||
</p>
|
||||
<p>
|
||||
The runtime functionality is <a href="http://gcc.gnu.org/wiki/SplitStacks">already there in libgcc</a>.
|
||||
|
Loading…
x
Reference in New Issue
Block a user