Changes between Version 9 and Version 10 of Commentary/Compiler/NewCodeGenPipeline


Ignore:
Timestamp:
Jul 29, 2008 1:07:59 PM (7 years ago)
Author:
simonpj
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Compiler/NewCodeGenPipeline

    v9 v10  
    2323 
    2424 * '''Lay out the stack''' 
    25    * A `SlotId` is the offset of a stack slot from the old end (high address) of the frame.  It doesn't vary as the physical stack pointer moves. 
    26    * A particular variable 'x' has one and only one `SlotId`, written `SS(x)`. 
    27    * A proc-point label K has a `SlotId`, written `SS(K)`, from which its (perhaps multiple) fields can be accessed. 
    28    * The stack layout pass produces a mapping of: ''(Area -> slotid)''. For more detail, see [wiki:Commentary/Compiler/StackAreas#Layingoutthestack the description of stack layout.] 
    29    * Walk over the graph, replacing references to stack areas with offsets from the stack pointer. 
     25   * Each variable 'x', and each proc-point label 'K', has an associated ''Area'', written SS(x) and SS(k) resp, that names a contiguous portion of the stack frame.   
     26   * The stack layout pass produces a mapping of: ''(`Area` -> `StackOffset`)''. For more detail, see [wiki:Commentary/Compiler/StackAreas#Layingoutthestack the description of stack layout.] 
     27   * A `StackOffset` is the byte offset of a stack slot from the old end (high address) of the frame.  It doesn't vary as the physical stack pointer moves. 
     28   * ONce the stack layout mapping has been determined, a second pass walks over the graph, replacing references to `Areas` with offsets from the stack pointer. 
    3029 
    3130 * '''Split into multiple !CmmProcs'''.  At this point we build an info-table for each of the !CmmProcs, including SRTs.  Done on the basis of the live local variables (by now mapped to stack slots) and live CAF statics.