Safe Haskell | None |
---|---|
Language | GHC2021 |
GHC.HsToCore.Breakpoints
Contents
Description
Information attached to Breakpoints generated from Ticks
The breakpoint information stored in ModBreaks
is generated during
desugaring from the ticks annotating the source expressions.
This information can be queried per-breakpoint using the BreakpointId
datatype, which indexes tick-level breakpoint information.
ModBreaks
and BreakpointId
s are not to be confused with
InternalModBreaks
and InternalBreakId
s. The latter are constructed
during bytecode generation and can be found in Breakpoints
.
See Note [Breakpoint identifiers]
Synopsis
- mkModBreaks :: Bool -> Module -> SizedSeq Tick -> ModBreaks
- data ModBreaks = ModBreaks {
- modBreaks_locs :: !(Array BreakTickIndex SrcSpan)
- modBreaks_vars :: !(Array BreakTickIndex [OccName])
- modBreaks_decls :: !(Array BreakTickIndex [String])
- modBreaks_ccs :: !(Array BreakTickIndex (String, String))
- modBreaks_module :: !Module
- data BreakpointId = BreakpointId {}
- type BreakTickIndex = Int
ModBreaks
Arguments
:: Bool | Whether the interpreter is profiled and thus if we should include store a CCS array |
-> Module | |
-> SizedSeq Tick | |
-> ModBreaks |
Initialize memory for breakpoint data that is shared between the bytecode generator and the interpreter.
Since GHCi and the RTS need to interact with breakpoint data and the bytecode generator needs to encode this information for each expression, the data is allocated remotely in GHCi's address space and passed to the codegen as foreign pointers.
All the information about the source-relevant breakpoints for a module
This information is constructed once during desugaring (with mkModBreaks
)
from breakpoint ticks and fixed/unchanged from there on forward. It could be
exported as an abstract datatype because it should never be updated after
construction, only queried.
The arrays can be indexed using the int in the corresponding BreakpointId
(i.e. the BreakpointId
whose Module
matches the Module
corresponding
to these ModBreaks
) with the accessors modBreaks_locs
, modBreaks_vars
,
and modBreaks_decls
.
Constructors
ModBreaks | |
Fields
|
Re-exports BreakpointId
data BreakpointId Source #
Breakpoint identifier.
Indexes into the structures in the
created during desugaring
(after inserting the breakpoint ticks in the expressions).
See Note [Breakpoint identifiers]ModBreaks
Constructors
BreakpointId | |
Fields
|
Instances
type BreakTickIndex = Int Source #
Breakpoint tick index newtype BreakTickIndex = BreakTickIndex Int deriving (Eq, Ord, Data, Ix, NFData, Outputable)