Sophie

Sophie

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

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.Linear.State</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-Linear-State.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.Linear.State</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>State monad for the linear register allocator.
</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"><span class="keyword">data</span>  <a href="#t:RA_State">RA_State</a> freeRegs = <a href="#v:RA_State">RA_State</a> {<ul class="subs"><li><a href="#v:ra_blockassig">ra_blockassig</a> :: <a href="RegAlloc-Linear-Base.html#t:BlockAssignment">BlockAssignment</a> freeRegs</li><li><a href="#v:ra_freeregs">ra_freeregs</a> :: !freeRegs</li><li><a href="#v:ra_assig">ra_assig</a> :: <a href="RegAlloc-Liveness.html#t:RegMap">RegMap</a> <a href="RegAlloc-Linear-Base.html#t:Loc">Loc</a></li><li><a href="#v:ra_delta">ra_delta</a> :: <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></li><li><a href="#v:ra_stack">ra_stack</a> :: <a href="RegAlloc-Linear-StackMap.html#t:StackMap">StackMap</a></li><li><a href="#v:ra_us">ra_us</a> :: <a href="UniqSupply.html#t:UniqSupply">UniqSupply</a></li><li><a href="#v:ra_spills">ra_spills</a> :: [<a href="RegAlloc-Linear-Base.html#t:SpillReason">SpillReason</a>]</li></ul>}</li><li class="src short"><span class="keyword">data</span>  <a href="#t:RegM">RegM</a> freeRegs a</li><li class="src short"><a href="#v:runR">runR</a> ::  <a href="RegAlloc-Linear-Base.html#t:BlockAssignment">BlockAssignment</a> freeRegs -&gt; freeRegs -&gt; <a href="RegAlloc-Liveness.html#t:RegMap">RegMap</a> <a href="RegAlloc-Linear-Base.html#t:Loc">Loc</a> -&gt; <a href="RegAlloc-Linear-StackMap.html#t:StackMap">StackMap</a> -&gt; <a href="UniqSupply.html#t:UniqSupply">UniqSupply</a> -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs a -&gt; (<a href="RegAlloc-Linear-Base.html#t:BlockAssignment">BlockAssignment</a> freeRegs, <a href="RegAlloc-Linear-StackMap.html#t:StackMap">StackMap</a>, <a href="RegAlloc-Linear-Base.html#t:RegAllocStats">RegAllocStats</a>, a)</li><li class="src short"><a href="#v:spillR">spillR</a> :: <a href="Instruction.html#t:Instruction">Instruction</a> instr =&gt; <a href="Platform.html#t:Platform">Platform</a> -&gt; <a href="Reg.html#t:Reg">Reg</a> -&gt; <a href="Unique.html#t:Unique">Unique</a> -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs (instr, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>)</li><li class="src short"><a href="#v:loadR">loadR</a> :: <a href="Instruction.html#t:Instruction">Instruction</a> instr =&gt; <a href="Platform.html#t:Platform">Platform</a> -&gt; <a href="Reg.html#t:Reg">Reg</a> -&gt; <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs instr</li><li class="src short"><a href="#v:getFreeRegsR">getFreeRegsR</a> ::  <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs freeRegs</li><li class="src short"><a href="#v:setFreeRegsR">setFreeRegsR</a> ::  freeRegs -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs ()</li><li class="src short"><a href="#v:getAssigR">getAssigR</a> ::  <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs (<a href="RegAlloc-Liveness.html#t:RegMap">RegMap</a> <a href="RegAlloc-Linear-Base.html#t:Loc">Loc</a>)</li><li class="src short"><a href="#v:setAssigR">setAssigR</a> ::  <a href="RegAlloc-Liveness.html#t:RegMap">RegMap</a> <a href="RegAlloc-Linear-Base.html#t:Loc">Loc</a> -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs ()</li><li class="src short"><a href="#v:getBlockAssigR">getBlockAssigR</a> ::  <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs (<a href="RegAlloc-Linear-Base.html#t:BlockAssignment">BlockAssignment</a> freeRegs)</li><li class="src short"><a href="#v:setBlockAssigR">setBlockAssigR</a> ::  <a href="RegAlloc-Linear-Base.html#t:BlockAssignment">BlockAssignment</a> freeRegs -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs ()</li><li class="src short"><a href="#v:setDeltaR">setDeltaR</a> ::  <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs ()</li><li class="src short"><a href="#v:getDeltaR">getDeltaR</a> ::  <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><a href="#v:getUniqueR">getUniqueR</a> ::  <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs <a href="Unique.html#t:Unique">Unique</a></li><li class="src short"><a href="#v:recordSpill">recordSpill</a> ::  <a href="RegAlloc-Linear-Base.html#t:SpillReason">SpillReason</a> -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs ()</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:RA_State" class="def">RA_State</a> freeRegs </p><div class="doc"><p>The register alloctor state
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:RA_State" class="def">RA_State</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:ra_blockassig" class="def">ra_blockassig</a> :: <a href="RegAlloc-Linear-Base.html#t:BlockAssignment">BlockAssignment</a> freeRegs</dt><dd class="doc"><p>the current mapping from basic blocks to
      the register assignments at the beginning of that block.
