Wolfgang Jeltsch pushed to branch wip/jeltsch/textual-bytecode-output at Glasgow Haskell Compiler / GHC

Commits:

12 changed files:

Changes:

  • compiler/GHC/ByteCode/Serialize.hs
    ... ... @@ -6,7 +6,7 @@
    6 6
     {- | This module implements the serialization of bytecode objects to and from disk.
    
    7 7
     -}
    
    8 8
     module GHC.ByteCode.Serialize
    
    9
    -  ( writeBinByteCode, readBinByteCode
    
    9
    +  ( writeBinByteCode, readBinByteCode, readOnDiskModuleByteCode
    
    10 10
       , ModuleByteCode(..)
    
    11 11
       , BytecodeLibX(..)
    
    12 12
       , BytecodeLib
    

  • compiler/GHC/ByteCode/Show.hs
    1
    +{-# LANGUAGE ImportQualifiedPost #-}
    
    2
    +{-# LANGUAGE RecordWildCards #-}
    
    3
    +
    
    4
    +-- | This module implements the output of textual information about the contents
    
    5
    +--   of bytecode files. It is the backbone of the @--show-byte-code@ option.
    
    6
    +module GHC.ByteCode.Show (showByteCode) where
    
    7
    +
    
    8
    +import Prelude ((+), (-), Integral, div)
    
    9
    +import Control.Arrow ((>>>))
    
    10
    +import Control.Exception (assert)
    
    11
    +import Data.Eq ((==))
    
    12
    +import Data.Ord ((>=))
    
    13
    +import Data.Bits (FiniteBits, finiteBitSize)
    
    14
    +import Data.Function (($), id, (.))
    
    15
    +import Data.Tuple (fst, uncurry)
    
    16
    +import Data.Bool (Bool, otherwise, not)
    
    17
    +import Data.Int (Int)
    
    18
    +import Data.Word (Word)
    
    19
    +import Data.Maybe (Maybe, maybe)
    
    20
    +import Data.Either (Either, either)
    
    21
    +import Data.List (length, (++), map, zipWith4, take, drop, replicate)
    
    22
    +import Data.String (String)
    
    23
    +import Data.ByteString (ByteString)
    
    24
    +import Data.ByteString.Short (ShortByteString)
    
    25
    +import Data.IntMap (IntMap)
    
    26
    +import Data.IntMap qualified as IntMap (toList)
    
    27
    +import Data.Array (bounds, indices, elems)
    
    28
    +import Numeric (showHex)
    
    29
    +import Text.Show (show)
    
    30
    +import System.IO (IO, FilePath)
    
    31
    +import GHC.Data.Strict qualified as Strict (Maybe, maybe)
    
    32
    +import GHC.Data.FastString (unpackFS)
    
    33
    +import GHC.Data.FlatBag (FlatBag, elemsFlatBag)
    
    34
    +import GHC.Fingerprint (Fingerprint)
    
    35
    +import GHC.Types.SrcLoc (noSrcSpan)
    
    36
    +import GHC.Types.Name (Name)
    
    37
    +import GHC.Types.Name.Occurrence (OccName)
    
    38
    +import GHC.Types.Tickish (BreakTickIndex, BreakpointId (..))
    
    39
    +import GHC.Types.SptEntry (SptEntry (..))
    
    40
    +import GHC.Types.Error (MessageClass (MCDump))
    
    41
    +import GHC.Utils.Logger (Logger, logMsg)
    
    42
    +import GHC.Utils.Binary (BinSrcSpan (..))
    
    43
    +import GHC.Utils.Encoding.UTF8 (utf8DecodeShortByteString, utf8DecodeByteString)
    
    44
    +import GHC.Utils.Outputable
    
    45
    +       (
    
    46
    +           defaultDumpStyle,
    
    47
    +           SDoc,
    
    48
    +           text,
    
    49
    +           (<>),
    
    50
    +           (<+>),
    
    51
    +           quotes,
    
    52
    +           hsep,
    
    53
    +           vcat,
    
    54
    +           hang,
    
    55
    +           withPprStyle,
    
    56
    +           ppr
    
    57
    +       )
    
    58
    +import GHC.Unit.Types (Module)
    
    59
    +import GHC.Iface.Type (IfaceType, IfaceTvBndr, IfaceIdBndr)
    
    60
    +import GHC.HsToCore.Breakpoints (ModBreaks (..))
    
    61
    +import GHC.ByteCode.Types
    
    62
    +       (
    
    63
    +           FFIInfo (..),
    
    64
    +           BCONPtr (..),
    
    65
    +           BCOPtr (..),
    
    66
    +           UnlinkedBCO (..),
    
    67
    +           ByteCodeHpcInfo (..),
    
    68
    +           CompiledByteCode (..)
    
    69
    +       )
    
    70
    +import GHC.ByteCode.Breakpoints
    
    71
    +       (
    
    72
    +           InternalBreakpointId (..),
    
    73
    +           InternalBreakLoc (..),
    
    74
    +           CgBreakInfo (..),
    
    75
    +           InternalModBreaks (..)
    
    76
    +       )
    
    77
    +import GHC.ByteCode.Binary (OnDiskModuleByteCode (..))
    
    78
    +import GHC.ByteCode.Serialize (readOnDiskModuleByteCode)
    
    79
    +import GHC.Driver.Env.Types (HscEnv)
    
    80
    +import GHCi.FFI (FFIType)
    
    81
    +import GHCi.Message (ConInfoTable (..))
    
    82
    +
    
    83
    +-- | Outputs textual information about the contents of a bytecode file.
    
    84
    +showByteCode :: Logger -> HscEnv -> FilePath -> IO ()
    
    85
    +showByteCode logger env path = do
    
    86
    +    byteCode <- readOnDiskModuleByteCode env path
    
    87
    +    logMsg logger
    
    88
    +           MCDump
    
    89
    +           noSrcSpan
    
    90
    +           (withPprStyle defaultDumpStyle $ pprOnDiskModuleByteCode byteCode)
    
    91
    +
    
    92
    +-- | Constructs textual information about the contents of a bytecode file.
    
    93
    +pprOnDiskModuleByteCode :: OnDiskModuleByteCode -> SDoc
    
    94
    +pprOnDiskModuleByteCode OnDiskModuleByteCode {..}
    
    95
    +    = vcat [
    
    96
    +               pprModuleIdent                   $ odgbc_module,
    
    97
    +               pprOnDiskModuleByteCodeHash      $ odgbc_hash,
    
    98
    +               pprCompiledByteCode odgbc_module $ odgbc_compiled_byte_code
    
    99
    +           ]
    
    100
    +
    
    101
    +-- | Constructs textual information about the name of a module.
    
    102
    +pprModuleIdent :: Module -> SDoc
    
    103
    +pprModuleIdent = entry (text "name") . ppr
    
    104
    +
    
    105
    +-- | Constructs textual information about the hash of a module.
    
    106
    +pprOnDiskModuleByteCodeHash :: Fingerprint -> SDoc
    
    107
    +pprOnDiskModuleByteCodeHash = entry (text "hash") . ppr
    
    108
    +
    
    109
    +-- | Constructs textual information about bytecode.
    
    110
    +pprCompiledByteCode :: Module           -- ^ The enclosing module
    
    111
    +                    -> CompiledByteCode -- ^ The bytecode
    
    112
    +                    -> SDoc             -- ^ The textual information
    
    113
    +pprCompiledByteCode currentModule CompiledByteCode {..}
    
    114
    +    = vcat [
    
    115
    +               pprByteCodeObjects currentModule $ bc_bcos,
    
    116
    +               pprDataConstructorInfoTables     $ bc_itbls,
    
    117
    +               pprTopLevelStrings               $ bc_strs,
    
    118
    +               pprBreakpoints currentModule     $ bc_breaks,
    
    119
    +               pprStaticPointerTableEntries     $ bc_spt_entries,
    
    120
    +               pprHPCInfo                       $ bc_hpc_info
    
    121
    +           ]
    
    122
    +
    
    123
    +-- | Constructs textual information about bytecode objects.
    
    124
    +pprByteCodeObjects :: Module              -- ^ The enlosing module
    
    125
    +                   -> FlatBag UnlinkedBCO -- ^ The bytecode objects
    
    126
    +                   -> SDoc                -- ^ The textual information
    
    127
    +pprByteCodeObjects currentModule = entry (text "objects")                .
    
    128
    +                                   vcatOrNone                            .
    
    129
    +                                   map (pprByteCodeObject currentModule) .
    
    130
    +                                   elemsFlatBag
    
    131
    +
    
    132
    +-- | Constructs textual information about a single bytecode object.
    
    133
    +pprByteCodeObject :: Module      -- ^ The enclosing module
    
    134
    +                  -> UnlinkedBCO -- ^ The bytecode object
    
    135
    +                  -> SDoc        -- ^ The textual information
    
    136
    +pprByteCodeObject currentModule byteCodeObject = case byteCodeObject of
    
    137
    +    UnlinkedBCO {..}
    
    138
    +        -> entry (text "ordinary object" <+> quotes (ppr unlinkedBCOName)) $
    
    139
    +           vcat [
    
    140
    +                    pprArity                  $ unlinkedBCOArity,
    
    141
    +                    pprLiterals currentModule $ unlinkedBCOLits,
    
    142
    +                    pprPointers currentModule $ unlinkedBCOPtrs
    
    143
    +                ]
    
    144
    +    UnlinkedStaticCon {..}
    
    145
    +        -> entry (
    
    146
    +                     text "static-construction object"  <+>
    
    147
    +                     quotes (ppr unlinkedStaticConName)
    
    148
    +                 )
    
    149
    +           $
    
    150
    +           vcat [
    
    151
    +                    pprDataConstructorName    $ unlinkedStaticConDataConName,
    
    152
    +                    pprLiftedness             $ not unlinkedStaticConIsUnlifted,
    
    153
    +                    pprLiterals currentModule $ unlinkedStaticConLits,
    
    154
    +                    pprPointers currentModule $ unlinkedStaticConPtrs
    
    155
    +                ]
    
    156
    +
    
    157
    +-- | Constructs textual information about the arity of an ordinary bytecode
    
    158
    +--   object.
    
    159
    +pprArity :: Int -> SDoc
    
    160
    +pprArity = entry (text "arity") . ppr
    
    161
    +
    
    162
    +-- | Constructs textual information about the data constructor name of a
    
    163
    +--   static-construction bytecode object.
    
    164
    +pprDataConstructorName :: Name -> SDoc
    
    165
    +pprDataConstructorName = entry (text "data constructor name") . ppr
    
    166
    +
    
    167
    +-- | Constructs textual information about the liftedness of a
    
    168
    +--   static-construction bytecode object.
    
    169
    +pprLiftedness :: Bool -> SDoc
    
    170
    +pprLiftedness = entry (text "lifted") . noOrYes
    
    171
    +
    
    172
    +-- | Constructs textual information about literals.
    
    173
    +pprLiterals :: Module          -- ^ The enclosing module
    
    174
    +            -> FlatBag BCONPtr -- ^ The literals
    
    175
    +            -> SDoc            -- ^ The textual information
    
    176
    +pprLiterals currentModule = entry (text "literals")        .
    
    177
    +                            vcatOrNone                     .
    
    178
    +                            map (pprLiteral currentModule) .
    
    179
    +                            elemsFlatBag
    
    180
    +
    
    181
    +-- | Constructs textual information about a single literal.
    
    182
    +pprLiteral :: Module  -- ^ The enclosing module
    
    183
    +           -> BCONPtr -- ^ The literal
    
    184
    +           -> SDoc    -- ^ The textual information
    
    185
    +pprLiteral currentModule literal = case literal of
    
    186
    +    BCONPtrWord word
    
    187
    +        -> text "word" <+>
    
    188
    +           ppr word
    
    189
    +    BCONPtrLbl label
    
    190
    +        -> text "label" <+>
    
    191
    +           quotes (ppr label)
    
    192
    +    BCONPtrItbl infoTableName
    
    193
    +        -> text "info table of" <+>
    
    194
    +           quotes (ppr infoTableName)
    
    195
    +    BCONPtrAddr addrName
    
    196
    +        -> text "address" <+>
    
    197
    +           quotes (ppr addrName)
    
    198
    +    BCONPtrStr encodedString
    
    199
    +        -> text "top-level string" <+>
    
    200
    +           text (show (utf8DecodeByteString encodedString))
    
    201
    +    BCONPtrFS string
    
    202
    +        -> text "top-level string" <+>
    
    203
    +           text (show (unpackFS string))
    
    204
    +    BCONPtrFFIInfo ffiInfo
    
    205
    +        -> text "foreign function" <+>
    
    206
    +           quotes (pprFFIInfo ffiInfo)
    
    207
    +    BCONPtrCostCentre breakpointID
    
    208
    +        -> text "cost center of breakpoint" <+>
    
    209
    +           pprInternalBreakpointID currentModule breakpointID
    
    210
    +
    
    211
    +-- | Constructs textual information about FFI info.
    
    212
    +pprFFIInfo :: FFIInfo -> SDoc
    
    213
    +pprFFIInfo FFIInfo {..}
    
    214
    +    = hsep (map (pprFFIType >>> (<+> text "->")) ffiInfoArgs) <+>
    
    215
    +      pprFFIType ffiInfoRet
    
    216
    +
    
    217
    +-- | Constructs textual information about an FFI type.
    
    218
    +pprFFIType :: FFIType -> SDoc
    
    219
    +pprFFIType ffiType = assert (take 3 ident == "FFI") $ text (drop 3 ident) where
    
    220
    +
    
    221
    +    ident :: String
    
    222
    +    ident = show ffiType
    
    223
    +
    
    224
    +-- | Constructs textual information about the ID of a bytecode breakpoint.
    
    225
    +pprInternalBreakpointID
    
    226
    +    :: Module               -- ^ The enclosing module
    
    227
    +    -> InternalBreakpointId -- ^ The ID of the bytecode breakpoint
    
    228
    +    -> SDoc                 -- ^ The textual information
    
    229
    +pprInternalBreakpointID currentModule InternalBreakpointId {..}
    
    230
    +    | ibi_info_mod == currentModule = indexDoc
    
    231
    +    | otherwise                     = indexDoc         <+>
    
    232
    +                                      text "in"        <+>
    
    233
    +                                      ppr ibi_info_mod
    
    234
    +    where
    
    235
    +
    
    236
    +    indexDoc :: SDoc
    
    237
    +    indexDoc = ppr ibi_info_index
    
    238
    +
    
    239
    +-- | Constructs textual information about pointers.
    
    240
    +pprPointers :: Module         -- ^ The enclosing module
    
    241
    +            -> FlatBag BCOPtr -- ^ The pointers
    
    242
    +            -> SDoc           -- ^ The textual information
    
    243
    +pprPointers currentModule = entry (text "utilized items")  .
    
    244
    +                            vcatOrNone                     .
    
    245
    +                            map (pprPointer currentModule) .
    
    246
    +                            elemsFlatBag
    
    247
    +
    
    248
    +-- | Constructs textual information about a single pointer.
    
    249
    +pprPointer :: Module -- ^ The enclosing module
    
    250
    +           -> BCOPtr -- ^ The pointer
    
    251
    +           -> SDoc   -- ^ The textual information
    
    252
    +pprPointer currentModule pointer = case pointer of
    
    253
    +    BCOPtrName name
    
    254
    +        -> text "item named" <+> quotes (ppr name)
    
    255
    +    BCOPtrPrimOp primOp
    
    256
    +        -> text "primitive operation" <+> quotes (ppr primOp)
    
    257
    +    BCOPtrBCO byteCodeObject
    
    258
    +        -> pprByteCodeObject currentModule byteCodeObject
    
    259
    +    BCOPtrBreakArray breakArrayModule
    
    260
    +        -> text "break array of module" <+> quotes (ppr breakArrayModule)
    
    261
    +
    
    262
    +-- | Constructs textual information about data constructor info tables.
    
    263
    +pprDataConstructorInfoTables :: [(Name, ConInfoTable)] -> SDoc
    
    264
    +pprDataConstructorInfoTables = entry (text "data constructor info tables") .
    
    265
    +                               vcatOrNone                                  .
    
    266
    +                               map (uncurry pprDataConstructorInfoTable)
    
    267
    +
    
    268
    +-- | Constructs textual information about a single data constructor info table.
    
    269
    +pprDataConstructorInfoTable :: Name -> ConInfoTable -> SDoc
    
    270
    +pprDataConstructorInfoTable dataConstrName ConInfoTable {..}
    
    271
    +    = entry (text "info table of" <+> quotes (ppr dataConstrName)) $
    
    272
    +      vcat [
    
    273
    +               pprPointerWordCount    $ conItblPtrs,
    
    274
    +               pprNonPointerWordCount $ conItblNPtrs
    
    275
    +           ]
    
    276
    +
    
    277
    +-- | Constructs textual information about a number of pointer words.
    
    278
    +pprPointerWordCount :: Int -> SDoc
    
    279
    +pprPointerWordCount = entry (text "number of words for pointers") . ppr
    
    280
    +
    
    281
    +-- | Constructs textual information about a number of non-pointer words.
    
    282
    +pprNonPointerWordCount :: Int -> SDoc
    
    283
    +pprNonPointerWordCount = entry (text "number of words for non-pointers") . ppr
    
    284
    +
    
    285
    +-- | Constructs textual information about top-level strings.
    
    286
    +pprTopLevelStrings :: [(Name, ByteString)] -> SDoc
    
    287
    +pprTopLevelStrings = entry (text "top-level strings") .
    
    288
    +                     vcatOrNone                       .
    
    289
    +                     map (uncurry pprTopLevelString)
    
    290
    +
    
    291
    +-- | Constructs textual information about a single top-level string.
    
    292
    +pprTopLevelString :: Name -> ByteString -> SDoc
    
    293
    +pprTopLevelString stringName encodedString = entry (ppr stringName) $
    
    294
    +                                             text                   $
    
    295
    +                                             show                   $
    
    296
    +                                             utf8DecodeByteString   $
    
    297
    +                                             encodedString
    
    298
    +
    
    299
    +-- | Constructs textual information about breakpoints.
    
    300
    +pprBreakpoints :: Module                  -- ^ The enclosing module
    
    301
    +               -> Maybe InternalModBreaks -- ^ The breakpoints
    
    302
    +               -> SDoc                    -- ^ The textual information
    
    303
    +pprBreakpoints currentModule
    
    304
    +    = entry (text "breakpoints") .
    
    305
    +      maybe (text "<none>") (pprActualBreakpoints currentModule)
    
    306
    +
    
    307
    +-- | Constructs textual information about actual breakpoints.
    
    308
    +pprActualBreakpoints :: Module            -- ^ The enclosing module
    
    309
    +                     -> InternalModBreaks -- ^ The actual breakpoints
    
    310
    +                     -> SDoc              -- ^ The textual information
    
    311
    +pprActualBreakpoints currentModule InternalModBreaks {..}
    
    312
    +    = vcat [
    
    313
    +               pprSourceBreakpoints currentModule   $ imodBreaks_modBreaks,
    
    314
    +               pprByteCodeBreakpoints currentModule $ imodBreaks_breakInfo
    
    315
    +           ]
    
    316
    +
    
    317
    +-- | Constructs textual information about source breakpoints.
    
    318
    +pprSourceBreakpoints :: Module    -- ^ The enclosing module
    
    319
    +                     -> ModBreaks -- ^ The source breakpoints
    
    320
    +                     -> SDoc      -- ^ The textual information
    
    321
    +pprSourceBreakpoints currentModule ModBreaks {..}
    
    322
    +    = entry (text "source breakpoints")                         $
    
    323
    +      assert (modBreaks_module == currentModule)                $
    
    324
    +      assert (bounds modBreaks_locs_ == bounds modBreaks_decls) $
    
    325
    +      assert (bounds modBreaks_locs_ == bounds modBreaks_vars)  $
    
    326
    +      vcatOrNone                                                $
    
    327
    +      zipWith4 pprSourceBreakpoint (indices modBreaks_locs_)
    
    328
    +                                   (elems modBreaks_locs_)
    
    329
    +                                   (elems modBreaks_decls)
    
    330
    +                                   (elems modBreaks_vars)
    
    331
    +      -- The cost center infos in 'modBreaks_ccs', when present, just contain
    
    332
    +      -- textual representations of the declaration paths in 'modBreaks_decls'
    
    333
    +      -- and the source spans in 'modBreaks_locs_' and are therefore never
    
    334
    +      -- shown.
    
    335
    +
    
    336
    +-- | Constructs textual information about a single source breakpoint.
    
    337
    +pprSourceBreakpoint :: BreakTickIndex
    
    338
    +                    -> BinSrcSpan
    
    339
    +                    -> [String]
    
    340
    +                    -> [OccName]
    
    341
    +                    -> SDoc
    
    342
    +pprSourceBreakpoint ix srcSpan declarationPath freeVars
    
    343
    +    = entry (text "source breakpoint" <+> ppr ix) $
    
    344
    +      vcat [
    
    345
    +               pprSrcSpan         $ srcSpan,
    
    346
    +               pprDeclarationPath $ declarationPath,
    
    347
    +               pprFreeVariables   $ freeVars
    
    348
    +           ]
    
    349
    +
    
    350
    +-- | Constructs textual information about a source span.
    
    351
    +pprSrcSpan :: BinSrcSpan -> SDoc
    
    352
    +pprSrcSpan = entry (text "source span") . ppr . unBinSrcSpan
    
    353
    +
    
    354
    +-- | Constructs textual information about a declaration path.
    
    355
    +pprDeclarationPath :: [String] -> SDoc
    
    356
    +pprDeclarationPath = entry (text "declaration path") . vcatOrEmpty . map text
    
    357
    +
    
    358
    +-- | Constructs textual information about free variables.
    
    359
    +pprFreeVariables :: [OccName] -> SDoc
    
    360
    +pprFreeVariables = entry (text "free variables") . vcatOrNone . map ppr
    
    361
    +
    
    362
    +-- | Constructs textual information about bytecode breakpoints.
    
    363
    +pprByteCodeBreakpoints :: Module             -- ^ The enclosing module
    
    364
    +                       -> IntMap CgBreakInfo -- ^ The bytecode breakpoints
    
    365
    +                       -> SDoc               -- ^ The textual information
    
    366
    +pprByteCodeBreakpoints currentModule
    
    367
    +    = entry (text "bytecode breakpoints")                 .
    
    368
    +      vcatOrNone                                          .
    
    369
    +      map (uncurry (pprByteCodeBreakpoint currentModule)) .
    
    370
    +      IntMap.toList
    
    371
    +
    
    372
    +-- | Constructs textual information about a single bytecode breakpoint.
    
    373
    +pprByteCodeBreakpoint :: Module      -- ^ The enclosing module
    
    374
    +                      -> Int         -- ^ The index of the bytecode breakpoint
    
    375
    +                      -> CgBreakInfo -- ^ The bytecode breakpoint
    
    376
    +                      -> SDoc        -- ^ The textual information
    
    377
    +pprByteCodeBreakpoint currentModule ix CgBreakInfo {..}
    
    378
    +    = entry (text "bytecode breakpoint" <+> ppr ix) $
    
    379
    +      vcat [
    
    380
    +               pprType                                        $ cgb_resty,
    
    381
    +               pprTypeVariables                               $ cgb_tyvars,
    
    382
    +               pprVariables                                   $ cgb_vars,
    
    383
    +               pprCorrespondingSourceBreakpoint currentModule $ cgb_tick_id
    
    384
    +           ]
    
    385
    +    -- That the 'cgb_resty' field holds the type of the breakpoint is apparent
    
    386
    +    -- from the fact that this field is set by
    
    387
    +    -- 'GHC.StgToByteCode.dehydrateCgBreakInfo' using one of its arguments and
    
    388
    +    -- 'GHC.StgToByteCode.dehydrateCgBreakInfo' is always invoked with this
    
    389
    +    -- argument set to the extension field of 'Breakpoint', which in turn holds
    
    390
    +    -- the type of the breakpoint according to Note [Tickish passes] and the
    
    391
    +    -- comment on the instance declaration of @XBreakpoint 'TickishPassStg@.
    
    392
    +
    
    393
    +-- | Constructs textual information about a type.
    
    394
    +pprType :: IfaceType -> SDoc
    
    395
    +pprType = entry (text "type") . ppr
    
    396
    +
    
    397
    +-- | Constructs textual information about type variables.
    
    398
    +pprTypeVariables :: [IfaceTvBndr] -> SDoc
    
    399
    +pprTypeVariables = entry (text "type variables") .
    
    400
    +                   vcatOrNone                    .
    
    401
    +                   map pprTypeVariableBinder
    
    402
    +
    
    403
    +-- | Constructs textual information about a type variable binder.
    
    404
    +pprTypeVariableBinder :: IfaceTvBndr -> SDoc
    
    405
    +pprTypeVariableBinder (name, kind) = ppr name <+> text "::" <+> ppr kind
    
    406
    +
    
    407
    +-- | Constructs textual information about variables.
    
    408
    +pprVariables :: [Maybe (IfaceIdBndr, Word)] -> SDoc
    
    409
    +pprVariables = entry (text "variables") . vcatOrNone . map pprVariable
    
    410
    +
    
    411
    +-- | Constructs textual information about a single variable.
    
    412
    +pprVariable :: Maybe (IfaceIdBndr, Word) -> SDoc
    
    413
    +pprVariable = maybe (text "<unknown>") (pprVariableBinder . fst)
    
    414
    +
    
    415
    +-- | Constructs textual information about a variable binder.
    
    416
    +pprVariableBinder :: IfaceIdBndr -> SDoc
    
    417
    +pprVariableBinder (multiplicity, name, type_)
    
    418
    +    = text "%" <> ppr multiplicity <+>
    
    419
    +      ppr name <+> text "::" <+> ppr type_
    
    420
    +
    
    421
    +-- | Constructs textual information about a source breakpoint corresponding to a
    
    422
    +--   bytecode breakpoint.
    
    423
    +pprCorrespondingSourceBreakpoint :: Module
    
    424
    +                                    -- ^ The enclosing module
    
    425
    +                                 -> Either InternalBreakLoc BreakpointId
    
    426
    +                                    -- ^ A reference to the source breakpoint
    
    427
    +                                 -> SDoc
    
    428
    +                                    -- ^ The textual information
    
    429
    +pprCorrespondingSourceBreakpoint currentModule
    
    430
    +    = entry (text "corresponding source breakpoint") .
    
    431
    +      pprBreakpointID currentModule                  .
    
    432
    +      either internalBreakLoc id
    
    433
    +
    
    434
    +-- | Constructs textual information about the ID of a source breakpoint.
    
    435
    +pprBreakpointID :: Module       -- ^ The enclosing module
    
    436
    +                -> BreakpointId -- ^ The ID of the source breakpoint
    
    437
    +                -> SDoc         -- ^ The textual information
    
    438
    +pprBreakpointID currentModule BreakpointId {..}
    
    439
    +    | bi_tick_mod == currentModule = indexDoc
    
    440
    +    | otherwise                    = indexDoc                 <+>
    
    441
    +                                     text "in"                <+>
    
    442
    +                                     quotes (ppr bi_tick_mod)
    
    443
    +    where
    
    444
    +
    
    445
    +    indexDoc :: SDoc
    
    446
    +    indexDoc = ppr bi_tick_index
    
    447
    +
    
    448
    +-- | Constructs textual information about static-pointer table entries.
    
    449
    +pprStaticPointerTableEntries :: [SptEntry] -> SDoc
    
    450
    +pprStaticPointerTableEntries = entry (text "static-pointer table entries") .
    
    451
    +                               vcatOrNone                                  .
    
    452
    +                               map pprStaticPointerTableEntry
    
    453
    +
    
    454
    +-- | Constructs textual information about a single static-pointer table entry.
    
    455
    +pprStaticPointerTableEntry :: SptEntry -> SDoc
    
    456
    +pprStaticPointerTableEntry (SptEntry name fingerprint)
    
    457
    +    = ppr fingerprint <> text ":" <+> ppr name
    
    458
    +
    
    459
    +-- | Constructs textual information about HPC info.
    
    460
    +pprHPCInfo :: Strict.Maybe ByteCodeHpcInfo -> SDoc
    
    461
    +pprHPCInfo = entry (text "HPC information") .
    
    462
    +             Strict.maybe (text "<none>") pprActualHPCInfo
    
    463
    +
    
    464
    +-- | Constructs textual information about actual HPC info.
    
    465
    +pprActualHPCInfo :: ByteCodeHpcInfo -> SDoc
    
    466
    +pprActualHPCInfo ByteCodeHpcInfo {..}
    
    467
    +    = vcat [
    
    468
    +               pprHPCInfoHash $ bchi_hash,
    
    469
    +               pprModuleName  $ bchi_module_name,
    
    470
    +               pprTickBoxName $ bchi_tickbox_name,
    
    471
    +               pprTickCount   $ bchi_tick_count
    
    472
    +           ]
    
    473
    +    where
    
    474
    +
    
    475
    +-- | Constructs textual information about the hash of HPC info.
    
    476
    +pprHPCInfoHash :: Int -> SDoc
    
    477
    +pprHPCInfoHash = entry (text "hash") . pprFixedSizeNatural
    
    478
    +
    
    479
    +-- | Constructs textual information about a module name.
    
    480
    +pprModuleName :: ShortByteString -> SDoc
    
    481
    +pprModuleName = entry (text "module name") .
    
    482
    +                text                       .
    
    483
    +                utf8DecodeShortByteString
    
    484
    +
    
    485
    +-- | Constructs textual information about a tick box name.
    
    486
    +pprTickBoxName :: ShortByteString -> SDoc
    
    487
    +pprTickBoxName = entry (text "tick box name") .
    
    488
    +                 text                         .
    
    489
    +                 utf8DecodeShortByteString
    
    490
    +
    
    491
    +-- | Constructs textual information about a number of tick counts.
    
    492
    +pprTickCount :: Int -> SDoc
    
    493
    +pprTickCount = entry (text "number of ticks") . ppr
    
    494
    +
    
    495
    +-- | Constructs a hexadecimal representation of a natural number such that the
    
    496
    +--   number of hexadecimal digits fits the number of bits used to represent the
    
    497
    +--   natural number.
    
    498
    +pprFixedSizeNatural :: (Integral a, FiniteBits a) => a -> SDoc
    
    499
    +pprFixedSizeNatural num
    
    500
    +    = assert (num >= 0) $
    
    501
    +      text $ replicate (digitCount - length unpadded) '0' ++ unpadded
    
    502
    +    where
    
    503
    +
    
    504
    +    digitCount :: Int
    
    505
    +    digitCount = (finiteBitSize num + 3) `div` 4
    
    506
    +
    
    507
    +    unpadded :: String
    
    508
    +    unpadded = showHex num ""
    
    509
    +
    
    510
    +-- | Constructs a textual representation of a boolean, interpreting 'True' and
    
    511
    +--   'False' as “yes” and “no”, respectively.
    
    512
    +noOrYes :: Bool -> SDoc
    
    513
    +noOrYes bool = text (if bool then "yes" else "no")
    
    514
    +
    
    515
    +-- | Constructs an entry in a list of textual data representations.
    
    516
    +entry :: SDoc -- ^ The title of the entry
    
    517
    +      -> SDoc -- ^ The contents of the entry
    
    518
    +      -> SDoc -- ^ The entry
    
    519
    +entry title content = hang (title <> text ":") 2 content
    
    520
    +
    
    521
    +-- | Composes documents vertically in general, but presents an empty document
    
    522
    +--   list as `<none`>.
    
    523
    +vcatOrNone :: [SDoc] -> SDoc
    
    524
    +vcatOrNone []   = text "<none>"
    
    525
    +vcatOrNone docs = vcat docs
    
    526
    +
    
    527
    +-- | Composes documents vertically in general, but presents an empty document
    
    528
    +--   list as `<empty`>.
    
    529
    +vcatOrEmpty :: [SDoc] -> SDoc
    
    530
    +vcatOrEmpty []   = text "<empty>"
    
    531
    +vcatOrEmpty docs = vcat docs

  • compiler/ghc.cabal.in
    ... ... @@ -217,6 +217,7 @@ Library
    217 217
             GHC.ByteCode.Linker
    
    218 218
             GHC.ByteCode.Recomp.Binary
    
    219 219
             GHC.ByteCode.Serialize
    
    220
    +        GHC.ByteCode.Show
    
    220 221
             GHC.ByteCode.Types
    
    221 222
             GHC.Cmm
    
    222 223
             GHC.Cmm.BlockId
    

  • docs/users_guide/using.rst
    ... ... @@ -421,6 +421,13 @@ The available mode flags are:
    421 421
         Read the interface in ⟨file⟩ and dump it as text to ``stdout``. For
    
    422 422
         example ``ghc --show-iface M.hi``.
    
    423 423
     
    
    424
    +.. ghc-flag:: --show-byte-code ⟨file⟩
    
    425
    +    :shortdesc: display contents of a bytecode file.
    
    426
    +    :type: mode
    
    427
    +    :category: modes
    
    428
    +
    
    429
    +    Read a bytecode file and dump relevant parts of it as text to ``stdout``.
    
    430
    +
    
    424 431
     .. ghc-flag:: --supported-extensions
    
    425 432
                   --supported-languages
    
    426 433
         :shortdesc: display the supported language extensions
    

  • ghc/GHC/Driver/Session/Mode.hs
    ... ... @@ -77,6 +77,7 @@ isShowGhciUsageMode _ = False
    77 77
     
    
    78 78
     data PostLoadMode
    
    79 79
       = ShowInterface FilePath  -- ghc --show-iface
    
    80
    +  | ShowByteCode FilePath   -- ghc --show-byte-code
    
    80 81
       | DoMkDependHS            -- ghc -M
    
    81 82
       | StopBefore StopPhase    -- ghc -E | -C | -S
    
    82 83
                                 -- StopBefore StopLn is the default
    
    ... ... @@ -101,6 +102,9 @@ showUnitsMode = mkPostLoadMode ShowPackages
    101 102
     showInterfaceMode :: FilePath -> Mode
    
    102 103
     showInterfaceMode fp = mkPostLoadMode (ShowInterface fp)
    
    103 104
     
    
    105
    +showByteCodeMode :: FilePath -> Mode
    
    106
    +showByteCodeMode fp = mkPostLoadMode (ShowByteCode fp)
    
    107
    +
    
    104 108
     stopBeforeMode :: StopPhase -> Mode
    
    105 109
     stopBeforeMode phase = mkPostLoadMode (StopBefore phase)
    
    106 110
     
    
    ... ... @@ -231,9 +235,11 @@ mode_flags =
    231 235
             replaceSpace ' ' = '-'
    
    232 236
             replaceSpace c   = c
    
    233 237
       ] ++
    
    234
    -      ------- interfaces ----------------------------------------------------
    
    235
    -  [ defFlag "-show-iface"  (HasArg (\f -> setMode (showInterfaceMode f)
    
    238
    +      ------- textual output of generated data -----------------------------
    
    239
    +  [ defFlag "-show-iface"     (HasArg (\f -> setMode (showInterfaceMode f)
    
    236 240
                                                    "--show-iface"))
    
    241
    +  , defFlag "-show-byte-code" (HasArg (\f -> setMode (showByteCodeMode  f)
    
    242
    +                                               "--show-byte-code"))
    
    237 243
     
    
    238 244
           ------- primary modes ------------------------------------------------
    
    239 245
       , defFlag "c"            (PassFlag (\f -> do setMode (stopBeforeMode NoStop) f
    

  • ghc/Main.hs
    ... ... @@ -73,6 +73,8 @@ import GHC.SysTools.BaseDir
    73 73
     import GHC.Iface.Load
    
    74 74
     import GHC.Iface.Recomp.Binary ( fingerprintBinMem )
    
    75 75
     
    
    76
    +import GHC.ByteCode.Show ( showByteCode )
    
    77
    +
    
    76 78
     import GHC.Tc.Utils.Monad      ( initIfaceCheck )
    
    77 79
     import GHC.Iface.Errors.Ppr
    
    78 80
     
    
    ... ... @@ -267,6 +269,7 @@ main' postLoadMode units dflags0 args flagWarnings = do
    267 269
                                                         (hsc_units  hsc_env)
    
    268 270
                                                         (hsc_NC     hsc_env)
    
    269 271
                                                         f
    
    272
    +       ShowByteCode f         -> liftIO $ showByteCode logger hsc_env f
    
    270 273
            DoMake                 -> doMake units srcs
    
    271 274
            DoMkDependHS           -> doMkDependHS (map fst srcs)
    
    272 275
            StopBefore p           -> liftIO (oneShot hsc_env p srcs)
    

  • testsuite/tests/show-bytecode/Example.hs
    1
    +{-# LANGUAGE StaticPointers #-}
    
    2
    +
    
    3
    +module Example where
    
    4
    +
    
    5
    +import Numeric.Natural (Natural)
    
    6
    +import GHC.StaticPtr (StaticPtr)
    
    7
    +
    
    8
    +fibonaccis :: [Natural]
    
    9
    +fibonaccis = 0 : positiveFibonaccis where
    
    10
    +
    
    11
    +    positiveFibonaccis :: [Natural]
    
    12
    +    positiveFibonaccis = 1 : zipWith (+) fibonaccis positiveFibonaccis
    
    13
    +
    
    14
    +fibonaccisPtr :: StaticPtr [Natural]
    
    15
    +fibonaccisPtr = static fibonaccis
    
    16
    +
    
    17
    +divides :: Integral a => a -> a -> Bool
    
    18
    +k `divides` n = n `mod` k == 0
    
    19
    +
    
    20
    +primes :: [Natural]
    
    21
    +primes = 2 : filter isPrime [3 ..] where
    
    22
    +
    
    23
    +    isPrime :: Natural -> Bool
    
    24
    +    isPrime n = not (any (`divides` n) (takeWhile ((<= n) . (^ 2)) primes))
    
    25
    +
    
    26
    +primesPtr :: StaticPtr [Natural]
    
    27
    +primesPtr = static primes
    
    28
    +
    
    29
    +data BinTree a b = Leaf a | Node (BinTree a b) b (BinTree a b)
    
    30
    +
    
    31
    +data PerfectTree a = PerfectTree a | Nested (PerfectTree (a, a))

  • testsuite/tests/show-bytecode/Makefile
    1
    +TOP=../..
    
    2
    +include $(TOP)/mk/boilerplate.mk
    
    3
    +include $(TOP)/mk/test.mk
    
    4
    +
    
    5
    +compile   = '$(TEST_HC)' $(TEST_HC_OPTS) -fbyte-code -fwrite-byte-code -no-link
    
    6
    +show      = '$(TEST_HC)' $(TEST_HC_OPTS) --show-byte-code
    
    7
    +normalize = sed -E -e ' \
    
    8
    +                s/_r[[:alnum:]]+/_@name_suffix@/g; \
    
    9
    +                s/[[:xdigit:]]{32}/@hash@/g; \
    
    10
    +                s/word [[:digit:]]{4}[[:digit:]]*/word @large_word@/ \
    
    11
    +            '
    
    12
    +
    
    13
    +show-bytecode-vanilla:
    
    14
    +	$(compile) Example.hs
    
    15
    +	$(show) Example.gbc | $(normalize)
    
    16
    +
    
    17
    +show-bytecode-breakpoints:
    
    18
    +	$(compile) -fbreak-points Example.hs
    
    19
    +	$(show) Example.gbc | $(normalize)
    
    20
    +
    
    21
    +show-bytecode-hpc:
    
    22
    +	$(compile) -fhpc Example.hs
    
    23
    +	$(show) Example.gbc | $(normalize)

  • testsuite/tests/show-bytecode/all.T
    1
    +test(
    
    2
    +    'show-bytecode-vanilla',
    
    3
    +    extra_files(['Example.hs']),
    
    4
    +    makefile_test,
    
    5
    +    []
    
    6
    +)
    
    7
    +test(
    
    8
    +    'show-bytecode-breakpoints',
    
    9
    +    extra_files(['Example.hs']),
    
    10
    +    makefile_test,
    
    11
    +    []
    
    12
    +)
    
    13
    +test(
    
    14
    +    'show-bytecode-hpc',
    
    15
    +    extra_files(['Example.hs']),
    
    16
    +    makefile_test,
    
    17
    +    []
    
    18
    +)

  • testsuite/tests/show-bytecode/show-bytecode-breakpoints.stdout
    1
    +[1 of 1] Compiling Example          ( Example.hs, Example.gbc )
    
    2
    +name: Example
    
    3
    +hash: @hash@
    
    4
    +objects:
    
    5
    +  ordinary object ‘primesPtr’:
    
    6
    +    arity: 0
    
    7
    +    literals:
    
    8
    +      top-level string "Example"
    
    9
    +      top-level string "main"
    
    10
    +      cost center of breakpoint 0
    
    11
    +    utilized items:
    
    12
    +      break array of module ‘Example’
    
    13
    +      item named ‘static_ptr1’
    
    14
    +      item named ‘$dTypeable2_@name_suffix@’
    
    15
    +      item named ‘$fIsStaticStaticPtr’
    
    16
    +  static-construction object ‘static_ptr1’:
    
    17
    +    data constructor name: StaticPtr
    
    18
    +    lifted: yes
    
    19
    +    literals:
    
    20
    +      word @large_word@
    
    21
    +      word @large_word@
    
    22
    +    utilized items:
    
    23
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    24
    +      item named ‘primes’
    
    25
    +  static-construction object ‘static_ptr1_sat_@name_suffix@’:
    
    26
    +    data constructor name: StaticPtrInfo
    
    27
    +    lifted: yes
    
    28
    +    literals: <none>
    
    29
    +    utilized items:
    
    30
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    31
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    32
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    33
    +  ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    34
    +    arity: 0
    
    35
    +    literals: top-level string "main"
    
    36
    +    utilized items:
    
    37
    +      ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    38
    +        arity: 0
    
    39
    +        literals: <none>
    
    40
    +        utilized items: item named ‘unpackCString#’
    
    41
    +  ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    42
    +    arity: 0
    
    43
    +    literals: top-level string "Example"
    
    44
    +    utilized items:
    
    45
    +      ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    46
    +        arity: 0
    
    47
    +        literals: <none>
    
    48
    +        utilized items: item named ‘unpackCString#’
    
    49
    +  static-construction object ‘static_ptr1_sat_@name_suffix@’:
    
    50
    +    data constructor name: (,)
    
    51
    +    lifted: yes
    
    52
    +    literals: <none>
    
    53
    +    utilized items:
    
    54
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    55
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    56
    +  static-construction object ‘static_ptr1_sat_@name_suffix@’:
    
    57
    +    data constructor name: I#
    
    58
    +    lifted: yes
    
    59
    +    literals: word 27
    
    60
    +    utilized items: <none>
    
    61
    +  static-construction object ‘static_ptr1_sat_@name_suffix@’:
    
    62
    +    data constructor name: I#
    
    63
    +    lifted: yes
    
    64
    +    literals: word 20
    
    65
    +    utilized items: <none>
    
    66
    +  ordinary object ‘primes’:
    
    67
    +    arity: 0
    
    68
    +    literals:
    
    69
    +      top-level string "Example"
    
    70
    +      top-level string "main"
    
    71
    +      cost center of breakpoint 2
    
    72
    +      info table of ‘:’
    
    73
    +    utilized items:
    
    74
    +      break array of module ‘Example’
    
    75
    +      ordinary object ‘primes_sat_@name_suffix@’:
    
    76
    +        arity: 0
    
    77
    +        literals:
    
    78
    +          top-level string "Example"
    
    79
    +          top-level string "main"
    
    80
    +          cost center of breakpoint 1
    
    81
    +        utilized items:
    
    82
    +          break array of module ‘Example’
    
    83
    +          ordinary object ‘primes_sat_@name_suffix@’:
    
    84
    +            arity: 0
    
    85
    +            literals: <none>
    
    86
    +            utilized items:
    
    87
    +              ordinary object ‘primes_sat_@name_suffix@’:
    
    88
    +                arity: 0
    
    89
    +                literals:
    
    90
    +                  word 3
    
    91
    +                  info table of ‘IS’
    
    92
    +                utilized items:
    
    93
    +                  item named ‘$fNumNatural’
    
    94
    +                  item named ‘fromInteger’
    
    95
    +              item named ‘$fEnumNatural’
    
    96
    +              item named ‘enumFrom’
    
    97
    +          item named ‘isPrime_@name_suffix@’
    
    98
    +          item named ‘filter’
    
    99
    +      ordinary object ‘primes_sat_@name_suffix@’:
    
    100
    +        arity: 0
    
    101
    +        literals:
    
    102
    +          word 2
    
    103
    +          info table of ‘IS’
    
    104
    +        utilized items:
    
    105
    +          item named ‘$fNumNatural’
    
    106
    +          item named ‘fromInteger’
    
    107
    +  ordinary object ‘isPrime_@name_suffix@’:
    
    108
    +    arity: 1
    
    109
    +    literals:
    
    110
    +      top-level string "Example"
    
    111
    +      top-level string "main"
    
    112
    +      cost center of breakpoint 9
    
    113
    +    utilized items:
    
    114
    +      break array of module ‘Example’
    
    115
    +      ordinary object ‘isPrime_sat_@name_suffix@’:
    
    116
    +        arity: 1
    
    117
    +        literals:
    
    118
    +          top-level string "Example"
    
    119
    +          top-level string "main"
    
    120
    +          cost center of breakpoint 8
    
    121
    +        utilized items:
    
    122
    +          break array of module ‘Example’
    
    123
    +          ordinary object ‘isPrime_sat_@name_suffix@’:
    
    124
    +            arity: 1
    
    125
    +            literals:
    
    126
    +              top-level string "Example"
    
    127
    +              top-level string "main"
    
    128
    +              cost center of breakpoint 7
    
    129
    +            utilized items:
    
    130
    +              break array of module ‘Example’
    
    131
    +              ordinary object ‘isPrime_sat_@name_suffix@’:
    
    132
    +                arity: 1
    
    133
    +                literals:
    
    134
    +                  top-level string "Example"
    
    135
    +                  top-level string "main"
    
    136
    +                  cost center of breakpoint 6
    
    137
    +                utilized items:
    
    138
    +                  break array of module ‘Example’
    
    139
    +                  ordinary object ‘isPrime_sat_@name_suffix@’:
    
    140
    +                    arity: 0
    
    141
    +                    literals:
    
    142
    +                      top-level string "Example"
    
    143
    +                      top-level string "main"
    
    144
    +                      cost center of breakpoint 5
    
    145
    +                      word 2
    
    146
    +                      info table of ‘IS’
    
    147
    +                    utilized items:
    
    148
    +                      break array of module ‘Example’
    
    149
    +                      ordinary object ‘v_@name_suffix@’:
    
    150
    +                        arity: 0
    
    151
    +                        literals: <none>
    
    152
    +                        utilized items:
    
    153
    +                          item named ‘$fIntegralInteger’
    
    154
    +                          item named ‘$fNumNatural’
    
    155
    +                          item named ‘^’
    
    156
    +                      ordinary object ‘pap_@name_suffix@’:
    
    157
    +                        arity: 3
    
    158
    +                        literals: <none>
    
    159
    +                        utilized items: <none>
    
    160
    +                  ordinary object ‘isPrime_sat_@name_suffix@’:
    
    161
    +                    arity: 1
    
    162
    +                    literals:
    
    163
    +                      top-level string "Example"
    
    164
    +                      top-level string "main"
    
    165
    +                      cost center of breakpoint 4
    
    166
    +                    utilized items:
    
    167
    +                      break array of module ‘Example’
    
    168
    +                      ordinary object ‘v_@name_suffix@’:
    
    169
    +                        arity: 0
    
    170
    +                        literals: <none>
    
    171
    +                        utilized items:
    
    172
    +                          item named ‘$fOrdNatural’
    
    173
    +                          item named ‘<=’
    
    174
    +                      ordinary object ‘pap_@name_suffix@’:
    
    175
    +                        arity: 3
    
    176
    +                        literals: <none>
    
    177
    +                        utilized items: <none>
    
    178
    +                  item named ‘.’
    
    179
    +              item named ‘primes’
    
    180
    +              item named ‘takeWhile’
    
    181
    +          ordinary object ‘isPrime_sat_@name_suffix@’:
    
    182
    +            arity: 1
    
    183
    +            literals:
    
    184
    +              top-level string "Example"
    
    185
    +              top-level string "main"
    
    186
    +              cost center of breakpoint 3
    
    187
    +            utilized items:
    
    188
    +              break array of module ‘Example’
    
    189
    +              ordinary object ‘pap_@name_suffix@’:
    
    190
    +                arity: 2
    
    191
    +                literals: <none>
    
    192
    +                utilized items:
    
    193
    +                  item named ‘$fIntegralNatural’
    
    194
    +                  item named ‘divides’
    
    195
    +          item named ‘$fFoldableList’
    
    196
    +          item named ‘any’
    
    197
    +      item named ‘not’
    
    198
    +  ordinary object ‘fibonaccisPtr’:
    
    199
    +    arity: 0
    
    200
    +    literals:
    
    201
    +      top-level string "Example"
    
    202
    +      top-level string "main"
    
    203
    +      cost center of breakpoint 10
    
    204
    +    utilized items:
    
    205
    +      break array of module ‘Example’
    
    206
    +      item named ‘static_ptr’
    
    207
    +      item named ‘$dTypeable2_@name_suffix@’
    
    208
    +      item named ‘$fIsStaticStaticPtr’
    
    209
    +  static-construction object ‘static_ptr’:
    
    210
    +    data constructor name: StaticPtr
    
    211
    +    lifted: yes
    
    212
    +    literals:
    
    213
    +      word @large_word@
    
    214
    +      word @large_word@
    
    215
    +    utilized items:
    
    216
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    217
    +      item named ‘fibonaccis’
    
    218
    +  static-construction object ‘static_ptr_sat_@name_suffix@’:
    
    219
    +    data constructor name: StaticPtrInfo
    
    220
    +    lifted: yes
    
    221
    +    literals: <none>
    
    222
    +    utilized items:
    
    223
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    224
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    225
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    226
    +  ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    227
    +    arity: 0
    
    228
    +    literals: top-level string "main"
    
    229
    +    utilized items:
    
    230
    +      ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    231
    +        arity: 0
    
    232
    +        literals: <none>
    
    233
    +        utilized items: item named ‘unpackCString#’
    
    234
    +  ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    235
    +    arity: 0
    
    236
    +    literals: top-level string "Example"
    
    237
    +    utilized items:
    
    238
    +      ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    239
    +        arity: 0
    
    240
    +        literals: <none>
    
    241
    +        utilized items: item named ‘unpackCString#’
    
    242
    +  static-construction object ‘static_ptr_sat_@name_suffix@’:
    
    243
    +    data constructor name: (,)
    
    244
    +    lifted: yes
    
    245
    +    literals: <none>
    
    246
    +    utilized items:
    
    247
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    248
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    249
    +  static-construction object ‘static_ptr_sat_@name_suffix@’:
    
    250
    +    data constructor name: I#
    
    251
    +    lifted: yes
    
    252
    +    literals: word 15
    
    253
    +    utilized items: <none>
    
    254
    +  static-construction object ‘static_ptr_sat_@name_suffix@’:
    
    255
    +    data constructor name: I#
    
    256
    +    lifted: yes
    
    257
    +    literals: word 24
    
    258
    +    utilized items: <none>
    
    259
    +  ordinary object ‘fibonaccis’:
    
    260
    +    arity: 0
    
    261
    +    literals:
    
    262
    +      top-level string "Example"
    
    263
    +      top-level string "main"
    
    264
    +      cost center of breakpoint 11
    
    265
    +      info table of ‘:’
    
    266
    +    utilized items:
    
    267
    +      break array of module ‘Example’
    
    268
    +      ordinary object ‘fibonaccis_sat_@name_suffix@’:
    
    269
    +        arity: 0
    
    270
    +        literals:
    
    271
    +          word 0
    
    272
    +          info table of ‘IS’
    
    273
    +        utilized items:
    
    274
    +          item named ‘$fNumNatural’
    
    275
    +          item named ‘fromInteger’
    
    276
    +      item named ‘positiveFibonaccis_@name_suffix@’
    
    277
    +  ordinary object ‘positiveFibonaccis_@name_suffix@’:
    
    278
    +    arity: 0
    
    279
    +    literals:
    
    280
    +      top-level string "Example"
    
    281
    +      top-level string "main"
    
    282
    +      cost center of breakpoint 13
    
    283
    +      info table of ‘:’
    
    284
    +    utilized items:
    
    285
    +      break array of module ‘Example’
    
    286
    +      ordinary object ‘positiveFibonaccis_sat_@name_suffix@’:
    
    287
    +        arity: 0
    
    288
    +        literals:
    
    289
    +          top-level string "Example"
    
    290
    +          top-level string "main"
    
    291
    +          cost center of breakpoint 12
    
    292
    +        utilized items:
    
    293
    +          break array of module ‘Example’
    
    294
    +          ordinary object ‘positiveFibonaccis_sat_@name_suffix@’:
    
    295
    +            arity: 0
    
    296
    +            literals: <none>
    
    297
    +            utilized items:
    
    298
    +              item named ‘$fNumNatural’
    
    299
    +              item named ‘+’
    
    300
    +          item named ‘positiveFibonaccis_@name_suffix@’
    
    301
    +          item named ‘fibonaccis’
    
    302
    +          item named ‘zipWith’
    
    303
    +      ordinary object ‘positiveFibonaccis_sat_@name_suffix@’:
    
    304
    +        arity: 0
    
    305
    +        literals:
    
    306
    +          word 1
    
    307
    +          info table of ‘IS’
    
    308
    +        utilized items:
    
    309
    +          item named ‘$fNumNatural’
    
    310
    +          item named ‘fromInteger’
    
    311
    +  ordinary object ‘$dTypeable2_@name_suffix@’:
    
    312
    +    arity: 0
    
    313
    +    literals: <none>
    
    314
    +    utilized items:
    
    315
    +      item named ‘$dTypeable_@name_suffix@’
    
    316
    +      item named ‘$dTypeable1_@name_suffix@’
    
    317
    +      item named ‘mkTrAppChecked’
    
    318
    +  ordinary object ‘$dTypeable1_@name_suffix@’:
    
    319
    +    arity: 0
    
    320
    +    literals: info table of ‘[]’
    
    321
    +    utilized items:
    
    322
    +      item named ‘$tcList’
    
    323
    +      item named ‘mkTrCon’
    
    324
    +  ordinary object ‘$dTypeable_@name_suffix@’:
    
    325
    +    arity: 0
    
    326
    +    literals: info table of ‘[]’
    
    327
    +    utilized items:
    
    328
    +      item named ‘$tcNatural’
    
    329
    +      item named ‘mkTrCon’
    
    330
    +  static-construction object ‘$tc'Nested’:
    
    331
    +    data constructor name: TyCon
    
    332
    +    lifted: yes
    
    333
    +    literals:
    
    334
    +      word @large_word@
    
    335
    +      word @large_word@
    
    336
    +      word 1
    
    337
    +    utilized items:
    
    338
    +      item named ‘$trModule’
    
    339
    +      item named ‘$tc'Nested2_@name_suffix@’
    
    340
    +      item named ‘$krep17_@name_suffix@’
    
    341
    +  static-construction object ‘$tc'Nested2_@name_suffix@’:
    
    342
    +    data constructor name: TrNameS
    
    343
    +    lifted: yes
    
    344
    +    literals: address ‘$tc'Nested1_@name_suffix@’
    
    345
    +    utilized items: <none>
    
    346
    +  static-construction object ‘$krep17_@name_suffix@’:
    
    347
    +    data constructor name: KindRepFun
    
    348
    +    lifted: yes
    
    349
    +    literals: <none>
    
    350
    +    utilized items:
    
    351
    +      item named ‘$krep16_@name_suffix@’
    
    352
    +      item named ‘$krep13_@name_suffix@’
    
    353
    +  static-construction object ‘$krep16_@name_suffix@’:
    
    354
    +    data constructor name: KindRepTyConApp
    
    355
    +    lifted: yes
    
    356
    +    literals: <none>
    
    357
    +    utilized items:
    
    358
    +      item named ‘$tcPerfectTree’
    
    359
    +      item named ‘$krep15_@name_suffix@’
    
    360
    +  static-construction object ‘$krep15_@name_suffix@’:
    
    361
    +    data constructor name: :
    
    362
    +    lifted: yes
    
    363
    +    literals: <none>
    
    364
    +    utilized items:
    
    365
    +      item named ‘$krep4_@name_suffix@’
    
    366
    +      item named ‘[]’
    
    367
    +  static-construction object ‘$tc'PerfectTree’:
    
    368
    +    data constructor name: TyCon
    
    369
    +    lifted: yes
    
    370
    +    literals:
    
    371
    +      word @large_word@
    
    372
    +      word @large_word@
    
    373
    +      word 1
    
    374
    +    utilized items:
    
    375
    +      item named ‘$trModule’
    
    376
    +      item named ‘$tc'PerfectTree2_@name_suffix@’
    
    377
    +      item named ‘$krep14_@name_suffix@’
    
    378
    +  static-construction object ‘$tc'PerfectTree2_@name_suffix@’:
    
    379
    +    data constructor name: TrNameS
    
    380
    +    lifted: yes
    
    381
    +    literals: address ‘$tc'PerfectTree1_@name_suffix@’
    
    382
    +    utilized items: <none>
    
    383
    +  static-construction object ‘$krep14_@name_suffix@’:
    
    384
    +    data constructor name: KindRepFun
    
    385
    +    lifted: yes
    
    386
    +    literals: <none>
    
    387
    +    utilized items:
    
    388
    +      item named ‘$krep1_@name_suffix@’
    
    389
    +      item named ‘$krep13_@name_suffix@’
    
    390
    +  static-construction object ‘$krep13_@name_suffix@’:
    
    391
    +    data constructor name: KindRepTyConApp
    
    392
    +    lifted: yes
    
    393
    +    literals: <none>
    
    394
    +    utilized items:
    
    395
    +      item named ‘$tcPerfectTree’
    
    396
    +      item named ‘$krep12_@name_suffix@’
    
    397
    +  static-construction object ‘$krep12_@name_suffix@’:
    
    398
    +    data constructor name: :
    
    399
    +    lifted: yes
    
    400
    +    literals: <none>
    
    401
    +    utilized items:
    
    402
    +      item named ‘$krep1_@name_suffix@’
    
    403
    +      item named ‘[]’
    
    404
    +  static-construction object ‘$tcPerfectTree’:
    
    405
    +    data constructor name: TyCon
    
    406
    +    lifted: yes
    
    407
    +    literals:
    
    408
    +      word @large_word@
    
    409
    +      word @large_word@
    
    410
    +      word 0
    
    411
    +    utilized items:
    
    412
    +      item named ‘$trModule’
    
    413
    +      item named ‘$tcPerfectTree2_@name_suffix@’
    
    414
    +      item named ‘krep$*Arr*’
    
    415
    +  static-construction object ‘$tcPerfectTree2_@name_suffix@’:
    
    416
    +    data constructor name: TrNameS
    
    417
    +    lifted: yes
    
    418
    +    literals: address ‘$tcPerfectTree1_@name_suffix@’
    
    419
    +    utilized items: <none>
    
    420
    +  static-construction object ‘$tc'Node’:
    
    421
    +    data constructor name: TyCon
    
    422
    +    lifted: yes
    
    423
    +    literals:
    
    424
    +      word @large_word@
    
    425
    +      word @large_word@
    
    426
    +      word 2
    
    427
    +    utilized items:
    
    428
    +      item named ‘$trModule’
    
    429
    +      item named ‘$tc'Node2_@name_suffix@’
    
    430
    +      item named ‘$krep11_@name_suffix@’
    
    431
    +  static-construction object ‘$tc'Node2_@name_suffix@’:
    
    432
    +    data constructor name: TrNameS
    
    433
    +    lifted: yes
    
    434
    +    literals: address ‘$tc'Node1_@name_suffix@’
    
    435
    +    utilized items: <none>
    
    436
    +  static-construction object ‘$krep11_@name_suffix@’:
    
    437
    +    data constructor name: KindRepFun
    
    438
    +    lifted: yes
    
    439
    +    literals: <none>
    
    440
    +    utilized items:
    
    441
    +      item named ‘$krep7_@name_suffix@’
    
    442
    +      item named ‘$krep10_@name_suffix@’
    
    443
    +  static-construction object ‘$krep10_@name_suffix@’:
    
    444
    +    data constructor name: KindRepFun
    
    445
    +    lifted: yes
    
    446
    +    literals: <none>
    
    447
    +    utilized items:
    
    448
    +      item named ‘$krep_@name_suffix@’
    
    449
    +      item named ‘$krep9_@name_suffix@’
    
    450
    +  static-construction object ‘$krep9_@name_suffix@’:
    
    451
    +    data constructor name: KindRepFun
    
    452
    +    lifted: yes
    
    453
    +    literals: <none>
    
    454
    +    utilized items:
    
    455
    +      item named ‘$krep7_@name_suffix@’
    
    456
    +      item named ‘$krep7_@name_suffix@’
    
    457
    +  static-construction object ‘$tc'Leaf’:
    
    458
    +    data constructor name: TyCon
    
    459
    +    lifted: yes
    
    460
    +    literals:
    
    461
    +      word @large_word@
    
    462
    +      word @large_word@
    
    463
    +      word 2
    
    464
    +    utilized items:
    
    465
    +      item named ‘$trModule’
    
    466
    +      item named ‘$tc'Leaf2_@name_suffix@’
    
    467
    +      item named ‘$krep8_@name_suffix@’
    
    468
    +  static-construction object ‘$tc'Leaf2_@name_suffix@’:
    
    469
    +    data constructor name: TrNameS
    
    470
    +    lifted: yes
    
    471
    +    literals: address ‘$tc'Leaf1_@name_suffix@’
    
    472
    +    utilized items: <none>
    
    473
    +  static-construction object ‘$krep8_@name_suffix@’:
    
    474
    +    data constructor name: KindRepFun
    
    475
    +    lifted: yes
    
    476
    +    literals: <none>
    
    477
    +    utilized items:
    
    478
    +      item named ‘$krep1_@name_suffix@’
    
    479
    +      item named ‘$krep7_@name_suffix@’
    
    480
    +  static-construction object ‘$krep7_@name_suffix@’:
    
    481
    +    data constructor name: KindRepTyConApp
    
    482
    +    lifted: yes
    
    483
    +    literals: <none>
    
    484
    +    utilized items:
    
    485
    +      item named ‘$tcBinTree’
    
    486
    +      item named ‘$krep6_@name_suffix@’
    
    487
    +  static-construction object ‘$krep6_@name_suffix@’:
    
    488
    +    data constructor name: :
    
    489
    +    lifted: yes
    
    490
    +    literals: <none>
    
    491
    +    utilized items:
    
    492
    +      item named ‘$krep1_@name_suffix@’
    
    493
    +      item named ‘$krep5_@name_suffix@’
    
    494
    +  static-construction object ‘$krep5_@name_suffix@’:
    
    495
    +    data constructor name: :
    
    496
    +    lifted: yes
    
    497
    +    literals: <none>
    
    498
    +    utilized items:
    
    499
    +      item named ‘$krep_@name_suffix@’
    
    500
    +      item named ‘[]’
    
    501
    +  static-construction object ‘$tcBinTree’:
    
    502
    +    data constructor name: TyCon
    
    503
    +    lifted: yes
    
    504
    +    literals:
    
    505
    +      word @large_word@
    
    506
    +      word @large_word@
    
    507
    +      word 0
    
    508
    +    utilized items:
    
    509
    +      item named ‘$trModule’
    
    510
    +      item named ‘$tcBinTree2_@name_suffix@’
    
    511
    +      item named ‘krep$*->*->*’
    
    512
    +  static-construction object ‘$tcBinTree2_@name_suffix@’:
    
    513
    +    data constructor name: TrNameS
    
    514
    +    lifted: yes
    
    515
    +    literals: address ‘$tcBinTree1_@name_suffix@’
    
    516
    +    utilized items: <none>
    
    517
    +  static-construction object ‘$krep4_@name_suffix@’:
    
    518
    +    data constructor name: KindRepTyConApp
    
    519
    +    lifted: yes
    
    520
    +    literals: <none>
    
    521
    +    utilized items:
    
    522
    +      item named ‘$tcTuple2’
    
    523
    +      item named ‘$krep3_@name_suffix@’
    
    524
    +  static-construction object ‘$krep3_@name_suffix@’:
    
    525
    +    data constructor name: :
    
    526
    +    lifted: yes
    
    527
    +    literals: <none>
    
    528
    +    utilized items:
    
    529
    +      item named ‘$krep1_@name_suffix@’
    
    530
    +      item named ‘$krep2_@name_suffix@’
    
    531
    +  static-construction object ‘$krep2_@name_suffix@’:
    
    532
    +    data constructor name: :
    
    533
    +    lifted: yes
    
    534
    +    literals: <none>
    
    535
    +    utilized items:
    
    536
    +      item named ‘$krep1_@name_suffix@’
    
    537
    +      item named ‘[]’
    
    538
    +  static-construction object ‘$krep1_@name_suffix@’:
    
    539
    +    data constructor name: KindRepVar
    
    540
    +    lifted: yes
    
    541
    +    literals: word 0
    
    542
    +    utilized items: <none>
    
    543
    +  static-construction object ‘$krep_@name_suffix@’:
    
    544
    +    data constructor name: KindRepVar
    
    545
    +    lifted: yes
    
    546
    +    literals: word 1
    
    547
    +    utilized items: <none>
    
    548
    +  static-construction object ‘$trModule’:
    
    549
    +    data constructor name: Module
    
    550
    +    lifted: yes
    
    551
    +    literals: <none>
    
    552
    +    utilized items:
    
    553
    +      item named ‘$trModule2_@name_suffix@’
    
    554
    +      item named ‘$trModule4_@name_suffix@’
    
    555
    +  static-construction object ‘$trModule4_@name_suffix@’:
    
    556
    +    data constructor name: TrNameS
    
    557
    +    lifted: yes
    
    558
    +    literals: address ‘$trModule3_@name_suffix@’
    
    559
    +    utilized items: <none>
    
    560
    +  static-construction object ‘$trModule2_@name_suffix@’:
    
    561
    +    data constructor name: TrNameS
    
    562
    +    lifted: yes
    
    563
    +    literals: address ‘$trModule1_@name_suffix@’
    
    564
    +    utilized items: <none>
    
    565
    +  ordinary object ‘divides’:
    
    566
    +    arity: 3
    
    567
    +    literals: <none>
    
    568
    +    utilized items:
    
    569
    +      ordinary object ‘$dReal_@name_suffix@’:
    
    570
    +        arity: 0
    
    571
    +        literals: <none>
    
    572
    +        utilized items:
    
    573
    +          ordinary object ‘$dNum_@name_suffix@’:
    
    574
    +            arity: 0
    
    575
    +            literals: <none>
    
    576
    +            utilized items:
    
    577
    +              ordinary object ‘$dEq_@name_suffix@’:
    
    578
    +                arity: 0
    
    579
    +                literals: <none>
    
    580
    +                utilized items:
    
    581
    +                  ordinary object ‘$dEq1_@name_suffix@’:
    
    582
    +                    arity: 0
    
    583
    +                    literals: <none>
    
    584
    +                    utilized items:
    
    585
    +                      ordinary object ‘bcprep_@name_suffix@’:
    
    586
    +                        arity: 5
    
    587
    +                        literals:
    
    588
    +                          top-level string "Example"
    
    589
    +                          top-level string "main"
    
    590
    +                          cost center of breakpoint 15
    
    591
    +                        utilized items:
    
    592
    +                          break array of module ‘Example’
    
    593
    +                          ordinary object ‘divides_sat_@name_suffix@’:
    
    594
    +                            arity: 1
    
    595
    +                            literals:
    
    596
    +                              word 0
    
    597
    +                              info table of ‘IS’
    
    598
    +                            utilized items: item named ‘fromInteger’
    
    599
    +                          ordinary object ‘divides_sat_@name_suffix@’:
    
    600
    +                            arity: 3
    
    601
    +                            literals:
    
    602
    +                              top-level string "Example"
    
    603
    +                              top-level string "main"
    
    604
    +                              cost center of breakpoint 14
    
    605
    +                            utilized items:
    
    606
    +                              break array of module ‘Example’
    
    607
    +                              item named ‘mod’
    
    608
    +                          item named ‘==’
    
    609
    +                  item named ‘$p1Ord’
    
    610
    +              item named ‘$p2Real’
    
    611
    +          item named ‘$p1Real’
    
    612
    +      item named ‘$p1Integral’
    
    613
    +  ordinary object ‘Node’:
    
    614
    +    arity: 3
    
    615
    +    literals: info table of ‘Node’
    
    616
    +    utilized items: <none>
    
    617
    +  ordinary object ‘Leaf’:
    
    618
    +    arity: 1
    
    619
    +    literals: info table of ‘Leaf’
    
    620
    +    utilized items: <none>
    
    621
    +  ordinary object ‘Nested’:
    
    622
    +    arity: 1
    
    623
    +    literals: info table of ‘Nested’
    
    624
    +    utilized items: <none>
    
    625
    +  ordinary object ‘PerfectTree’:
    
    626
    +    arity: 1
    
    627
    +    literals: info table of ‘PerfectTree’
    
    628
    +    utilized items: <none>
    
    629
    +data constructor info tables:
    
    630
    +  info table of ‘PerfectTree’:
    
    631
    +    number of words for pointers: 1
    
    632
    +    number of words for non-pointers: 0
    
    633
    +  info table of ‘Nested’:
    
    634
    +    number of words for pointers: 1
    
    635
    +    number of words for non-pointers: 0
    
    636
    +  info table of ‘Leaf’:
    
    637
    +    number of words for pointers: 1
    
    638
    +    number of words for non-pointers: 0
    
    639
    +  info table of ‘Node’:
    
    640
    +    number of words for pointers: 3
    
    641
    +    number of words for non-pointers: 0
    
    642
    +top-level strings:
    
    643
    +  $tc'Nested1_@name_suffix@: "'Nested"
    
    644
    +  $tc'PerfectTree1_@name_suffix@: "'PerfectTree"
    
    645
    +  $tcPerfectTree1_@name_suffix@: "PerfectTree"
    
    646
    +  $tc'Node1_@name_suffix@: "'Node"
    
    647
    +  $tc'Leaf1_@name_suffix@: "'Leaf"
    
    648
    +  $tcBinTree1_@name_suffix@: "BinTree"
    
    649
    +  $trModule3_@name_suffix@: "Example"
    
    650
    +  $trModule1_@name_suffix@: "main"
    
    651
    +breakpoints:
    
    652
    +  source breakpoints:
    
    653
    +    source breakpoint 0:
    
    654
    +      source span: Example.hs:18:17-25
    
    655
    +      declaration path: divides
    
    656
    +      free variables:
    
    657
    +        k
    
    658
    +        n
    
    659
    +    source breakpoint 1:
    
    660
    +      source span: Example.hs:18:17-30
    
    661
    +      declaration path: divides
    
    662
    +      free variables:
    
    663
    +        k
    
    664
    +        n
    
    665
    +    source breakpoint 2:
    
    666
    +      source span: Example.hs:24:27-37
    
    667
    +      declaration path:
    
    668
    +        primes
    
    669
    +        isPrime
    
    670
    +      free variables: n
    
    671
    +    source breakpoint 3:
    
    672
    +      source span: Example.hs:24:53-56
    
    673
    +      declaration path:
    
    674
    +        primes
    
    675
    +        isPrime
    
    676
    +      free variables: n
    
    677
    +    source breakpoint 4:
    
    678
    +      source span: Example.hs:24:62-64
    
    679
    +      declaration path:
    
    680
    +        primes
    
    681
    +        isPrime
    
    682
    +      free variables: <none>
    
    683
    +    source breakpoint 5:
    
    684
    +      source span: Example.hs:24:52-65
    
    685
    +      declaration path:
    
    686
    +        primes
    
    687
    +        isPrime
    
    688
    +      free variables: n
    
    689
    +    source breakpoint 6:
    
    690
    +      source span: Example.hs:24:41-73
    
    691
    +      declaration path:
    
    692
    +        primes
    
    693
    +        isPrime
    
    694
    +      free variables: n
    
    695
    +    source breakpoint 7:
    
    696
    +      source span: Example.hs:24:22-74
    
    697
    +      declaration path:
    
    698
    +        primes
    
    699
    +        isPrime
    
    700
    +      free variables: n
    
    701
    +    source breakpoint 8:
    
    702
    +      source span: Example.hs:24:17-75
    
    703
    +      declaration path:
    
    704
    +        primes
    
    705
    +        isPrime
    
    706
    +      free variables: n
    
    707
    +    source breakpoint 9:
    
    708
    +      source span: Example.hs:21:14-34
    
    709
    +      declaration path: primes
    
    710
    +      free variables: isPrime
    
    711
    +    source breakpoint 10:
    
    712
    +      source span: Example.hs:21:10-34
    
    713
    +      declaration path: primes
    
    714
    +      free variables: isPrime
    
    715
    +    source breakpoint 11:
    
    716
    +      source span: Example.hs:27:13-25
    
    717
    +      declaration path: primesPtr
    
    718
    +      free variables: <none>
    
    719
    +    source breakpoint 12:
    
    720
    +      source span: Example.hs:12:30-70
    
    721
    +      declaration path:
    
    722
    +        fibonaccis
    
    723
    +        positiveFibonaccis
    
    724
    +      free variables: positiveFibonaccis
    
    725
    +    source breakpoint 13:
    
    726
    +      source span: Example.hs:12:26-70
    
    727
    +      declaration path:
    
    728
    +        fibonaccis
    
    729
    +        positiveFibonaccis
    
    730
    +      free variables: positiveFibonaccis
    
    731
    +    source breakpoint 14:
    
    732
    +      source span: Example.hs:9:14-35
    
    733
    +      declaration path: fibonaccis
    
    734
    +      free variables: positiveFibonaccis
    
    735
    +    source breakpoint 15:
    
    736
    +      source span: Example.hs:15:17-33
    
    737
    +      declaration path: fibonaccisPtr
    
    738
    +      free variables: <none>
    
    739
    +  bytecode breakpoints:
    
    740
    +    bytecode breakpoint 0:
    
    741
    +      type: StaticPtr [Natural]
    
    742
    +      type variables: <none>
    
    743
    +      variables: <none>
    
    744
    +      corresponding source breakpoint: 11
    
    745
    +    bytecode breakpoint 1:
    
    746
    +      type: [Natural]
    
    747
    +      type variables: <none>
    
    748
    +      variables: <unknown>
    
    749
    +      corresponding source breakpoint: 9
    
    750
    +    bytecode breakpoint 2:
    
    751
    +      type: [Natural]
    
    752
    +      type variables: <none>
    
    753
    +      variables: <unknown>
    
    754
    +      corresponding source breakpoint: 10
    
    755
    +    bytecode breakpoint 3:
    
    756
    +      type: Natural -> Bool
    
    757
    +      type variables: <none>
    
    758
    +      variables: %'Many n :: Natural
    
    759
    +      corresponding source breakpoint: 2
    
    760
    +    bytecode breakpoint 4:
    
    761
    +      type: Natural -> Bool
    
    762
    +      type variables: <none>
    
    763
    +      variables: %'Many n :: Natural
    
    764
    +      corresponding source breakpoint: 3
    
    765
    +    bytecode breakpoint 5:
    
    766
    +      type: Natural -> Natural
    
    767
    +      type variables: <none>
    
    768
    +      variables: <none>
    
    769
    +      corresponding source breakpoint: 4
    
    770
    +    bytecode breakpoint 6:
    
    771
    +      type: Natural -> Bool
    
    772
    +      type variables: <none>
    
    773
    +      variables: %'Many n :: Natural
    
    774
    +      corresponding source breakpoint: 5
    
    775
    +    bytecode breakpoint 7:
    
    776
    +      type: [Natural]
    
    777
    +      type variables: <none>
    
    778
    +      variables: %'Many n :: Natural
    
    779
    +      corresponding source breakpoint: 6
    
    780
    +    bytecode breakpoint 8:
    
    781
    +      type: Bool
    
    782
    +      type variables: <none>
    
    783
    +      variables: %'Many n :: Natural
    
    784
    +      corresponding source breakpoint: 7
    
    785
    +    bytecode breakpoint 9:
    
    786
    +      type: Bool
    
    787
    +      type variables: <none>
    
    788
    +      variables: %'Many n :: Natural
    
    789
    +      corresponding source breakpoint: 8
    
    790
    +    bytecode breakpoint 10:
    
    791
    +      type: StaticPtr [Natural]
    
    792
    +      type variables: <none>
    
    793
    +      variables: <none>
    
    794
    +      corresponding source breakpoint: 15
    
    795
    +    bytecode breakpoint 11:
    
    796
    +      type: [Natural]
    
    797
    +      type variables: <none>
    
    798
    +      variables: <unknown>
    
    799
    +      corresponding source breakpoint: 14
    
    800
    +    bytecode breakpoint 12:
    
    801
    +      type: [Natural]
    
    802
    +      type variables: <none>
    
    803
    +      variables: <unknown>
    
    804
    +      corresponding source breakpoint: 12
    
    805
    +    bytecode breakpoint 13:
    
    806
    +      type: [Natural]
    
    807
    +      type variables: <none>
    
    808
    +      variables: <unknown>
    
    809
    +      corresponding source breakpoint: 13
    
    810
    +    bytecode breakpoint 14:
    
    811
    +      type: a
    
    812
    +      type variables: a :: *
    
    813
    +      variables:
    
    814
    +        %'Many eta :: a
    
    815
    +        %'Many eta1 :: a
    
    816
    +      corresponding source breakpoint: 0
    
    817
    +    bytecode breakpoint 15:
    
    818
    +      type: Bool
    
    819
    +      type variables: a :: *
    
    820
    +      variables:
    
    821
    +        %'Many eta :: a
    
    822
    +        %'Many eta1 :: a
    
    823
    +      corresponding source breakpoint: 1
    
    824
    +static-pointer table entries:
    
    825
    +  @hash@: static_ptr
    
    826
    +  @hash@: static_ptr1
    
    827
    +HPC information: <none>
    
    828
    +

  • testsuite/tests/show-bytecode/show-bytecode-hpc.stdout
    1
    +[1 of 1] Compiling Example          ( Example.hs, Example.gbc )
    
    2
    +name: Example
    
    3
    +hash: @hash@
    
    4
    +objects:
    
    5
    +  ordinary object ‘primesPtr’:
    
    6
    +    arity: 0
    
    7
    +    literals:
    
    8
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    9
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    10
    +    utilized items:
    
    11
    +      item named ‘static_ptr1’
    
    12
    +      item named ‘$dTypeable2_@name_suffix@’
    
    13
    +      item named ‘$fIsStaticStaticPtr’
    
    14
    +  static-construction object ‘static_ptr1’:
    
    15
    +    data constructor name: StaticPtr
    
    16
    +    lifted: yes
    
    17
    +    literals:
    
    18
    +      word @large_word@
    
    19
    +      word @large_word@
    
    20
    +    utilized items:
    
    21
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    22
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    23
    +  static-construction object ‘static_ptr1_sat_@name_suffix@’:
    
    24
    +    data constructor name: StaticPtrInfo
    
    25
    +    lifted: yes
    
    26
    +    literals: <none>
    
    27
    +    utilized items:
    
    28
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    29
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    30
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    31
    +  ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    32
    +    arity: 0
    
    33
    +    literals: top-level string "main"
    
    34
    +    utilized items:
    
    35
    +      ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    36
    +        arity: 0
    
    37
    +        literals: <none>
    
    38
    +        utilized items: item named ‘unpackCString#’
    
    39
    +  ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    40
    +    arity: 0
    
    41
    +    literals: top-level string "Example"
    
    42
    +    utilized items:
    
    43
    +      ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    44
    +        arity: 0
    
    45
    +        literals: <none>
    
    46
    +        utilized items: item named ‘unpackCString#’
    
    47
    +  static-construction object ‘static_ptr1_sat_@name_suffix@’:
    
    48
    +    data constructor name: (,)
    
    49
    +    lifted: yes
    
    50
    +    literals: <none>
    
    51
    +    utilized items:
    
    52
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    53
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    54
    +  static-construction object ‘static_ptr1_sat_@name_suffix@’:
    
    55
    +    data constructor name: I#
    
    56
    +    lifted: yes
    
    57
    +    literals: word 27
    
    58
    +    utilized items: <none>
    
    59
    +  static-construction object ‘static_ptr1_sat_@name_suffix@’:
    
    60
    +    data constructor name: I#
    
    61
    +    lifted: yes
    
    62
    +    literals: word 20
    
    63
    +    utilized items: <none>
    
    64
    +  ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    65
    +    arity: 0
    
    66
    +    literals: label ‘_hpc_tickboxes_Example_hpc’
    
    67
    +    utilized items: item named ‘primes’
    
    68
    +  ordinary object ‘primes2_@name_suffix@’:
    
    69
    +    arity: 0
    
    70
    +    literals: label ‘_hpc_tickboxes_Example_hpc’
    
    71
    +    utilized items:
    
    72
    +      ordinary object ‘primes2_sat_@name_suffix@’:
    
    73
    +        arity: 0
    
    74
    +        literals: label ‘_hpc_tickboxes_Example_hpc’
    
    75
    +        utilized items:
    
    76
    +          ordinary object ‘primes2_sat_@name_suffix@’:
    
    77
    +            arity: 0
    
    78
    +            literals:
    
    79
    +              label ‘_hpc_tickboxes_Example_hpc’
    
    80
    +              word 3
    
    81
    +              info table of ‘IS’
    
    82
    +            utilized items:
    
    83
    +              item named ‘$fNumNatural’
    
    84
    +              item named ‘fromInteger’
    
    85
    +          item named ‘$fEnumNatural’
    
    86
    +          item named ‘enumFrom’
    
    87
    +      ordinary object ‘primes2_sat_@name_suffix@’:
    
    88
    +        arity: 0
    
    89
    +        literals: label ‘_hpc_tickboxes_Example_hpc’
    
    90
    +        utilized items: item named ‘isPrime_@name_suffix@’
    
    91
    +      item named ‘filter’
    
    92
    +  ordinary object ‘isPrime_@name_suffix@’:
    
    93
    +    arity: 1
    
    94
    +    literals:
    
    95
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    96
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    97
    +    utilized items:
    
    98
    +      ordinary object ‘isPrime_sat_@name_suffix@’:
    
    99
    +        arity: 1
    
    100
    +        literals: label ‘_hpc_tickboxes_Example_hpc’
    
    101
    +        utilized items:
    
    102
    +          ordinary object ‘isPrime_sat_@name_suffix@’:
    
    103
    +            arity: 1
    
    104
    +            literals: label ‘_hpc_tickboxes_Example_hpc’
    
    105
    +            utilized items:
    
    106
    +              ordinary object ‘isPrime_sat_@name_suffix@’:
    
    107
    +                arity: 0
    
    108
    +                literals: label ‘_hpc_tickboxes_Example_hpc’
    
    109
    +                utilized items: item named ‘primes’
    
    110
    +              ordinary object ‘isPrime_sat_@name_suffix@’:
    
    111
    +                arity: 1
    
    112
    +                literals: label ‘_hpc_tickboxes_Example_hpc’
    
    113
    +                utilized items:
    
    114
    +                  ordinary object ‘isPrime_sat_@name_suffix@’:
    
    115
    +                    arity: 0
    
    116
    +                    literals: label ‘_hpc_tickboxes_Example_hpc’
    
    117
    +                    utilized items:
    
    118
    +                      ordinary object ‘v_@name_suffix@’:
    
    119
    +                        arity: 0
    
    120
    +                        literals: label ‘_hpc_tickboxes_Example_hpc’
    
    121
    +                        utilized items:
    
    122
    +                          item named ‘$fIntegralInteger’
    
    123
    +                          item named ‘$fNumNatural’
    
    124
    +                          item named ‘^’
    
    125
    +                      ordinary object ‘v1_@name_suffix@’:
    
    126
    +                        arity: 0
    
    127
    +                        literals:
    
    128
    +                          label ‘_hpc_tickboxes_Example_hpc’
    
    129
    +                          word 2
    
    130
    +                          info table of ‘IS’
    
    131
    +                        utilized items: <none>
    
    132
    +                      ordinary object ‘pap_@name_suffix@’:
    
    133
    +                        arity: 3
    
    134
    +                        literals: <none>
    
    135
    +                        utilized items: <none>
    
    136
    +                  ordinary object ‘isPrime_sat_@name_suffix@’:
    
    137
    +                    arity: 1
    
    138
    +                    literals: label ‘_hpc_tickboxes_Example_hpc’
    
    139
    +                    utilized items:
    
    140
    +                      ordinary object ‘v_@name_suffix@’:
    
    141
    +                        arity: 0
    
    142
    +                        literals: label ‘_hpc_tickboxes_Example_hpc’
    
    143
    +                        utilized items:
    
    144
    +                          item named ‘$fOrdNatural’
    
    145
    +                          item named ‘<=’
    
    146
    +                      ordinary object ‘v1_@name_suffix@’:
    
    147
    +                        arity: 1
    
    148
    +                        literals: label ‘_hpc_tickboxes_Example_hpc’
    
    149
    +                        utilized items: <none>
    
    150
    +                      ordinary object ‘pap_@name_suffix@’:
    
    151
    +                        arity: 3
    
    152
    +                        literals: <none>
    
    153
    +                        utilized items: <none>
    
    154
    +                  item named ‘.’
    
    155
    +              item named ‘takeWhile’
    
    156
    +          ordinary object ‘isPrime_sat_@name_suffix@’:
    
    157
    +            arity: 1
    
    158
    +            literals: label ‘_hpc_tickboxes_Example_hpc’
    
    159
    +            utilized items:
    
    160
    +              ordinary object ‘v_@name_suffix@’:
    
    161
    +                arity: 0
    
    162
    +                literals: label ‘_hpc_tickboxes_Example_hpc’
    
    163
    +                utilized items:
    
    164
    +                  ordinary object ‘pap_@name_suffix@’:
    
    165
    +                    arity: 2
    
    166
    +                    literals: <none>
    
    167
    +                    utilized items:
    
    168
    +                      item named ‘$fIntegralNatural’
    
    169
    +                      item named ‘divides’
    
    170
    +              ordinary object ‘v1_@name_suffix@’:
    
    171
    +                arity: 1
    
    172
    +                literals: label ‘_hpc_tickboxes_Example_hpc’
    
    173
    +                utilized items: <none>
    
    174
    +              ordinary object ‘pap_@name_suffix@’:
    
    175
    +                arity: 3
    
    176
    +                literals: <none>
    
    177
    +                utilized items: <none>
    
    178
    +          item named ‘$fFoldableList’
    
    179
    +          item named ‘any’
    
    180
    +      item named ‘not’
    
    181
    +  ordinary object ‘primes’:
    
    182
    +    arity: 0
    
    183
    +    literals:
    
    184
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    185
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    186
    +      info table of ‘:’
    
    187
    +    utilized items:
    
    188
    +      item named ‘primes2_@name_suffix@’
    
    189
    +      item named ‘primes1_@name_suffix@’
    
    190
    +  ordinary object ‘primes1_@name_suffix@’:
    
    191
    +    arity: 0
    
    192
    +    literals:
    
    193
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    194
    +      word 2
    
    195
    +      info table of ‘IS’
    
    196
    +    utilized items:
    
    197
    +      item named ‘$fNumNatural’
    
    198
    +      item named ‘fromInteger’
    
    199
    +  ordinary object ‘fibonaccisPtr’:
    
    200
    +    arity: 0
    
    201
    +    literals:
    
    202
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    203
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    204
    +    utilized items:
    
    205
    +      item named ‘static_ptr’
    
    206
    +      item named ‘$dTypeable2_@name_suffix@’
    
    207
    +      item named ‘$fIsStaticStaticPtr’
    
    208
    +  static-construction object ‘static_ptr’:
    
    209
    +    data constructor name: StaticPtr
    
    210
    +    lifted: yes
    
    211
    +    literals:
    
    212
    +      word @large_word@
    
    213
    +      word @large_word@
    
    214
    +    utilized items:
    
    215
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    216
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    217
    +  static-construction object ‘static_ptr_sat_@name_suffix@’:
    
    218
    +    data constructor name: StaticPtrInfo
    
    219
    +    lifted: yes
    
    220
    +    literals: <none>
    
    221
    +    utilized items:
    
    222
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    223
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    224
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    225
    +  ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    226
    +    arity: 0
    
    227
    +    literals: top-level string "main"
    
    228
    +    utilized items:
    
    229
    +      ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    230
    +        arity: 0
    
    231
    +        literals: <none>
    
    232
    +        utilized items: item named ‘unpackCString#’
    
    233
    +  ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    234
    +    arity: 0
    
    235
    +    literals: top-level string "Example"
    
    236
    +    utilized items:
    
    237
    +      ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    238
    +        arity: 0
    
    239
    +        literals: <none>
    
    240
    +        utilized items: item named ‘unpackCString#’
    
    241
    +  static-construction object ‘static_ptr_sat_@name_suffix@’:
    
    242
    +    data constructor name: (,)
    
    243
    +    lifted: yes
    
    244
    +    literals: <none>
    
    245
    +    utilized items:
    
    246
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    247
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    248
    +  static-construction object ‘static_ptr_sat_@name_suffix@’:
    
    249
    +    data constructor name: I#
    
    250
    +    lifted: yes
    
    251
    +    literals: word 15
    
    252
    +    utilized items: <none>
    
    253
    +  static-construction object ‘static_ptr_sat_@name_suffix@’:
    
    254
    +    data constructor name: I#
    
    255
    +    lifted: yes
    
    256
    +    literals: word 24
    
    257
    +    utilized items: <none>
    
    258
    +  ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    259
    +    arity: 0
    
    260
    +    literals: label ‘_hpc_tickboxes_Example_hpc’
    
    261
    +    utilized items: item named ‘fibonaccis’
    
    262
    +  ordinary object ‘positiveFibonaccis1_@name_suffix@’:
    
    263
    +    arity: 0
    
    264
    +    literals:
    
    265
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    266
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    267
    +      info table of ‘:’
    
    268
    +    utilized items:
    
    269
    +      item named ‘positiveFibonaccis2_@name_suffix@’
    
    270
    +      item named ‘positiveFibonaccis_@name_suffix@’
    
    271
    +  ordinary object ‘positiveFibonaccis2_@name_suffix@’:
    
    272
    +    arity: 0
    
    273
    +    literals: label ‘_hpc_tickboxes_Example_hpc’
    
    274
    +    utilized items:
    
    275
    +      ordinary object ‘positiveFibonaccis2_sat_@name_suffix@’:
    
    276
    +        arity: 0
    
    277
    +        literals: label ‘_hpc_tickboxes_Example_hpc’
    
    278
    +        utilized items: item named ‘positiveFibonaccis1_@name_suffix@’
    
    279
    +      ordinary object ‘positiveFibonaccis2_sat_@name_suffix@’:
    
    280
    +        arity: 0
    
    281
    +        literals: label ‘_hpc_tickboxes_Example_hpc’
    
    282
    +        utilized items: item named ‘fibonaccis’
    
    283
    +      ordinary object ‘positiveFibonaccis2_sat_@name_suffix@’:
    
    284
    +        arity: 0
    
    285
    +        literals: label ‘_hpc_tickboxes_Example_hpc’
    
    286
    +        utilized items:
    
    287
    +          item named ‘$fNumNatural’
    
    288
    +          item named ‘+’
    
    289
    +      item named ‘zipWith’
    
    290
    +  ordinary object ‘fibonaccis’:
    
    291
    +    arity: 0
    
    292
    +    literals:
    
    293
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    294
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    295
    +      info table of ‘:’
    
    296
    +    utilized items:
    
    297
    +      item named ‘fibonaccis2_@name_suffix@’
    
    298
    +      item named ‘fibonaccis1_@name_suffix@’
    
    299
    +  ordinary object ‘fibonaccis2_@name_suffix@’:
    
    300
    +    arity: 0
    
    301
    +    literals: label ‘_hpc_tickboxes_Example_hpc’
    
    302
    +    utilized items: item named ‘positiveFibonaccis1_@name_suffix@’
    
    303
    +  ordinary object ‘positiveFibonaccis_@name_suffix@’:
    
    304
    +    arity: 0
    
    305
    +    literals:
    
    306
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    307
    +      word 1
    
    308
    +      info table of ‘IS’
    
    309
    +    utilized items:
    
    310
    +      item named ‘$fNumNatural’
    
    311
    +      item named ‘fromInteger’
    
    312
    +  ordinary object ‘fibonaccis1_@name_suffix@’:
    
    313
    +    arity: 0
    
    314
    +    literals:
    
    315
    +      label ‘_hpc_tickboxes_Example_hpc’
    
    316
    +      word 0
    
    317
    +      info table of ‘IS’
    
    318
    +    utilized items:
    
    319
    +      item named ‘$fNumNatural’
    
    320
    +      item named ‘fromInteger’
    
    321
    +  ordinary object ‘$dTypeable2_@name_suffix@’:
    
    322
    +    arity: 0
    
    323
    +    literals: <none>
    
    324
    +    utilized items:
    
    325
    +      item named ‘$dTypeable_@name_suffix@’
    
    326
    +      item named ‘$dTypeable1_@name_suffix@’
    
    327
    +      item named ‘mkTrAppChecked’
    
    328
    +  ordinary object ‘$dTypeable1_@name_suffix@’:
    
    329
    +    arity: 0
    
    330
    +    literals: info table of ‘[]’
    
    331
    +    utilized items:
    
    332
    +      item named ‘$tcList’
    
    333
    +      item named ‘mkTrCon’
    
    334
    +  ordinary object ‘$dTypeable_@name_suffix@’:
    
    335
    +    arity: 0
    
    336
    +    literals: info table of ‘[]’
    
    337
    +    utilized items:
    
    338
    +      item named ‘$tcNatural’
    
    339
    +      item named ‘mkTrCon’
    
    340
    +  static-construction object ‘$tc'Nested’:
    
    341
    +    data constructor name: TyCon
    
    342
    +    lifted: yes
    
    343
    +    literals:
    
    344
    +      word @large_word@
    
    345
    +      word @large_word@
    
    346
    +      word 1
    
    347
    +    utilized items:
    
    348
    +      item named ‘$trModule’
    
    349
    +      item named ‘$tc'Nested2_@name_suffix@’
    
    350
    +      item named ‘$krep17_@name_suffix@’
    
    351
    +  static-construction object ‘$tc'Nested2_@name_suffix@’:
    
    352
    +    data constructor name: TrNameS
    
    353
    +    lifted: yes
    
    354
    +    literals: address ‘$tc'Nested1_@name_suffix@’
    
    355
    +    utilized items: <none>
    
    356
    +  static-construction object ‘$krep17_@name_suffix@’:
    
    357
    +    data constructor name: KindRepFun
    
    358
    +    lifted: yes
    
    359
    +    literals: <none>
    
    360
    +    utilized items:
    
    361
    +      item named ‘$krep16_@name_suffix@’
    
    362
    +      item named ‘$krep13_@name_suffix@’
    
    363
    +  static-construction object ‘$krep16_@name_suffix@’:
    
    364
    +    data constructor name: KindRepTyConApp
    
    365
    +    lifted: yes
    
    366
    +    literals: <none>
    
    367
    +    utilized items:
    
    368
    +      item named ‘$tcPerfectTree’
    
    369
    +      item named ‘$krep15_@name_suffix@’
    
    370
    +  static-construction object ‘$krep15_@name_suffix@’:
    
    371
    +    data constructor name: :
    
    372
    +    lifted: yes
    
    373
    +    literals: <none>
    
    374
    +    utilized items:
    
    375
    +      item named ‘$krep4_@name_suffix@’
    
    376
    +      item named ‘[]’
    
    377
    +  static-construction object ‘$tc'PerfectTree’:
    
    378
    +    data constructor name: TyCon
    
    379
    +    lifted: yes
    
    380
    +    literals:
    
    381
    +      word @large_word@
    
    382
    +      word @large_word@
    
    383
    +      word 1
    
    384
    +    utilized items:
    
    385
    +      item named ‘$trModule’
    
    386
    +      item named ‘$tc'PerfectTree2_@name_suffix@’
    
    387
    +      item named ‘$krep14_@name_suffix@’
    
    388
    +  static-construction object ‘$tc'PerfectTree2_@name_suffix@’:
    
    389
    +    data constructor name: TrNameS
    
    390
    +    lifted: yes
    
    391
    +    literals: address ‘$tc'PerfectTree1_@name_suffix@’
    
    392
    +    utilized items: <none>
    
    393
    +  static-construction object ‘$krep14_@name_suffix@’:
    
    394
    +    data constructor name: KindRepFun
    
    395
    +    lifted: yes
    
    396
    +    literals: <none>
    
    397
    +    utilized items:
    
    398
    +      item named ‘$krep1_@name_suffix@’
    
    399
    +      item named ‘$krep13_@name_suffix@’
    
    400
    +  static-construction object ‘$krep13_@name_suffix@’:
    
    401
    +    data constructor name: KindRepTyConApp
    
    402
    +    lifted: yes
    
    403
    +    literals: <none>
    
    404
    +    utilized items:
    
    405
    +      item named ‘$tcPerfectTree’
    
    406
    +      item named ‘$krep12_@name_suffix@’
    
    407
    +  static-construction object ‘$krep12_@name_suffix@’:
    
    408
    +    data constructor name: :
    
    409
    +    lifted: yes
    
    410
    +    literals: <none>
    
    411
    +    utilized items:
    
    412
    +      item named ‘$krep1_@name_suffix@’
    
    413
    +      item named ‘[]’
    
    414
    +  static-construction object ‘$tcPerfectTree’:
    
    415
    +    data constructor name: TyCon
    
    416
    +    lifted: yes
    
    417
    +    literals:
    
    418
    +      word @large_word@
    
    419
    +      word @large_word@
    
    420
    +      word 0
    
    421
    +    utilized items:
    
    422
    +      item named ‘$trModule’
    
    423
    +      item named ‘$tcPerfectTree2_@name_suffix@’
    
    424
    +      item named ‘krep$*Arr*’
    
    425
    +  static-construction object ‘$tcPerfectTree2_@name_suffix@’:
    
    426
    +    data constructor name: TrNameS
    
    427
    +    lifted: yes
    
    428
    +    literals: address ‘$tcPerfectTree1_@name_suffix@’
    
    429
    +    utilized items: <none>
    
    430
    +  static-construction object ‘$tc'Node’:
    
    431
    +    data constructor name: TyCon
    
    432
    +    lifted: yes
    
    433
    +    literals:
    
    434
    +      word @large_word@
    
    435
    +      word @large_word@
    
    436
    +      word 2
    
    437
    +    utilized items:
    
    438
    +      item named ‘$trModule’
    
    439
    +      item named ‘$tc'Node2_@name_suffix@’
    
    440
    +      item named ‘$krep11_@name_suffix@’
    
    441
    +  static-construction object ‘$tc'Node2_@name_suffix@’:
    
    442
    +    data constructor name: TrNameS
    
    443
    +    lifted: yes
    
    444
    +    literals: address ‘$tc'Node1_@name_suffix@’
    
    445
    +    utilized items: <none>
    
    446
    +  static-construction object ‘$krep11_@name_suffix@’:
    
    447
    +    data constructor name: KindRepFun
    
    448
    +    lifted: yes
    
    449
    +    literals: <none>
    
    450
    +    utilized items:
    
    451
    +      item named ‘$krep7_@name_suffix@’
    
    452
    +      item named ‘$krep10_@name_suffix@’
    
    453
    +  static-construction object ‘$krep10_@name_suffix@’:
    
    454
    +    data constructor name: KindRepFun
    
    455
    +    lifted: yes
    
    456
    +    literals: <none>
    
    457
    +    utilized items:
    
    458
    +      item named ‘$krep_@name_suffix@’
    
    459
    +      item named ‘$krep9_@name_suffix@’
    
    460
    +  static-construction object ‘$krep9_@name_suffix@’:
    
    461
    +    data constructor name: KindRepFun
    
    462
    +    lifted: yes
    
    463
    +    literals: <none>
    
    464
    +    utilized items:
    
    465
    +      item named ‘$krep7_@name_suffix@’
    
    466
    +      item named ‘$krep7_@name_suffix@’
    
    467
    +  static-construction object ‘$tc'Leaf’:
    
    468
    +    data constructor name: TyCon
    
    469
    +    lifted: yes
    
    470
    +    literals:
    
    471
    +      word @large_word@
    
    472
    +      word @large_word@
    
    473
    +      word 2
    
    474
    +    utilized items:
    
    475
    +      item named ‘$trModule’
    
    476
    +      item named ‘$tc'Leaf2_@name_suffix@’
    
    477
    +      item named ‘$krep8_@name_suffix@’
    
    478
    +  static-construction object ‘$tc'Leaf2_@name_suffix@’:
    
    479
    +    data constructor name: TrNameS
    
    480
    +    lifted: yes
    
    481
    +    literals: address ‘$tc'Leaf1_@name_suffix@’
    
    482
    +    utilized items: <none>
    
    483
    +  static-construction object ‘$krep8_@name_suffix@’:
    
    484
    +    data constructor name: KindRepFun
    
    485
    +    lifted: yes
    
    486
    +    literals: <none>
    
    487
    +    utilized items:
    
    488
    +      item named ‘$krep1_@name_suffix@’
    
    489
    +      item named ‘$krep7_@name_suffix@’
    
    490
    +  static-construction object ‘$krep7_@name_suffix@’:
    
    491
    +    data constructor name: KindRepTyConApp
    
    492
    +    lifted: yes
    
    493
    +    literals: <none>
    
    494
    +    utilized items:
    
    495
    +      item named ‘$tcBinTree’
    
    496
    +      item named ‘$krep6_@name_suffix@’
    
    497
    +  static-construction object ‘$krep6_@name_suffix@’:
    
    498
    +    data constructor name: :
    
    499
    +    lifted: yes
    
    500
    +    literals: <none>
    
    501
    +    utilized items:
    
    502
    +      item named ‘$krep1_@name_suffix@’
    
    503
    +      item named ‘$krep5_@name_suffix@’
    
    504
    +  static-construction object ‘$krep5_@name_suffix@’:
    
    505
    +    data constructor name: :
    
    506
    +    lifted: yes
    
    507
    +    literals: <none>
    
    508
    +    utilized items:
    
    509
    +      item named ‘$krep_@name_suffix@’
    
    510
    +      item named ‘[]’
    
    511
    +  static-construction object ‘$tcBinTree’:
    
    512
    +    data constructor name: TyCon
    
    513
    +    lifted: yes
    
    514
    +    literals:
    
    515
    +      word @large_word@
    
    516
    +      word @large_word@
    
    517
    +      word 0
    
    518
    +    utilized items:
    
    519
    +      item named ‘$trModule’
    
    520
    +      item named ‘$tcBinTree2_@name_suffix@’
    
    521
    +      item named ‘krep$*->*->*’
    
    522
    +  static-construction object ‘$tcBinTree2_@name_suffix@’:
    
    523
    +    data constructor name: TrNameS
    
    524
    +    lifted: yes
    
    525
    +    literals: address ‘$tcBinTree1_@name_suffix@’
    
    526
    +    utilized items: <none>
    
    527
    +  static-construction object ‘$krep4_@name_suffix@’:
    
    528
    +    data constructor name: KindRepTyConApp
    
    529
    +    lifted: yes
    
    530
    +    literals: <none>
    
    531
    +    utilized items:
    
    532
    +      item named ‘$tcTuple2’
    
    533
    +      item named ‘$krep3_@name_suffix@’
    
    534
    +  static-construction object ‘$krep3_@name_suffix@’:
    
    535
    +    data constructor name: :
    
    536
    +    lifted: yes
    
    537
    +    literals: <none>
    
    538
    +    utilized items:
    
    539
    +      item named ‘$krep1_@name_suffix@’
    
    540
    +      item named ‘$krep2_@name_suffix@’
    
    541
    +  static-construction object ‘$krep2_@name_suffix@’:
    
    542
    +    data constructor name: :
    
    543
    +    lifted: yes
    
    544
    +    literals: <none>
    
    545
    +    utilized items:
    
    546
    +      item named ‘$krep1_@name_suffix@’
    
    547
    +      item named ‘[]’
    
    548
    +  static-construction object ‘$krep1_@name_suffix@’:
    
    549
    +    data constructor name: KindRepVar
    
    550
    +    lifted: yes
    
    551
    +    literals: word 0
    
    552
    +    utilized items: <none>
    
    553
    +  static-construction object ‘$krep_@name_suffix@’:
    
    554
    +    data constructor name: KindRepVar
    
    555
    +    lifted: yes
    
    556
    +    literals: word 1
    
    557
    +    utilized items: <none>
    
    558
    +  static-construction object ‘$trModule’:
    
    559
    +    data constructor name: Module
    
    560
    +    lifted: yes
    
    561
    +    literals: <none>
    
    562
    +    utilized items:
    
    563
    +      item named ‘$trModule2_@name_suffix@’
    
    564
    +      item named ‘$trModule4_@name_suffix@’
    
    565
    +  static-construction object ‘$trModule4_@name_suffix@’:
    
    566
    +    data constructor name: TrNameS
    
    567
    +    lifted: yes
    
    568
    +    literals: address ‘$trModule3_@name_suffix@’
    
    569
    +    utilized items: <none>
    
    570
    +  static-construction object ‘$trModule2_@name_suffix@’:
    
    571
    +    data constructor name: TrNameS
    
    572
    +    lifted: yes
    
    573
    +    literals: address ‘$trModule1_@name_suffix@’
    
    574
    +    utilized items: <none>
    
    575
    +  ordinary object ‘divides’:
    
    576
    +    arity: 3
    
    577
    +    literals: <none>
    
    578
    +    utilized items:
    
    579
    +      ordinary object ‘$dReal_@name_suffix@’:
    
    580
    +        arity: 0
    
    581
    +        literals:
    
    582
    +          label ‘_hpc_tickboxes_Example_hpc’
    
    583
    +          label ‘_hpc_tickboxes_Example_hpc’
    
    584
    +        utilized items:
    
    585
    +          ordinary object ‘divides_sat_@name_suffix@’:
    
    586
    +            arity: 1
    
    587
    +            literals:
    
    588
    +              label ‘_hpc_tickboxes_Example_hpc’
    
    589
    +              word 0
    
    590
    +              info table of ‘IS’
    
    591
    +            utilized items:
    
    592
    +              ordinary object ‘divides_sat_@name_suffix@’:
    
    593
    +                arity: 0
    
    594
    +                literals: <none>
    
    595
    +                utilized items: item named ‘fromInteger’
    
    596
    +              item named ‘$p1Real’
    
    597
    +          ordinary object ‘divides_sat_@name_suffix@’:
    
    598
    +            arity: 3
    
    599
    +            literals: label ‘_hpc_tickboxes_Example_hpc’
    
    600
    +            utilized items:
    
    601
    +              ordinary object ‘divides_sat_@name_suffix@’:
    
    602
    +                arity: 1
    
    603
    +                literals: label ‘_hpc_tickboxes_Example_hpc’
    
    604
    +                utilized items: <none>
    
    605
    +              ordinary object ‘divides_sat_@name_suffix@’:
    
    606
    +                arity: 1
    
    607
    +                literals: label ‘_hpc_tickboxes_Example_hpc’
    
    608
    +                utilized items: <none>
    
    609
    +              item named ‘mod’
    
    610
    +          ordinary object ‘divides_sat_@name_suffix@’:
    
    611
    +            arity: 0
    
    612
    +            literals: <none>
    
    613
    +            utilized items:
    
    614
    +              ordinary object ‘divides_sat_@name_suffix@’:
    
    615
    +                arity: 0
    
    616
    +                literals: <none>
    
    617
    +                utilized items: item named ‘==’
    
    618
    +              item named ‘$p1Ord’
    
    619
    +          item named ‘$p2Real’
    
    620
    +      item named ‘$p1Integral’
    
    621
    +  ordinary object ‘Node’:
    
    622
    +    arity: 3
    
    623
    +    literals: info table of ‘Node’
    
    624
    +    utilized items: <none>
    
    625
    +  ordinary object ‘Leaf’:
    
    626
    +    arity: 1
    
    627
    +    literals: info table of ‘Leaf’
    
    628
    +    utilized items: <none>
    
    629
    +  ordinary object ‘Nested’:
    
    630
    +    arity: 1
    
    631
    +    literals: info table of ‘Nested’
    
    632
    +    utilized items: <none>
    
    633
    +  ordinary object ‘PerfectTree’:
    
    634
    +    arity: 1
    
    635
    +    literals: info table of ‘PerfectTree’
    
    636
    +    utilized items: <none>
    
    637
    +data constructor info tables:
    
    638
    +  info table of ‘PerfectTree’:
    
    639
    +    number of words for pointers: 1
    
    640
    +    number of words for non-pointers: 0
    
    641
    +  info table of ‘Nested’:
    
    642
    +    number of words for pointers: 1
    
    643
    +    number of words for non-pointers: 0
    
    644
    +  info table of ‘Leaf’:
    
    645
    +    number of words for pointers: 1
    
    646
    +    number of words for non-pointers: 0
    
    647
    +  info table of ‘Node’:
    
    648
    +    number of words for pointers: 3
    
    649
    +    number of words for non-pointers: 0
    
    650
    +top-level strings:
    
    651
    +  $tc'Nested1_@name_suffix@: "'Nested"
    
    652
    +  $tc'PerfectTree1_@name_suffix@: "'PerfectTree"
    
    653
    +  $tcPerfectTree1_@name_suffix@: "PerfectTree"
    
    654
    +  $tc'Node1_@name_suffix@: "'Node"
    
    655
    +  $tc'Leaf1_@name_suffix@: "'Leaf"
    
    656
    +  $tcBinTree1_@name_suffix@: "BinTree"
    
    657
    +  $trModule3_@name_suffix@: "Example"
    
    658
    +  $trModule1_@name_suffix@: "main"
    
    659
    +breakpoints: <none>
    
    660
    +static-pointer table entries:
    
    661
    +  @hash@: static_ptr
    
    662
    +  @hash@: static_ptr1
    
    663
    +HPC information:
    
    664
    +  hash: 000000006110204f
    
    665
    +  module name: Example
    
    666
    +  tick box name: _hpc_tickboxes_Example_hpc
    
    667
    +  number of ticks: 45
    
    668
    +

  • testsuite/tests/show-bytecode/show-bytecode-vanilla.stdout
    1
    +[1 of 1] Compiling Example          ( Example.hs, Example.gbc )
    
    2
    +name: Example
    
    3
    +hash: @hash@
    
    4
    +objects:
    
    5
    +  ordinary object ‘primesPtr’:
    
    6
    +    arity: 0
    
    7
    +    literals: <none>
    
    8
    +    utilized items:
    
    9
    +      item named ‘static_ptr1’
    
    10
    +      item named ‘$dTypeable2_@name_suffix@’
    
    11
    +      item named ‘$fIsStaticStaticPtr’
    
    12
    +  static-construction object ‘static_ptr1’:
    
    13
    +    data constructor name: StaticPtr
    
    14
    +    lifted: yes
    
    15
    +    literals:
    
    16
    +      word @large_word@
    
    17
    +      word @large_word@
    
    18
    +    utilized items:
    
    19
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    20
    +      item named ‘primes’
    
    21
    +  static-construction object ‘static_ptr1_sat_@name_suffix@’:
    
    22
    +    data constructor name: StaticPtrInfo
    
    23
    +    lifted: yes
    
    24
    +    literals: <none>
    
    25
    +    utilized items:
    
    26
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    27
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    28
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    29
    +  ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    30
    +    arity: 0
    
    31
    +    literals: top-level string "main"
    
    32
    +    utilized items:
    
    33
    +      ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    34
    +        arity: 0
    
    35
    +        literals: <none>
    
    36
    +        utilized items: item named ‘unpackCString#’
    
    37
    +  ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    38
    +    arity: 0
    
    39
    +    literals: top-level string "Example"
    
    40
    +    utilized items:
    
    41
    +      ordinary object ‘static_ptr1_sat_@name_suffix@’:
    
    42
    +        arity: 0
    
    43
    +        literals: <none>
    
    44
    +        utilized items: item named ‘unpackCString#’
    
    45
    +  static-construction object ‘static_ptr1_sat_@name_suffix@’:
    
    46
    +    data constructor name: (,)
    
    47
    +    lifted: yes
    
    48
    +    literals: <none>
    
    49
    +    utilized items:
    
    50
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    51
    +      item named ‘static_ptr1_sat_@name_suffix@’
    
    52
    +  static-construction object ‘static_ptr1_sat_@name_suffix@’:
    
    53
    +    data constructor name: I#
    
    54
    +    lifted: yes
    
    55
    +    literals: word 27
    
    56
    +    utilized items: <none>
    
    57
    +  static-construction object ‘static_ptr1_sat_@name_suffix@’:
    
    58
    +    data constructor name: I#
    
    59
    +    lifted: yes
    
    60
    +    literals: word 20
    
    61
    +    utilized items: <none>
    
    62
    +  ordinary object ‘primes2_@name_suffix@’:
    
    63
    +    arity: 0
    
    64
    +    literals: <none>
    
    65
    +    utilized items:
    
    66
    +      item named ‘primes2_sat_@name_suffix@’
    
    67
    +      item named ‘isPrime_@name_suffix@’
    
    68
    +      item named ‘filter’
    
    69
    +  ordinary object ‘isPrime_@name_suffix@’:
    
    70
    +    arity: 1
    
    71
    +    literals: <none>
    
    72
    +    utilized items:
    
    73
    +      ordinary object ‘isPrime_sat_@name_suffix@’:
    
    74
    +        arity: 1
    
    75
    +        literals: <none>
    
    76
    +        utilized items:
    
    77
    +          ordinary object ‘isPrime_sat_@name_suffix@’:
    
    78
    +            arity: 1
    
    79
    +            literals: <none>
    
    80
    +            utilized items:
    
    81
    +              ordinary object ‘isPrime_sat_@name_suffix@’:
    
    82
    +                arity: 1
    
    83
    +                literals:
    
    84
    +                  word 2
    
    85
    +                  info table of ‘IS’
    
    86
    +                utilized items:
    
    87
    +                  ordinary object ‘v_@name_suffix@’:
    
    88
    +                    arity: 0
    
    89
    +                    literals: <none>
    
    90
    +                    utilized items:
    
    91
    +                      item named ‘$fIntegralInteger’
    
    92
    +                      item named ‘$fNumNatural’
    
    93
    +                      item named ‘^’
    
    94
    +                  ordinary object ‘isPrime_sat_@name_suffix@’:
    
    95
    +                    arity: 3
    
    96
    +                    literals: <none>
    
    97
    +                    utilized items: <none>
    
    98
    +                  ordinary object ‘v_@name_suffix@’:
    
    99
    +                    arity: 0
    
    100
    +                    literals: <none>
    
    101
    +                    utilized items:
    
    102
    +                      item named ‘$fOrdNatural’
    
    103
    +                      item named ‘<=’
    
    104
    +                  ordinary object ‘isPrime_sat_@name_suffix@’:
    
    105
    +                    arity: 3
    
    106
    +                    literals: <none>
    
    107
    +                    utilized items: <none>
    
    108
    +                  item named ‘.’
    
    109
    +              item named ‘primes’
    
    110
    +              item named ‘takeWhile’
    
    111
    +          ordinary object ‘isPrime_sat_@name_suffix@’:
    
    112
    +            arity: 2
    
    113
    +            literals: <none>
    
    114
    +            utilized items:
    
    115
    +              item named ‘$fIntegralNatural’
    
    116
    +              item named ‘divides’
    
    117
    +          item named ‘$fFoldableList’
    
    118
    +          item named ‘any’
    
    119
    +      item named ‘not’
    
    120
    +  static-construction object ‘primes’:
    
    121
    +    data constructor name: :
    
    122
    +    lifted: yes
    
    123
    +    literals: <none>
    
    124
    +    utilized items:
    
    125
    +      item named ‘primes1_@name_suffix@’
    
    126
    +      item named ‘primes2_@name_suffix@’
    
    127
    +  ordinary object ‘primes2_sat_@name_suffix@’:
    
    128
    +    arity: 0
    
    129
    +    literals: <none>
    
    130
    +    utilized items:
    
    131
    +      ordinary object ‘primes2_sat_@name_suffix@’:
    
    132
    +        arity: 0
    
    133
    +        literals:
    
    134
    +          word 3
    
    135
    +          info table of ‘IS’
    
    136
    +        utilized items:
    
    137
    +          item named ‘$fNumNatural’
    
    138
    +          item named ‘fromInteger’
    
    139
    +      item named ‘$fEnumNatural’
    
    140
    +      item named ‘enumFrom’
    
    141
    +  ordinary object ‘primes1_@name_suffix@’:
    
    142
    +    arity: 0
    
    143
    +    literals: <none>
    
    144
    +    utilized items:
    
    145
    +      item named ‘primes1_sat_@name_suffix@’
    
    146
    +      item named ‘$fNumNatural’
    
    147
    +      item named ‘fromInteger’
    
    148
    +  static-construction object ‘primes1_sat_@name_suffix@’:
    
    149
    +    data constructor name: IS
    
    150
    +    lifted: yes
    
    151
    +    literals: word 2
    
    152
    +    utilized items: <none>
    
    153
    +  ordinary object ‘fibonaccisPtr’:
    
    154
    +    arity: 0
    
    155
    +    literals: <none>
    
    156
    +    utilized items:
    
    157
    +      item named ‘static_ptr’
    
    158
    +      item named ‘$dTypeable2_@name_suffix@’
    
    159
    +      item named ‘$fIsStaticStaticPtr’
    
    160
    +  static-construction object ‘static_ptr’:
    
    161
    +    data constructor name: StaticPtr
    
    162
    +    lifted: yes
    
    163
    +    literals:
    
    164
    +      word @large_word@
    
    165
    +      word @large_word@
    
    166
    +    utilized items:
    
    167
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    168
    +      item named ‘fibonaccis’
    
    169
    +  static-construction object ‘static_ptr_sat_@name_suffix@’:
    
    170
    +    data constructor name: StaticPtrInfo
    
    171
    +    lifted: yes
    
    172
    +    literals: <none>
    
    173
    +    utilized items:
    
    174
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    175
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    176
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    177
    +  ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    178
    +    arity: 0
    
    179
    +    literals: top-level string "main"
    
    180
    +    utilized items:
    
    181
    +      ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    182
    +        arity: 0
    
    183
    +        literals: <none>
    
    184
    +        utilized items: item named ‘unpackCString#’
    
    185
    +  ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    186
    +    arity: 0
    
    187
    +    literals: top-level string "Example"
    
    188
    +    utilized items:
    
    189
    +      ordinary object ‘static_ptr_sat_@name_suffix@’:
    
    190
    +        arity: 0
    
    191
    +        literals: <none>
    
    192
    +        utilized items: item named ‘unpackCString#’
    
    193
    +  static-construction object ‘static_ptr_sat_@name_suffix@’:
    
    194
    +    data constructor name: (,)
    
    195
    +    lifted: yes
    
    196
    +    literals: <none>
    
    197
    +    utilized items:
    
    198
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    199
    +      item named ‘static_ptr_sat_@name_suffix@’
    
    200
    +  static-construction object ‘static_ptr_sat_@name_suffix@’:
    
    201
    +    data constructor name: I#
    
    202
    +    lifted: yes
    
    203
    +    literals: word 15
    
    204
    +    utilized items: <none>
    
    205
    +  static-construction object ‘static_ptr_sat_@name_suffix@’:
    
    206
    +    data constructor name: I#
    
    207
    +    lifted: yes
    
    208
    +    literals: word 24
    
    209
    +    utilized items: <none>
    
    210
    +  ordinary object ‘positiveFibonaccis2_@name_suffix@’:
    
    211
    +    arity: 0
    
    212
    +    literals: <none>
    
    213
    +    utilized items:
    
    214
    +      item named ‘positiveFibonaccis1_@name_suffix@’
    
    215
    +      item named ‘fibonaccis’
    
    216
    +      item named ‘positiveFibonaccis2_sat_@name_suffix@’
    
    217
    +      item named ‘zipWith’
    
    218
    +  static-construction object ‘positiveFibonaccis1_@name_suffix@’:
    
    219
    +    data constructor name: :
    
    220
    +    lifted: yes
    
    221
    +    literals: <none>
    
    222
    +    utilized items:
    
    223
    +      item named ‘positiveFibonaccis_@name_suffix@’
    
    224
    +      item named ‘positiveFibonaccis2_@name_suffix@’
    
    225
    +  static-construction object ‘fibonaccis’:
    
    226
    +    data constructor name: :
    
    227
    +    lifted: yes
    
    228
    +    literals: <none>
    
    229
    +    utilized items:
    
    230
    +      item named ‘fibonaccis1_@name_suffix@’
    
    231
    +      item named ‘positiveFibonaccis1_@name_suffix@’
    
    232
    +  ordinary object ‘positiveFibonaccis2_sat_@name_suffix@’:
    
    233
    +    arity: 0
    
    234
    +    literals: <none>
    
    235
    +    utilized items:
    
    236
    +      item named ‘$fNumNatural’
    
    237
    +      item named ‘+’
    
    238
    +  ordinary object ‘positiveFibonaccis_@name_suffix@’:
    
    239
    +    arity: 0
    
    240
    +    literals: <none>
    
    241
    +    utilized items:
    
    242
    +      item named ‘positiveFibonaccis_sat_@name_suffix@’
    
    243
    +      item named ‘$fNumNatural’
    
    244
    +      item named ‘fromInteger’
    
    245
    +  static-construction object ‘positiveFibonaccis_sat_@name_suffix@’:
    
    246
    +    data constructor name: IS
    
    247
    +    lifted: yes
    
    248
    +    literals: word 1
    
    249
    +    utilized items: <none>
    
    250
    +  ordinary object ‘fibonaccis1_@name_suffix@’:
    
    251
    +    arity: 0
    
    252
    +    literals: <none>
    
    253
    +    utilized items:
    
    254
    +      item named ‘fibonaccis1_sat_@name_suffix@’
    
    255
    +      item named ‘$fNumNatural’
    
    256
    +      item named ‘fromInteger’
    
    257
    +  static-construction object ‘fibonaccis1_sat_@name_suffix@’:
    
    258
    +    data constructor name: IS
    
    259
    +    lifted: yes
    
    260
    +    literals: word 0
    
    261
    +    utilized items: <none>
    
    262
    +  ordinary object ‘$dTypeable2_@name_suffix@’:
    
    263
    +    arity: 0
    
    264
    +    literals: <none>
    
    265
    +    utilized items:
    
    266
    +      item named ‘$dTypeable_@name_suffix@’
    
    267
    +      item named ‘$dTypeable1_@name_suffix@’
    
    268
    +      item named ‘mkTrAppChecked’
    
    269
    +  ordinary object ‘$dTypeable1_@name_suffix@’:
    
    270
    +    arity: 0
    
    271
    +    literals: info table of ‘[]’
    
    272
    +    utilized items:
    
    273
    +      item named ‘$tcList’
    
    274
    +      item named ‘mkTrCon’
    
    275
    +  ordinary object ‘$dTypeable_@name_suffix@’:
    
    276
    +    arity: 0
    
    277
    +    literals: info table of ‘[]’
    
    278
    +    utilized items:
    
    279
    +      item named ‘$tcNatural’
    
    280
    +      item named ‘mkTrCon’
    
    281
    +  static-construction object ‘$tc'Nested’:
    
    282
    +    data constructor name: TyCon
    
    283
    +    lifted: yes
    
    284
    +    literals:
    
    285
    +      word @large_word@
    
    286
    +      word @large_word@
    
    287
    +      word 1
    
    288
    +    utilized items:
    
    289
    +      item named ‘$trModule’
    
    290
    +      item named ‘$tc'Nested2_@name_suffix@’
    
    291
    +      item named ‘$krep17_@name_suffix@’
    
    292
    +  static-construction object ‘$tc'Nested2_@name_suffix@’:
    
    293
    +    data constructor name: TrNameS
    
    294
    +    lifted: yes
    
    295
    +    literals: address ‘$tc'Nested1_@name_suffix@’
    
    296
    +    utilized items: <none>
    
    297
    +  static-construction object ‘$krep17_@name_suffix@’:
    
    298
    +    data constructor name: KindRepFun
    
    299
    +    lifted: yes
    
    300
    +    literals: <none>
    
    301
    +    utilized items:
    
    302
    +      item named ‘$krep16_@name_suffix@’
    
    303
    +      item named ‘$krep13_@name_suffix@’
    
    304
    +  static-construction object ‘$krep16_@name_suffix@’:
    
    305
    +    data constructor name: KindRepTyConApp
    
    306
    +    lifted: yes
    
    307
    +    literals: <none>
    
    308
    +    utilized items:
    
    309
    +      item named ‘$tcPerfectTree’
    
    310
    +      item named ‘$krep15_@name_suffix@’
    
    311
    +  static-construction object ‘$krep15_@name_suffix@’:
    
    312
    +    data constructor name: :
    
    313
    +    lifted: yes
    
    314
    +    literals: <none>
    
    315
    +    utilized items:
    
    316
    +      item named ‘$krep4_@name_suffix@’
    
    317
    +      item named ‘[]’
    
    318
    +  static-construction object ‘$tc'PerfectTree’:
    
    319
    +    data constructor name: TyCon
    
    320
    +    lifted: yes
    
    321
    +    literals:
    
    322
    +      word @large_word@
    
    323
    +      word @large_word@
    
    324
    +      word 1
    
    325
    +    utilized items:
    
    326
    +      item named ‘$trModule’
    
    327
    +      item named ‘$tc'PerfectTree2_@name_suffix@’
    
    328
    +      item named ‘$krep14_@name_suffix@’
    
    329
    +  static-construction object ‘$tc'PerfectTree2_@name_suffix@’:
    
    330
    +    data constructor name: TrNameS
    
    331
    +    lifted: yes
    
    332
    +    literals: address ‘$tc'PerfectTree1_@name_suffix@’
    
    333
    +    utilized items: <none>
    
    334
    +  static-construction object ‘$krep14_@name_suffix@’:
    
    335
    +    data constructor name: KindRepFun
    
    336
    +    lifted: yes
    
    337
    +    literals: <none>
    
    338
    +    utilized items:
    
    339
    +      item named ‘$krep1_@name_suffix@’
    
    340
    +      item named ‘$krep13_@name_suffix@’
    
    341
    +  static-construction object ‘$krep13_@name_suffix@’:
    
    342
    +    data constructor name: KindRepTyConApp
    
    343
    +    lifted: yes
    
    344
    +    literals: <none>
    
    345
    +    utilized items:
    
    346
    +      item named ‘$tcPerfectTree’
    
    347
    +      item named ‘$krep12_@name_suffix@’
    
    348
    +  static-construction object ‘$krep12_@name_suffix@’:
    
    349
    +    data constructor name: :
    
    350
    +    lifted: yes
    
    351
    +    literals: <none>
    
    352
    +    utilized items:
    
    353
    +      item named ‘$krep1_@name_suffix@’
    
    354
    +      item named ‘[]’
    
    355
    +  static-construction object ‘$tcPerfectTree’:
    
    356
    +    data constructor name: TyCon
    
    357
    +    lifted: yes
    
    358
    +    literals:
    
    359
    +      word @large_word@
    
    360
    +      word @large_word@
    
    361
    +      word 0
    
    362
    +    utilized items:
    
    363
    +      item named ‘$trModule’
    
    364
    +      item named ‘$tcPerfectTree2_@name_suffix@’
    
    365
    +      item named ‘krep$*Arr*’
    
    366
    +  static-construction object ‘$tcPerfectTree2_@name_suffix@’:
    
    367
    +    data constructor name: TrNameS
    
    368
    +    lifted: yes
    
    369
    +    literals: address ‘$tcPerfectTree1_@name_suffix@’
    
    370
    +    utilized items: <none>
    
    371
    +  static-construction object ‘$tc'Node’:
    
    372
    +    data constructor name: TyCon
    
    373
    +    lifted: yes
    
    374
    +    literals:
    
    375
    +      word @large_word@
    
    376
    +      word @large_word@
    
    377
    +      word 2
    
    378
    +    utilized items:
    
    379
    +      item named ‘$trModule’
    
    380
    +      item named ‘$tc'Node2_@name_suffix@’
    
    381
    +      item named ‘$krep11_@name_suffix@’
    
    382
    +  static-construction object ‘$tc'Node2_@name_suffix@’:
    
    383
    +    data constructor name: TrNameS
    
    384
    +    lifted: yes
    
    385
    +    literals: address ‘$tc'Node1_@name_suffix@’
    
    386
    +    utilized items: <none>
    
    387
    +  static-construction object ‘$krep11_@name_suffix@’:
    
    388
    +    data constructor name: KindRepFun
    
    389
    +    lifted: yes
    
    390
    +    literals: <none>
    
    391
    +    utilized items:
    
    392
    +      item named ‘$krep7_@name_suffix@’
    
    393
    +      item named ‘$krep10_@name_suffix@’
    
    394
    +  static-construction object ‘$krep10_@name_suffix@’:
    
    395
    +    data constructor name: KindRepFun
    
    396
    +    lifted: yes
    
    397
    +    literals: <none>
    
    398
    +    utilized items:
    
    399
    +      item named ‘$krep_@name_suffix@’
    
    400
    +      item named ‘$krep9_@name_suffix@’
    
    401
    +  static-construction object ‘$krep9_@name_suffix@’:
    
    402
    +    data constructor name: KindRepFun
    
    403
    +    lifted: yes
    
    404
    +    literals: <none>
    
    405
    +    utilized items:
    
    406
    +      item named ‘$krep7_@name_suffix@’
    
    407
    +      item named ‘$krep7_@name_suffix@’
    
    408
    +  static-construction object ‘$tc'Leaf’:
    
    409
    +    data constructor name: TyCon
    
    410
    +    lifted: yes
    
    411
    +    literals:
    
    412
    +      word @large_word@
    
    413
    +      word @large_word@
    
    414
    +      word 2
    
    415
    +    utilized items:
    
    416
    +      item named ‘$trModule’
    
    417
    +      item named ‘$tc'Leaf2_@name_suffix@’
    
    418
    +      item named ‘$krep8_@name_suffix@’
    
    419
    +  static-construction object ‘$tc'Leaf2_@name_suffix@’:
    
    420
    +    data constructor name: TrNameS
    
    421
    +    lifted: yes
    
    422
    +    literals: address ‘$tc'Leaf1_@name_suffix@’
    
    423
    +    utilized items: <none>
    
    424
    +  static-construction object ‘$krep8_@name_suffix@’:
    
    425
    +    data constructor name: KindRepFun
    
    426
    +    lifted: yes
    
    427
    +    literals: <none>
    
    428
    +    utilized items:
    
    429
    +      item named ‘$krep1_@name_suffix@’
    
    430
    +      item named ‘$krep7_@name_suffix@’
    
    431
    +  static-construction object ‘$krep7_@name_suffix@’:
    
    432
    +    data constructor name: KindRepTyConApp
    
    433
    +    lifted: yes
    
    434
    +    literals: <none>
    
    435
    +    utilized items:
    
    436
    +      item named ‘$tcBinTree’
    
    437
    +      item named ‘$krep6_@name_suffix@’
    
    438
    +  static-construction object ‘$krep6_@name_suffix@’:
    
    439
    +    data constructor name: :
    
    440
    +    lifted: yes
    
    441
    +    literals: <none>
    
    442
    +    utilized items:
    
    443
    +      item named ‘$krep1_@name_suffix@’
    
    444
    +      item named ‘$krep5_@name_suffix@’
    
    445
    +  static-construction object ‘$krep5_@name_suffix@’:
    
    446
    +    data constructor name: :
    
    447
    +    lifted: yes
    
    448
    +    literals: <none>
    
    449
    +    utilized items:
    
    450
    +      item named ‘$krep_@name_suffix@’
    
    451
    +      item named ‘[]’
    
    452
    +  static-construction object ‘$tcBinTree’:
    
    453
    +    data constructor name: TyCon
    
    454
    +    lifted: yes
    
    455
    +    literals:
    
    456
    +      word @large_word@
    
    457
    +      word @large_word@
    
    458
    +      word 0
    
    459
    +    utilized items:
    
    460
    +      item named ‘$trModule’
    
    461
    +      item named ‘$tcBinTree2_@name_suffix@’
    
    462
    +      item named ‘krep$*->*->*’
    
    463
    +  static-construction object ‘$tcBinTree2_@name_suffix@’:
    
    464
    +    data constructor name: TrNameS
    
    465
    +    lifted: yes
    
    466
    +    literals: address ‘$tcBinTree1_@name_suffix@’
    
    467
    +    utilized items: <none>
    
    468
    +  static-construction object ‘$krep4_@name_suffix@’:
    
    469
    +    data constructor name: KindRepTyConApp
    
    470
    +    lifted: yes
    
    471
    +    literals: <none>
    
    472
    +    utilized items:
    
    473
    +      item named ‘$tcTuple2’
    
    474
    +      item named ‘$krep3_@name_suffix@’
    
    475
    +  static-construction object ‘$krep3_@name_suffix@’:
    
    476
    +    data constructor name: :
    
    477
    +    lifted: yes
    
    478
    +    literals: <none>
    
    479
    +    utilized items:
    
    480
    +      item named ‘$krep1_@name_suffix@’
    
    481
    +      item named ‘$krep2_@name_suffix@’
    
    482
    +  static-construction object ‘$krep2_@name_suffix@’:
    
    483
    +    data constructor name: :
    
    484
    +    lifted: yes
    
    485
    +    literals: <none>
    
    486
    +    utilized items:
    
    487
    +      item named ‘$krep1_@name_suffix@’
    
    488
    +      item named ‘[]’
    
    489
    +  static-construction object ‘$krep1_@name_suffix@’:
    
    490
    +    data constructor name: KindRepVar
    
    491
    +    lifted: yes
    
    492
    +    literals: word 0
    
    493
    +    utilized items: <none>
    
    494
    +  static-construction object ‘$krep_@name_suffix@’:
    
    495
    +    data constructor name: KindRepVar
    
    496
    +    lifted: yes
    
    497
    +    literals: word 1
    
    498
    +    utilized items: <none>
    
    499
    +  static-construction object ‘$trModule’:
    
    500
    +    data constructor name: Module
    
    501
    +    lifted: yes
    
    502
    +    literals: <none>
    
    503
    +    utilized items:
    
    504
    +      item named ‘$trModule2_@name_suffix@’
    
    505
    +      item named ‘$trModule4_@name_suffix@’
    
    506
    +  static-construction object ‘$trModule4_@name_suffix@’:
    
    507
    +    data constructor name: TrNameS
    
    508
    +    lifted: yes
    
    509
    +    literals: address ‘$trModule3_@name_suffix@’
    
    510
    +    utilized items: <none>
    
    511
    +  static-construction object ‘$trModule2_@name_suffix@’:
    
    512
    +    data constructor name: TrNameS
    
    513
    +    lifted: yes
    
    514
    +    literals: address ‘$trModule1_@name_suffix@’
    
    515
    +    utilized items: <none>
    
    516
    +  ordinary object ‘divides’:
    
    517
    +    arity: 3
    
    518
    +    literals: <none>
    
    519
    +    utilized items:
    
    520
    +      ordinary object ‘$dReal_@name_suffix@’:
    
    521
    +        arity: 0
    
    522
    +        literals: <none>
    
    523
    +        utilized items:
    
    524
    +          ordinary object ‘divides_sat_@name_suffix@’:
    
    525
    +            arity: 1
    
    526
    +            literals:
    
    527
    +              word 0
    
    528
    +              info table of ‘IS’
    
    529
    +            utilized items:
    
    530
    +              ordinary object ‘divides_sat_@name_suffix@’:
    
    531
    +                arity: 0
    
    532
    +                literals: <none>
    
    533
    +                utilized items: item named ‘fromInteger’
    
    534
    +              item named ‘$p1Real’
    
    535
    +          ordinary object ‘divides_sat_@name_suffix@’:
    
    536
    +            arity: 3
    
    537
    +            literals: <none>
    
    538
    +            utilized items: item named ‘mod’
    
    539
    +          ordinary object ‘divides_sat_@name_suffix@’:
    
    540
    +            arity: 0
    
    541
    +            literals: <none>
    
    542
    +            utilized items:
    
    543
    +              ordinary object ‘divides_sat_@name_suffix@’:
    
    544
    +                arity: 0
    
    545
    +                literals: <none>
    
    546
    +                utilized items: item named ‘==’
    
    547
    +              item named ‘$p1Ord’
    
    548
    +          item named ‘$p2Real’
    
    549
    +      item named ‘$p1Integral’
    
    550
    +  ordinary object ‘Node’:
    
    551
    +    arity: 3
    
    552
    +    literals: info table of ‘Node’
    
    553
    +    utilized items: <none>
    
    554
    +  ordinary object ‘Leaf’:
    
    555
    +    arity: 1
    
    556
    +    literals: info table of ‘Leaf’
    
    557
    +    utilized items: <none>
    
    558
    +  ordinary object ‘Nested’:
    
    559
    +    arity: 1
    
    560
    +    literals: info table of ‘Nested’
    
    561
    +    utilized items: <none>
    
    562
    +  ordinary object ‘PerfectTree’:
    
    563
    +    arity: 1
    
    564
    +    literals: info table of ‘PerfectTree’
    
    565
    +    utilized items: <none>
    
    566
    +data constructor info tables:
    
    567
    +  info table of ‘PerfectTree’:
    
    568
    +    number of words for pointers: 1
    
    569
    +    number of words for non-pointers: 0
    
    570
    +  info table of ‘Nested’:
    
    571
    +    number of words for pointers: 1
    
    572
    +    number of words for non-pointers: 0
    
    573
    +  info table of ‘Leaf’:
    
    574
    +    number of words for pointers: 1
    
    575
    +    number of words for non-pointers: 0
    
    576
    +  info table of ‘Node’:
    
    577
    +    number of words for pointers: 3
    
    578
    +    number of words for non-pointers: 0
    
    579
    +top-level strings:
    
    580
    +  $tc'Nested1_@name_suffix@: "'Nested"
    
    581
    +  $tc'PerfectTree1_@name_suffix@: "'PerfectTree"
    
    582
    +  $tcPerfectTree1_@name_suffix@: "PerfectTree"
    
    583
    +  $tc'Node1_@name_suffix@: "'Node"
    
    584
    +  $tc'Leaf1_@name_suffix@: "'Leaf"
    
    585
    +  $tcBinTree1_@name_suffix@: "BinTree"
    
    586
    +  $trModule3_@name_suffix@: "Example"
    
    587
    +  $trModule1_@name_suffix@: "main"
    
    588
    +breakpoints: <none>
    
    589
    +static-pointer table entries:
    
    590
    +  @hash@: static_ptr
    
    591
    +  @hash@: static_ptr1
    
    592
    +HPC information: <none>
    
    593
    +