Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC

Commits:

16 changed files:

Changes:

  • changelog.d/show-byte-code
    1
    +section: bytecode
    
    2
    +synopsis: Add support for textual output of bytecode file content
    
    3
    +issues: #26909
    
    4
    +mrs: !16386
    
    5
    +description: {
    
    6
    +    There is now an option `--show-byte-code` for outputting relevant
    
    7
    +    content of a bytecode file in textual form.
    
    8
    +}

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

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

  • docs/users_guide/using.rst
    ... ... @@ -453,6 +453,13 @@ The available mode flags are:
    453 453
     
    
    454 454
         Read an interface file and dump relevent parts of it as text to ``stdout``.
    
    455 455
     
    
    456
    +.. ghc-flag:: --show-byte-code ⟨file⟩
    
    457
    +    :shortdesc: display contents of a bytecode file.
    
    458
    +    :type: mode
    
    459
    +    :category: modes
    
    460
    +
    
    461
    +    Read a bytecode file and dump relevant parts of it as text to ``stdout``.
    
    462
    +
    
    456 463
     .. ghc-flag:: --supported-extensions
    
    457 464
                   --supported-languages
    
    458 465
         :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
    +-- | This module uses in particular the following features:
    
    4
    +--
    
    5
    +--     * Local variables defined in `where` clauses
    
    6
    +--     * Integer literals
    
    7
    +--     * Infix operators
    
    8
    +--     * Recursion
    
    9
    +--     * Static pointers
    
    10
    +--     * Algebraic-datatype declarations
    
    11
    +--     * Foreign import declarations
    
    12
    +module Example where
    
    13
    +
    
    14
    +import Numeric.Natural (Natural)
    
    15
    +import Foreign.Ptr (Ptr)
    
    16
    +import Foreign.C.Types (CChar, CSize (CSize))
    
    17
    +import GHC.StaticPtr (StaticPtr)
    
    18
    +
    
    19
    +fibonaccis :: [Natural]
    
    20
    +fibonaccis = 0 : positiveFibonaccis where
    
    21
    +
    
    22
    +    positiveFibonaccis :: [Natural]
    
    23
    +    positiveFibonaccis = 1 : zipWith (+) fibonaccis positiveFibonaccis
    
    24
    +
    
    25
    +fibonaccisPtr :: StaticPtr [Natural]
    
    26
    +fibonaccisPtr = static fibonaccis
    
    27
    +
    
    28
    +divides :: Integral a => a -> a -> Bool
    
    29
    +k `divides` n = n `mod` k == 0
    
    30
    +
    
    31
    +primes :: [Natural]
    
    32
    +primes = 2 : filter isPrime [3 ..] where
    
    33
    +
    
    34
    +    isPrime :: Natural -> Bool
    
    35
    +    isPrime n = not (any (`divides` n) (takeWhile ((<= n) . (^ 2)) primes))
    
    36
    +
    
    37
    +primesPtr :: StaticPtr [Natural]
    
    38
    +primesPtr = static primes
    
    39
    +
    
    40
    +data BinTree a b = Leaf a | Node (BinTree a b) b (BinTree a b)
    
    41
    +
    
    42
    +data PerfectTree a = PerfectTree a | Nested (PerfectTree (a, a))
    
    43
    +
    
    44
    +foreign import ccall "string.h strlen"
    
    45
    +    cstrlen :: Ptr CChar -> IO CSize

  • 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
    +
    
    8
    +show-bytecode-vanilla:
    
    9
    +	$(compile) Example.hs
    
    10
    +	$(show) Example.gbc | ./normalize
    
    11
    +
    
    12
    +show-bytecode-breakpoints:
    
    13
    +	$(compile) -fbreak-points Example.hs
    
    14
    +	$(show) Example.gbc | ./normalize
    
    15
    +
    
    16
    +show-bytecode-hpc:
    
    17
    +	$(compile) -fhpc Example.hs
    
    18
    +	$(show) Example.gbc | ./normalize

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

  • testsuite/tests/show-bytecode/normalize
    1
    +#!/usr/bin/env bash
    
    2
    +
    
    3
    +set -e -o pipefail
    
    4
    +
    
    5
    +# Make the test output independent of unstable compiler-generated data
    
    6
    +stabilize ()
    
    7
    +{
    
    8
    +  sed -E -e '
    
    9
    +    s/_r[[:alnum:]]+/_@name_suffix@/g
    
    10
    +    s/^( *hash: )[[:xdigit:]]+/\1@hash@/
    
    11
    +    s/^( *)[[:xdigit:]]+:/\1@hash@:/
    
    12
    +    s/word [[:digit:]]{2}[[:digit:]]*/word @large_word@/g
    
    13
    +  '
    
    14
    +}
    
    15
    +
    
    16
    +# Make the test output independent of the word size
    
    17
    +universalize ()
    
    18
    +{
    
    19
    +  sed -E -e '
    
    20
    +    s/W[[:digit:]]+#/W@word_size@#/
    
    21
    +    s/UInt[[:digit:]]+/UInt@word_size@/
    
    22
    +  ' |
    
    23
    +  uniq
    
    24
    +  # The invocation of `uniq` is merely for collapsing adjacent entries of
    
    25
    +  # `word @large_word@`, whose number may depend on the word size.
    
    26
    +}
    
    27
    +
    
    28
    +# Run all phases
    
    29
    +stabilize | universalize

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

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

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

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