</p></dd><dt class="src"><a name="v:ra_freeregs" class="def">ra_freeregs</a> :: !freeRegs</dt><dd class="doc"><p>free machine registers
</p></dd><dt class="src"><a name="v:ra_assig" class="def">ra_assig</a> :: <a href="RegAlloc-Liveness.html#t:RegMap">RegMap</a> <a href="RegAlloc-Linear-Base.html#t:Loc">Loc</a></dt><dd class="doc"><p>assignment of temps to locations
</p></dd><dt class="src"><a name="v:ra_delta" class="def">ra_delta</a> :: <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></dt><dd class="doc"><p>current stack delta
</p></dd><dt class="src"><a name="v:ra_stack" class="def">ra_stack</a> :: <a href="RegAlloc-Linear-StackMap.html#t:StackMap">StackMap</a></dt><dd class="doc"><p>free stack slots for spilling
</p></dd><dt class="src"><a name="v:ra_us" class="def">ra_us</a> :: <a href="UniqSupply.html#t:UniqSupply">UniqSupply</a></dt><dd class="doc"><p>unique supply for generating names for join point fixup blocks.
</p></dd><dt class="src"><a name="v:ra_spills" class="def">ra_spills</a> :: [<a href="RegAlloc-Linear-Base.html#t:SpillReason">SpillReason</a>]</dt><dd class="doc"><p>Record why things were spilled, for -ddrop-asm-stats.
      Just keep a list here instead of a map of regs -&gt; reasons.
      We don't want to slow down the allocator if we're not going to emit the stats.
</p></dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:RegM" class="def">RegM</a> freeRegs a </p><div class="doc"><p>The register allocator monad type.
</p></div><div class="subs instances"><p id="control.i:RegM" class="caption collapser" onclick="toggleSection('i:RegM')">Instances</p><div id="section.i:RegM" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Control-Monad.html#t:Monad">Monad</a> (<a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs)</td><td class="doc"><p>The RegM Monad
</p></td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:runR" class="def">runR</a> ::  <a href="RegAlloc-Linear-Base.html#t:BlockAssignment">BlockAssignment</a> freeRegs -&gt; freeRegs -&gt; <a href="RegAlloc-Liveness.html#t:RegMap">RegMap</a> <a href="RegAlloc-Linear-Base.html#t:Loc">Loc</a> -&gt; <a href="RegAlloc-Linear-StackMap.html#t:StackMap">StackMap</a> -&gt; <a href="UniqSupply.html#t:UniqSupply">UniqSupply</a> -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs a -&gt; (<a href="RegAlloc-Linear-Base.html#t:BlockAssignment">BlockAssignment</a> freeRegs, <a href="RegAlloc-Linear-StackMap.html#t:StackMap">StackMap</a>, <a href="RegAlloc-Linear-Base.html#t:RegAllocStats">RegAllocStats</a>, a)</p><div class="doc"><p>Run a computation in the RegM register allocator monad.
</p></div></div><div class="top"><p class="src"><a name="v:spillR" class="def">spillR</a> :: <a href="Instruction.html#t:Instruction">Instruction</a> instr =&gt; <a href="Platform.html#t:Platform">Platform</a> -&gt; <a href="Reg.html#t:Reg">Reg</a> -&gt; <a href="Unique.html#t:Unique">Unique</a> -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs (instr, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>)</p></div><div class="top"><p class="src"><a name="v:loadR" class="def">loadR</a> :: <a href="Instruction.html#t:Instruction">Instruction</a> instr =&gt; <a href="Platform.html#t:Platform">Platform</a> -&gt; <a href="Reg.html#t:Reg">Reg</a> -&gt; <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs instr</p></div><div class="top"><p class="src"><a name="v:getFreeRegsR" class="def">getFreeRegsR</a> ::  <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs freeRegs</p></div><div class="top"><p class="src"><a name="v:setFreeRegsR" class="def">setFreeRegsR</a> ::  freeRegs -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs ()</p></div><div class="top"><p class="src"><a name="v:getAssigR" class="def">getAssigR</a> ::  <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs (<a href="RegAlloc-Liveness.html#t:RegMap">RegMap</a> <a href="RegAlloc-Linear-Base.html#t:Loc">Loc</a>)</p></div><div class="top"><p class="src"><a name="v:setAssigR" class="def">setAssigR</a> ::  <a href="RegAlloc-Liveness.html#t:RegMap">RegMap</a> <a href="RegAlloc-Linear-Base.html#t:Loc">Loc</a> -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs ()</p></div><div class="top"><p class="src"><a name="v:getBlockAssigR" class="def">getBlockAssigR</a> ::  <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs (<a href="RegAlloc-Linear-Base.html#t:BlockAssignment">BlockAssignment</a> freeRegs)</p></div><div class="top"><p class="src"><a name="v:setBlockAssigR" class="def">setBlockAssigR</a> ::  <a href="RegAlloc-Linear-Base.html#t:BlockAssignment">BlockAssignment</a> freeRegs -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs ()</p></div><div class="top"><p class="src"><a name="v:setDeltaR" class="def">setDeltaR</a> ::  <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs ()</p></div><div class="top"><p class="src"><a name="v:getDeltaR" class="def">getDeltaR</a> ::  <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></p></div><div class="top"><p class="src"><a name="v:getUniqueR" class="def">getUniqueR</a> ::  <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs <a href="Unique.html#t:Unique">Unique</a></p></div><div class="top"><p class="src"><a name="v:recordSpill" class="def">recordSpill</a> ::  <a href="RegAlloc-Linear-Base.html#t:SpillReason">SpillReason</a> -&gt; <a href="RegAlloc-Linear-State.html#t:RegM">RegM</a> freeRegs ()</p><div class="doc"><p>Record that a spill instruction was inserted, for profiling.
</p></div></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>