Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data DebugBlock = DebugBlock {
- dblProcedure :: !Label
- dblLabel :: !Label
- dblCLabel :: !CLabel
- dblHasInfoTbl :: !Bool
- dblParent :: !(Maybe DebugBlock)
- dblTicks :: ![CmmTickish]
- dblSourceTick :: !(Maybe CmmTickish)
- dblPosition :: !(Maybe Int)
- dblUnwind :: !UnwindTable
- dblBlocks :: ![DebugBlock]
- dblIsEntry :: DebugBlock -> Bool
- type UnwindTable = Map GlobalReg UnwindExpr
- data UnwindExpr
- cmmDebugGen :: ModLocation -> RawCmmGroup -> [DebugBlock]
- cmmDebugLabels :: (i -> Bool) -> GenCmmGroup d g (ListGraph i) -> [Label]
- cmmDebugLink :: [Label] -> [DebugBlock] -> [DebugBlock]
- debugToMap :: [DebugBlock] -> LabelMap DebugBlock
Documentation
data DebugBlock Source #
Debug information about a block of code. Ticks scope over nested blocks.
DebugBlock | |
|
dblIsEntry :: DebugBlock -> Bool Source #
Is this the entry block?
type UnwindTable = Map GlobalReg UnwindExpr Source #
Maps registers to expressions that yield their "old" values further up the stack. Most interesting for the stack pointer Sp, but might be useful to document saved registers, too.
data UnwindExpr Source #
Expressions, used for unwind information
UwConst Int | literal value |
UwReg GlobalReg Int | register plus offset |
UwDeref UnwindExpr | pointer dereferencing |
UwPlus UnwindExpr UnwindExpr | |
UwMinus UnwindExpr UnwindExpr | |
UwTimes UnwindExpr UnwindExpr |
cmmDebugGen :: ModLocation -> RawCmmGroup -> [DebugBlock] Source #
Extract debug data from a group of procedures. We will prefer source notes that come from the given module (presumably the module that we are currently compiling).
cmmDebugLabels :: (i -> Bool) -> GenCmmGroup d g (ListGraph i) -> [Label] Source #
cmmDebugLink :: [Label] -> [DebugBlock] -> [DebugBlock] Source #
Sets position fields in the debug block tree according to native generated code.
debugToMap :: [DebugBlock] -> LabelMap DebugBlock Source #
Converts debug blocks into a label map for easier lookups