Safe Haskell | None |
---|---|
Language | GHC2021 |
Synopsis
- generateCgIPEStub :: HscEnv -> Module -> InfoTableProvMap -> (NonCaffySet, ModuleLFInfos, Map CmmInfoTable (Maybe IpeSourceLocation), IPEStats) -> Stream IO CmmGroupSRTs CmmCgInfos
- lookupEstimatedTicks :: HscEnv -> Map CmmInfoTable (Maybe IpeSourceLocation) -> IPEStats -> CmmGroupSRTs -> IO (Map CmmInfoTable (Maybe IpeSourceLocation), IPEStats)
Documentation
generateCgIPEStub :: HscEnv -> Module -> InfoTableProvMap -> (NonCaffySet, ModuleLFInfos, Map CmmInfoTable (Maybe IpeSourceLocation), IPEStats) -> Stream IO CmmGroupSRTs CmmCgInfos Source #
lookupEstimatedTicks :: HscEnv -> Map CmmInfoTable (Maybe IpeSourceLocation) -> IPEStats -> CmmGroupSRTs -> IO (Map CmmInfoTable (Maybe IpeSourceLocation), IPEStats) Source #
Given:
* an initial mapping from info tables to possible source locations,
* initial IPEStats
,
* a CmmGroupSRTs
,
map every info table listed in the CmmProc
s of the group to their possible
source locations and update IPEStats
for skipped stack info tables (in case
both -finfo-table-map and -fno-info-table-map-with-stack were given). See:
Note [Stacktraces from Info Table Provenance Entries (IPE based stack unwinding)]
Note: While it would be cleaner if we could keep the recursion and
accumulation internal to this function, this cannot be done without
separately traversing stream of CmmGroupSRTs
in Main
. The
initial implementation of this logic did such a thing, and code generation
performance suffered considerably as a result (see #23103).