Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > 6e204a966e8c42d976f99a1700ce5f20 > files > 3003

ghc-7.4.2-4.mga5.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>RegAlloc.Graph.Spill</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_RegAlloc-Graph-Spill.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">ghc-7.4.2: The GHC API</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">RegAlloc.Graph.Spill</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>When there aren't enough registers to hold all the vregs we have to spill some of those
   vregs to slots on the stack. This module is used modify the code to use those slots.
</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:regSpill">regSpill</a> :: <a href="Instruction.html#t:Instruction">Instruction</a> instr =&gt; [<a href="RegAlloc-Liveness.html#t:LiveCmmDecl">LiveCmmDecl</a> statics instr] -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="Reg.html#t:VirtualReg">VirtualReg</a> -&gt; <a href="UniqSupply.html#t:UniqSM">UniqSM</a> ([<a href="RegAlloc-Liveness.html#t:LiveCmmDecl">LiveCmmDecl</a> statics instr], <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="RegAlloc-Graph-Spill.html#t:SpillStats">SpillStats</a>)</li><li class="src short"><span class="keyword">data</span>  <a href="#t:SpillStats">SpillStats</a>  = <a href="#v:SpillStats">SpillStats</a> {<ul class="subs"><li><a href="#v:spillStoreLoad">spillStoreLoad</a> :: <a href="UniqFM.html#t:UniqFM">UniqFM</a> (<a href="Reg.html#t:Reg">Reg</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>)</li></ul>}</li><li class="src short"><a href="#v:accSpillSL">accSpillSL</a> :: (<a href="Reg.html#t:Reg">Reg</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>) -&gt; (<a href="Reg.html#t:Reg">Reg</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>) -&gt; (<a href="Reg.html#t:Reg">Reg</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>)</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:regSpill" class="def">regSpill</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Instruction.html#t:Instruction">Instruction</a> instr</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; [<a href="RegAlloc-Liveness.html#t:LiveCmmDecl">LiveCmmDecl</a> statics instr]</td><td class="doc"><p>the code
</p></td></tr><tr><td class="src">-&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc"><p>available stack slots
</p></td></tr><tr><td class="src">-&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="Reg.html#t:VirtualReg">VirtualReg</a></td><td class="doc"><p>the regs to spill
</p></td></tr><tr><td class="src">-&gt; <a href="UniqSupply.html#t:UniqSM">UniqSM</a> ([<a href="RegAlloc-Liveness.html#t:LiveCmmDecl">LiveCmmDecl</a> statics instr], <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="RegAlloc-Graph-Spill.html#t:SpillStats">SpillStats</a>)</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Spill all these virtual regs to stack slots.
</p><p>TODO: See if we can split some of the live ranges instead of just globally
         spilling the virtual reg. This might make the spill cleaner's job easier.
</p><p>TODO: On CISCy x86 and x86_64 we don't nessesarally have to add a mov instruction
         when making spills. If an instr is using a spilled virtual we may be able to
         address the spill slot directly.
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:SpillStats" class="def">SpillStats</a>  </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:SpillStats" class="def">SpillStats</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:spillStoreLoad" class="def">spillStoreLoad</a> :: <a href="UniqFM.html#t:UniqFM">UniqFM</a> (<a href="Reg.html#t:Reg">Reg</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>)</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:SpillStats" class="caption collapser" onclick="toggleSection('i:SpillStats')">Instances</p><div id="section.i:SpillStats" class="show"><table><tr><td class="src"><a href="Outputable.html#t:Outputable">Outputable</a> <a href="RegAlloc-Graph-Spill.html#t:SpillStats">SpillStats</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:accSpillSL" class="def">accSpillSL</a> :: (<a href="Reg.html#t:Reg">Reg</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>) -&gt; (<a href="Reg.html#t:Reg">Reg</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>) -&gt; (<a href="Reg.html#t:Reg">Reg</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>)</p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>