Wolfgang Jeltsch pushed to branch wip/jeltsch/textual-bytecode-output at Glasgow Haskell Compiler / GHC
Commits:
-
97ab9bcd
by Wolfgang Jeltsch at 2026-07-21T17:11:08+03:00
12 changed files:
- compiler/GHC/ByteCode/Serialize.hs
- + compiler/GHC/ByteCode/Show.hs
- compiler/ghc.cabal.in
- docs/users_guide/using.rst
- ghc/GHC/Driver/Session/Mode.hs
- ghc/Main.hs
- + testsuite/tests/show-bytecode/Example.hs
- + testsuite/tests/show-bytecode/Makefile
- + testsuite/tests/show-bytecode/all.T
- + testsuite/tests/show-bytecode/show-bytecode-breakpoints.stdout
- + testsuite/tests/show-bytecode/show-bytecode-hpc.stdout
- + testsuite/tests/show-bytecode/show-bytecode-vanilla.stdout
Changes:
| ... | ... | @@ -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
|
| 1 | +{-# LANGUAGE ImportQualifiedPost #-}
|
|
| 2 | +{-# LANGUAGE RecordWildCards #-}
|
|
| 3 | + |
|
| 4 | +-- | This module implements the output of textual information about the contents
|
|
| 5 | +-- of bytecode files. It is the backbone of the @--show-byte-code@ option.
|
|
| 6 | +module GHC.ByteCode.Show (showByteCode) where
|
|
| 7 | + |
|
| 8 | +import Prelude ((+), (-), Integral, div)
|
|
| 9 | +import Control.Arrow ((>>>))
|
|
| 10 | +import Control.Exception (assert)
|
|
| 11 | +import Data.Eq ((==))
|
|
| 12 | +import Data.Ord ((>=))
|
|
| 13 | +import Data.Bits (FiniteBits, finiteBitSize)
|
|
| 14 | +import Data.Function (($), id, (.))
|
|
| 15 | +import Data.Tuple (fst, uncurry)
|
|
| 16 | +import Data.Bool (Bool, otherwise, not)
|
|
| 17 | +import Data.Int (Int)
|
|
| 18 | +import Data.Word (Word)
|
|
| 19 | +import Data.Maybe (Maybe, maybe)
|
|
| 20 | +import Data.Either (Either, either)
|
|
| 21 | +import Data.List (length, (++), map, zipWith4, take, drop, replicate)
|
|
| 22 | +import Data.String (String)
|
|
| 23 | +import Data.ByteString (ByteString)
|
|
| 24 | +import Data.ByteString.Short (ShortByteString)
|
|
| 25 | +import Data.IntMap (IntMap)
|
|
| 26 | +import Data.IntMap qualified as IntMap (toList)
|
|
| 27 | +import Data.Array (bounds, indices, elems)
|
|
| 28 | +import Numeric (showHex)
|
|
| 29 | +import Text.Show (show)
|
|
| 30 | +import System.IO (IO, FilePath)
|
|
| 31 | +import GHC.Data.Strict qualified as Strict (Maybe, maybe)
|
|
| 32 | +import GHC.Data.FastString (unpackFS)
|
|
| 33 | +import GHC.Data.FlatBag (FlatBag, elemsFlatBag)
|
|
| 34 | +import GHC.Fingerprint (Fingerprint)
|
|
| 35 | +import GHC.Types.SrcLoc (noSrcSpan)
|
|
| 36 | +import GHC.Types.Name (Name)
|
|
| 37 | +import GHC.Types.Name.Occurrence (OccName)
|
|
| 38 | +import GHC.Types.Tickish (BreakTickIndex, BreakpointId (..))
|
|
| 39 | +import GHC.Types.SptEntry (SptEntry (..))
|
|
| 40 | +import GHC.Types.Error (MessageClass (MCDump))
|
|
| 41 | +import GHC.Utils.Logger (Logger, logMsg)
|
|
| 42 | +import GHC.Utils.Binary (BinSrcSpan (..))
|
|
| 43 | +import GHC.Utils.Encoding.UTF8 (utf8DecodeShortByteString, utf8DecodeByteString)
|
|
| 44 | +import GHC.Utils.Outputable
|
|
| 45 | + (
|
|
| 46 | + defaultDumpStyle,
|
|
| 47 | + SDoc,
|
|
| 48 | + text,
|
|
| 49 | + (<>),
|
|
| 50 | + (<+>),
|
|
| 51 | + quotes,
|
|
| 52 | + hsep,
|
|
| 53 | + vcat,
|
|
| 54 | + hang,
|
|
| 55 | + withPprStyle,
|
|
| 56 | + ppr
|
|
| 57 | + )
|
|
| 58 | +import GHC.Unit.Types (Module)
|
|
| 59 | +import GHC.Iface.Type (IfaceType, IfaceTvBndr, IfaceIdBndr)
|
|
| 60 | +import GHC.HsToCore.Breakpoints (ModBreaks (..))
|
|
| 61 | +import GHC.ByteCode.Types
|
|
| 62 | + (
|
|
| 63 | + FFIInfo (..),
|
|
| 64 | + BCONPtr (..),
|
|
| 65 | + BCOPtr (..),
|
|
| 66 | + UnlinkedBCO (..),
|
|
| 67 | + ByteCodeHpcInfo (..),
|
|
| 68 | + CompiledByteCode (..)
|
|
| 69 | + )
|
|
| 70 | +import GHC.ByteCode.Breakpoints
|
|
| 71 | + (
|
|
| 72 | + InternalBreakpointId (..),
|
|
| 73 | + InternalBreakLoc (..),
|
|
| 74 | + CgBreakInfo (..),
|
|
| 75 | + InternalModBreaks (..)
|
|
| 76 | + )
|
|
| 77 | +import GHC.ByteCode.Binary (OnDiskModuleByteCode (..))
|
|
| 78 | +import GHC.ByteCode.Serialize (readOnDiskModuleByteCode)
|
|
| 79 | +import GHC.Driver.Env.Types (HscEnv)
|
|
| 80 | +import GHCi.FFI (FFIType)
|
|
| 81 | +import GHCi.Message (ConInfoTable (..))
|
|
| 82 | + |
|
| 83 | +-- | Outputs textual information about the contents of a bytecode file.
|
|
| 84 | +showByteCode :: Logger -> HscEnv -> FilePath -> IO ()
|
|
| 85 | +showByteCode logger env path = do
|
|
| 86 | + byteCode <- readOnDiskModuleByteCode env path
|
|
| 87 | + logMsg logger
|
|
| 88 | + MCDump
|
|
| 89 | + noSrcSpan
|
|
| 90 | + (withPprStyle defaultDumpStyle $ pprOnDiskModuleByteCode byteCode)
|
|
| 91 | + |
|
| 92 | +-- | Constructs textual information about the contents of a bytecode file.
|
|
| 93 | +pprOnDiskModuleByteCode :: OnDiskModuleByteCode -> SDoc
|
|
| 94 | +pprOnDiskModuleByteCode OnDiskModuleByteCode {..}
|
|
| 95 | + = vcat [
|
|
| 96 | + pprModuleIdent $ odgbc_module,
|
|
| 97 | + pprOnDiskModuleByteCodeHash $ odgbc_hash,
|
|
| 98 | + pprCompiledByteCode odgbc_module $ odgbc_compiled_byte_code
|
|
| 99 | + ]
|
|
| 100 | + |
|
| 101 | +-- | Constructs textual information about the name of a module.
|
|
| 102 | +pprModuleIdent :: Module -> SDoc
|
|
| 103 | +pprModuleIdent = entry (text "name") . ppr
|
|
| 104 | + |
|
| 105 | +-- | Constructs textual information about the hash of a module.
|
|
| 106 | +pprOnDiskModuleByteCodeHash :: Fingerprint -> SDoc
|
|
| 107 | +pprOnDiskModuleByteCodeHash = entry (text "hash") . ppr
|
|
| 108 | + |
|
| 109 | +-- | Constructs textual information about bytecode.
|
|
| 110 | +pprCompiledByteCode :: Module -- ^ The enclosing module
|
|
| 111 | + -> CompiledByteCode -- ^ The bytecode
|
|
| 112 | + -> SDoc -- ^ The textual information
|
|
| 113 | +pprCompiledByteCode currentModule CompiledByteCode {..}
|
|
| 114 | + = vcat [
|
|
| 115 | + pprByteCodeObjects currentModule $ bc_bcos,
|
|
| 116 | + pprDataConstructorInfoTables $ bc_itbls,
|
|
| 117 | + pprTopLevelStrings $ bc_strs,
|
|
| 118 | + pprBreakpoints currentModule $ bc_breaks,
|
|
| 119 | + pprStaticPointerTableEntries $ bc_spt_entries,
|
|
| 120 | + pprHPCInfo $ bc_hpc_info
|
|
| 121 | + ]
|
|
| 122 | + |
|
| 123 | +-- | Constructs textual information about bytecode objects.
|
|
| 124 | +pprByteCodeObjects :: Module -- ^ The enlosing module
|
|
| 125 | + -> FlatBag UnlinkedBCO -- ^ The bytecode objects
|
|
| 126 | + -> SDoc -- ^ The textual information
|
|
| 127 | +pprByteCodeObjects currentModule = entry (text "objects") .
|
|
| 128 | + vcatOrNone .
|
|
| 129 | + map (pprByteCodeObject currentModule) .
|
|
| 130 | + elemsFlatBag
|
|
| 131 | + |
|
| 132 | +-- | Constructs textual information about a single bytecode object.
|
|
| 133 | +pprByteCodeObject :: Module -- ^ The enclosing module
|
|
| 134 | + -> UnlinkedBCO -- ^ The bytecode object
|
|
| 135 | + -> SDoc -- ^ The textual information
|
|
| 136 | +pprByteCodeObject currentModule byteCodeObject = case byteCodeObject of
|
|
| 137 | + UnlinkedBCO {..}
|
|
| 138 | + -> entry (text "ordinary object" <+> quotes (ppr unlinkedBCOName)) $
|
|
| 139 | + vcat [
|
|
| 140 | + pprArity $ unlinkedBCOArity,
|
|
| 141 | + pprLiterals currentModule $ unlinkedBCOLits,
|
|
| 142 | + pprPointers currentModule $ unlinkedBCOPtrs
|
|
| 143 | + ]
|
|
| 144 | + UnlinkedStaticCon {..}
|
|
| 145 | + -> entry (
|
|
| 146 | + text "static-construction object" <+>
|
|
| 147 | + quotes (ppr unlinkedStaticConName)
|
|
| 148 | + )
|
|
| 149 | + $
|
|
| 150 | + vcat [
|
|
| 151 | + pprDataConstructorName $ unlinkedStaticConDataConName,
|
|
| 152 | + pprLiftedness $ not unlinkedStaticConIsUnlifted,
|
|
| 153 | + pprLiterals currentModule $ unlinkedStaticConLits,
|
|
| 154 | + pprPointers currentModule $ unlinkedStaticConPtrs
|
|
| 155 | + ]
|
|
| 156 | + |
|
| 157 | +-- | Constructs textual information about the arity of an ordinary bytecode
|
|
| 158 | +-- object.
|
|
| 159 | +pprArity :: Int -> SDoc
|
|
| 160 | +pprArity = entry (text "arity") . ppr
|
|
| 161 | + |
|
| 162 | +-- | Constructs textual information about the data constructor name of a
|
|
| 163 | +-- static-construction bytecode object.
|
|
| 164 | +pprDataConstructorName :: Name -> SDoc
|
|
| 165 | +pprDataConstructorName = entry (text "data constructor name") . ppr
|
|
| 166 | + |
|
| 167 | +-- | Constructs textual information about the liftedness of a
|
|
| 168 | +-- static-construction bytecode object.
|
|
| 169 | +pprLiftedness :: Bool -> SDoc
|
|
| 170 | +pprLiftedness = entry (text "lifted") . noOrYes
|
|
| 171 | + |
|
| 172 | +-- | Constructs textual information about literals.
|
|
| 173 | +pprLiterals :: Module -- ^ The enclosing module
|
|
| 174 | + -> FlatBag BCONPtr -- ^ The literals
|
|
| 175 | + -> SDoc -- ^ The textual information
|
|
| 176 | +pprLiterals currentModule = entry (text "literals") .
|
|
| 177 | + vcatOrNone .
|
|
| 178 | + map (pprLiteral currentModule) .
|
|
| 179 | + elemsFlatBag
|
|
| 180 | + |
|
| 181 | +-- | Constructs textual information about a single literal.
|
|
| 182 | +pprLiteral :: Module -- ^ The enclosing module
|
|
| 183 | + -> BCONPtr -- ^ The literal
|
|
| 184 | + -> SDoc -- ^ The textual information
|
|
| 185 | +pprLiteral currentModule literal = case literal of
|
|
| 186 | + BCONPtrWord word
|
|
| 187 | + -> text "word" <+>
|
|
| 188 | + ppr word
|
|
| 189 | + BCONPtrLbl label
|
|
| 190 | + -> text "label" <+>
|
|
| 191 | + quotes (ppr label)
|
|
| 192 | + BCONPtrItbl infoTableName
|
|
| 193 | + -> text "info table of" <+>
|
|
| 194 | + quotes (ppr infoTableName)
|
|
| 195 | + BCONPtrAddr addrName
|
|
| 196 | + -> text "address" <+>
|
|
| 197 | + quotes (ppr addrName)
|
|
| 198 | + BCONPtrStr encodedString
|
|
| 199 | + -> text "top-level string" <+>
|
|
| 200 | + text (show (utf8DecodeByteString encodedString))
|
|
| 201 | + BCONPtrFS string
|
|
| 202 | + -> text "top-level string" <+>
|
|
| 203 | + text (show (unpackFS string))
|
|
| 204 | + BCONPtrFFIInfo ffiInfo
|
|
| 205 | + -> text "foreign function" <+>
|
|
| 206 | + quotes (pprFFIInfo ffiInfo)
|
|
| 207 | + BCONPtrCostCentre breakpointID
|
|
| 208 | + -> text "cost center of breakpoint" <+>
|
|
| 209 | + pprInternalBreakpointID currentModule breakpointID
|
|
| 210 | + |
|
| 211 | +-- | Constructs textual information about FFI info.
|
|
| 212 | +pprFFIInfo :: FFIInfo -> SDoc
|
|
| 213 | +pprFFIInfo FFIInfo {..}
|
|
| 214 | + = hsep (map (pprFFIType >>> (<+> text "->")) ffiInfoArgs) <+>
|
|
| 215 | + pprFFIType ffiInfoRet
|
|
| 216 | + |
|
| 217 | +-- | Constructs textual information about an FFI type.
|
|
| 218 | +pprFFIType :: FFIType -> SDoc
|
|
| 219 | +pprFFIType ffiType = assert (take 3 ident == "FFI") $ text (drop 3 ident) where
|
|
| 220 | + |
|
| 221 | + ident :: String
|
|
| 222 | + ident = show ffiType
|
|
| 223 | + |
|
| 224 | +-- | Constructs textual information about the ID of a bytecode breakpoint.
|
|
| 225 | +pprInternalBreakpointID
|
|
| 226 | + :: Module -- ^ The enclosing module
|
|
| 227 | + -> InternalBreakpointId -- ^ The ID of the bytecode breakpoint
|
|
| 228 | + -> SDoc -- ^ The textual information
|
|
| 229 | +pprInternalBreakpointID currentModule InternalBreakpointId {..}
|
|
| 230 | + | ibi_info_mod == currentModule = indexDoc
|
|
| 231 | + | otherwise = indexDoc <+>
|
|
| 232 | + text "in" <+>
|
|
| 233 | + ppr ibi_info_mod
|
|
| 234 | + where
|
|
| 235 | + |
|
| 236 | + indexDoc :: SDoc
|
|
| 237 | + indexDoc = ppr ibi_info_index
|
|
| 238 | + |
|
| 239 | +-- | Constructs textual information about pointers.
|
|
| 240 | +pprPointers :: Module -- ^ The enclosing module
|
|
| 241 | + -> FlatBag BCOPtr -- ^ The pointers
|
|
| 242 | + -> SDoc -- ^ The textual information
|
|
| 243 | +pprPointers currentModule = entry (text "utilized items") .
|
|
| 244 | + vcatOrNone .
|
|
| 245 | + map (pprPointer currentModule) .
|
|
| 246 | + elemsFlatBag
|
|
| 247 | + |
|
| 248 | +-- | Constructs textual information about a single pointer.
|
|
| 249 | +pprPointer :: Module -- ^ The enclosing module
|
|
| 250 | + -> BCOPtr -- ^ The pointer
|
|
| 251 | + -> SDoc -- ^ The textual information
|
|
| 252 | +pprPointer currentModule pointer = case pointer of
|
|
| 253 | + BCOPtrName name
|
|
| 254 | + -> text "item named" <+> quotes (ppr name)
|
|
| 255 | + BCOPtrPrimOp primOp
|
|
| 256 | + -> text "primitive operation" <+> quotes (ppr primOp)
|
|
| 257 | + BCOPtrBCO byteCodeObject
|
|
| 258 | + -> pprByteCodeObject currentModule byteCodeObject
|
|
| 259 | + BCOPtrBreakArray breakArrayModule
|
|
| 260 | + -> text "break array of module" <+> quotes (ppr breakArrayModule)
|
|
| 261 | + |
|
| 262 | +-- | Constructs textual information about data constructor info tables.
|
|
| 263 | +pprDataConstructorInfoTables :: [(Name, ConInfoTable)] -> SDoc
|
|
| 264 | +pprDataConstructorInfoTables = entry (text "data constructor info tables") .
|
|
| 265 | + vcatOrNone .
|
|
| 266 | + map (uncurry pprDataConstructorInfoTable)
|
|
| 267 | + |
|
| 268 | +-- | Constructs textual information about a single data constructor info table.
|
|
| 269 | +pprDataConstructorInfoTable :: Name -> ConInfoTable -> SDoc
|
|
| 270 | +pprDataConstructorInfoTable dataConstrName ConInfoTable {..}
|
|
| 271 | + = entry (text "info table of" <+> quotes (ppr dataConstrName)) $
|
|
| 272 | + vcat [
|
|
| 273 | + pprPointerWordCount $ conItblPtrs,
|
|
| 274 | + pprNonPointerWordCount $ conItblNPtrs
|
|
| 275 | + ]
|
|
| 276 | + |
|
| 277 | +-- | Constructs textual information about a number of pointer words.
|
|
| 278 | +pprPointerWordCount :: Int -> SDoc
|
|
| 279 | +pprPointerWordCount = entry (text "number of words for pointers") . ppr
|
|
| 280 | + |
|
| 281 | +-- | Constructs textual information about a number of non-pointer words.
|
|
| 282 | +pprNonPointerWordCount :: Int -> SDoc
|
|
| 283 | +pprNonPointerWordCount = entry (text "number of words for non-pointers") . ppr
|
|
| 284 | + |
|
| 285 | +-- | Constructs textual information about top-level strings.
|
|
| 286 | +pprTopLevelStrings :: [(Name, ByteString)] -> SDoc
|
|
| 287 | +pprTopLevelStrings = entry (text "top-level strings") .
|
|
| 288 | + vcatOrNone .
|
|
| 289 | + map (uncurry pprTopLevelString)
|
|
| 290 | + |
|
| 291 | +-- | Constructs textual information about a single top-level string.
|
|
| 292 | +pprTopLevelString :: Name -> ByteString -> SDoc
|
|
| 293 | +pprTopLevelString stringName encodedString = entry (ppr stringName) $
|
|
| 294 | + text $
|
|
| 295 | + show $
|
|
| 296 | + utf8DecodeByteString $
|
|
| 297 | + encodedString
|
|
| 298 | + |
|
| 299 | +-- | Constructs textual information about breakpoints.
|
|
| 300 | +pprBreakpoints :: Module -- ^ The enclosing module
|
|
| 301 | + -> Maybe InternalModBreaks -- ^ The breakpoints
|
|
| 302 | + -> SDoc -- ^ The textual information
|
|
| 303 | +pprBreakpoints currentModule
|
|
| 304 | + = entry (text "breakpoints") .
|
|
| 305 | + maybe (text "<none>") (pprActualBreakpoints currentModule)
|
|
| 306 | + |
|
| 307 | +-- | Constructs textual information about actual breakpoints.
|
|
| 308 | +pprActualBreakpoints :: Module -- ^ The enclosing module
|
|
| 309 | + -> InternalModBreaks -- ^ The actual breakpoints
|
|
| 310 | + -> SDoc -- ^ The textual information
|
|
| 311 | +pprActualBreakpoints currentModule InternalModBreaks {..}
|
|
| 312 | + = vcat [
|
|
| 313 | + pprSourceBreakpoints currentModule $ imodBreaks_modBreaks,
|
|
| 314 | + pprByteCodeBreakpoints currentModule $ imodBreaks_breakInfo
|
|
| 315 | + ]
|
|
| 316 | + |
|
| 317 | +-- | Constructs textual information about source breakpoints.
|
|
| 318 | +pprSourceBreakpoints :: Module -- ^ The enclosing module
|
|
| 319 | + -> ModBreaks -- ^ The source breakpoints
|
|
| 320 | + -> SDoc -- ^ The textual information
|
|
| 321 | +pprSourceBreakpoints currentModule ModBreaks {..}
|
|
| 322 | + = entry (text "source breakpoints") $
|
|
| 323 | + assert (modBreaks_module == currentModule) $
|
|
| 324 | + assert (bounds modBreaks_locs_ == bounds modBreaks_decls) $
|
|
| 325 | + assert (bounds modBreaks_locs_ == bounds modBreaks_vars) $
|
|
| 326 | + vcatOrNone $
|
|
| 327 | + zipWith4 pprSourceBreakpoint (indices modBreaks_locs_)
|
|
| 328 | + (elems modBreaks_locs_)
|
|
| 329 | + (elems modBreaks_decls)
|
|
| 330 | + (elems modBreaks_vars)
|
|
| 331 | + -- The cost center infos in 'modBreaks_ccs', when present, just contain
|
|
| 332 | + -- textual representations of the declaration paths in 'modBreaks_decls'
|
|
| 333 | + -- and the source spans in 'modBreaks_locs_' and are therefore never
|
|
| 334 | + -- shown.
|
|
| 335 | + |
|
| 336 | +-- | Constructs textual information about a single source breakpoint.
|
|
| 337 | +pprSourceBreakpoint :: BreakTickIndex
|
|
| 338 | + -> BinSrcSpan
|
|
| 339 | + -> [String]
|
|
| 340 | + -> [OccName]
|
|
| 341 | + -> SDoc
|
|
| 342 | +pprSourceBreakpoint ix srcSpan declarationPath freeVars
|
|
| 343 | + = entry (text "source breakpoint" <+> ppr ix) $
|
|
| 344 | + vcat [
|
|
| 345 | + pprSrcSpan $ srcSpan,
|
|
| 346 | + pprDeclarationPath $ declarationPath,
|
|
| 347 | + pprFreeVariables $ freeVars
|
|
| 348 | + ]
|
|
| 349 | + |
|
| 350 | +-- | Constructs textual information about a source span.
|
|
| 351 | +pprSrcSpan :: BinSrcSpan -> SDoc
|
|
| 352 | +pprSrcSpan = entry (text "source span") . ppr . unBinSrcSpan
|
|
| 353 | + |
|
| 354 | +-- | Constructs textual information about a declaration path.
|
|
| 355 | +pprDeclarationPath :: [String] -> SDoc
|
|
| 356 | +pprDeclarationPath = entry (text "declaration path") . vcatOrEmpty . map text
|
|
| 357 | + |
|
| 358 | +-- | Constructs textual information about free variables.
|
|
| 359 | +pprFreeVariables :: [OccName] -> SDoc
|
|
| 360 | +pprFreeVariables = entry (text "free variables") . vcatOrNone . map ppr
|
|
| 361 | + |
|
| 362 | +-- | Constructs textual information about bytecode breakpoints.
|
|
| 363 | +pprByteCodeBreakpoints :: Module -- ^ The enclosing module
|
|
| 364 | + -> IntMap CgBreakInfo -- ^ The bytecode breakpoints
|
|
| 365 | + -> SDoc -- ^ The textual information
|
|
| 366 | +pprByteCodeBreakpoints currentModule
|
|
| 367 | + = entry (text "bytecode breakpoints") .
|
|
| 368 | + vcatOrNone .
|
|
| 369 | + map (uncurry (pprByteCodeBreakpoint currentModule)) .
|
|
| 370 | + IntMap.toList
|
|
| 371 | + |
|
| 372 | +-- | Constructs textual information about a single bytecode breakpoint.
|
|
| 373 | +pprByteCodeBreakpoint :: Module -- ^ The enclosing module
|
|
| 374 | + -> Int -- ^ The index of the bytecode breakpoint
|
|
| 375 | + -> CgBreakInfo -- ^ The bytecode breakpoint
|
|
| 376 | + -> SDoc -- ^ The textual information
|
|
| 377 | +pprByteCodeBreakpoint currentModule ix CgBreakInfo {..}
|
|
| 378 | + = entry (text "bytecode breakpoint" <+> ppr ix) $
|
|
| 379 | + vcat [
|
|
| 380 | + pprType $ cgb_resty,
|
|
| 381 | + pprTypeVariables $ cgb_tyvars,
|
|
| 382 | + pprVariables $ cgb_vars,
|
|
| 383 | + pprCorrespondingSourceBreakpoint currentModule $ cgb_tick_id
|
|
| 384 | + ]
|
|
| 385 | + -- That the 'cgb_resty' field holds the type of the breakpoint is apparent
|
|
| 386 | + -- from the fact that this field is set by
|
|
| 387 | + -- 'GHC.StgToByteCode.dehydrateCgBreakInfo' using one of its arguments and
|
|
| 388 | + -- 'GHC.StgToByteCode.dehydrateCgBreakInfo' is always invoked with this
|
|
| 389 | + -- argument set to the extension field of 'Breakpoint', which in turn holds
|
|
| 390 | + -- the type of the breakpoint according to Note [Tickish passes] and the
|
|
| 391 | + -- comment on the instance declaration of @XBreakpoint 'TickishPassStg@.
|
|
| 392 | + |
|
| 393 | +-- | Constructs textual information about a type.
|
|
| 394 | +pprType :: IfaceType -> SDoc
|
|
| 395 | +pprType = entry (text "type") . ppr
|
|
| 396 | + |
|
| 397 | +-- | Constructs textual information about type variables.
|
|
| 398 | +pprTypeVariables :: [IfaceTvBndr] -> SDoc
|
|
| 399 | +pprTypeVariables = entry (text "type variables") .
|
|
| 400 | + vcatOrNone .
|
|
| 401 | + map pprTypeVariableBinder
|
|
| 402 | + |
|
| 403 | +-- | Constructs textual information about a type variable binder.
|
|
| 404 | +pprTypeVariableBinder :: IfaceTvBndr -> SDoc
|
|
| 405 | +pprTypeVariableBinder (name, kind) = ppr name <+> text "::" <+> ppr kind
|
|
| 406 | + |
|
| 407 | +-- | Constructs textual information about variables.
|
|
| 408 | +pprVariables :: [Maybe (IfaceIdBndr, Word)] -> SDoc
|
|
| 409 | +pprVariables = entry (text "variables") . vcatOrNone . map pprVariable
|
|
| 410 | + |
|
| 411 | +-- | Constructs textual information about a single variable.
|
|
| 412 | +pprVariable :: Maybe (IfaceIdBndr, Word) -> SDoc
|
|
| 413 | +pprVariable = maybe (text "<unknown>") (pprVariableBinder . fst)
|
|
| 414 | + |
|
| 415 | +-- | Constructs textual information about a variable binder.
|
|
| 416 | +pprVariableBinder :: IfaceIdBndr -> SDoc
|
|
| 417 | +pprVariableBinder (multiplicity, name, type_)
|
|
| 418 | + = text "%" <> ppr multiplicity <+>
|
|
| 419 | + ppr name <+> text "::" <+> ppr type_
|
|
| 420 | + |
|
| 421 | +-- | Constructs textual information about a source breakpoint corresponding to a
|
|
| 422 | +-- bytecode breakpoint.
|
|
| 423 | +pprCorrespondingSourceBreakpoint :: Module
|
|
| 424 | + -- ^ The enclosing module
|
|
| 425 | + -> Either InternalBreakLoc BreakpointId
|
|
| 426 | + -- ^ A reference to the source breakpoint
|
|
| 427 | + -> SDoc
|
|
| 428 | + -- ^ The textual information
|
|
| 429 | +pprCorrespondingSourceBreakpoint currentModule
|
|
| 430 | + = entry (text "corresponding source breakpoint") .
|
|
| 431 | + pprBreakpointID currentModule .
|
|
| 432 | + either internalBreakLoc id
|
|
| 433 | + |
|
| 434 | +-- | Constructs textual information about the ID of a source breakpoint.
|
|
| 435 | +pprBreakpointID :: Module -- ^ The enclosing module
|
|
| 436 | + -> BreakpointId -- ^ The ID of the source breakpoint
|
|
| 437 | + -> SDoc -- ^ The textual information
|
|
| 438 | +pprBreakpointID currentModule BreakpointId {..}
|
|
| 439 | + | bi_tick_mod == currentModule = indexDoc
|
|
| 440 | + | otherwise = indexDoc <+>
|
|
| 441 | + text "in" <+>
|
|
| 442 | + quotes (ppr bi_tick_mod)
|
|
| 443 | + where
|
|
| 444 | + |
|
| 445 | + indexDoc :: SDoc
|
|
| 446 | + indexDoc = ppr bi_tick_index
|
|
| 447 | + |
|
| 448 | +-- | Constructs textual information about static-pointer table entries.
|
|
| 449 | +pprStaticPointerTableEntries :: [SptEntry] -> SDoc
|
|
| 450 | +pprStaticPointerTableEntries = entry (text "static-pointer table entries") .
|
|
| 451 | + vcatOrNone .
|
|
| 452 | + map pprStaticPointerTableEntry
|
|
| 453 | + |
|
| 454 | +-- | Constructs textual information about a single static-pointer table entry.
|
|
| 455 | +pprStaticPointerTableEntry :: SptEntry -> SDoc
|
|
| 456 | +pprStaticPointerTableEntry (SptEntry name fingerprint)
|
|
| 457 | + = ppr fingerprint <> text ":" <+> ppr name
|
|
| 458 | + |
|
| 459 | +-- | Constructs textual information about HPC info.
|
|
| 460 | +pprHPCInfo :: Strict.Maybe ByteCodeHpcInfo -> SDoc
|
|
| 461 | +pprHPCInfo = entry (text "HPC information") .
|
|
| 462 | + Strict.maybe (text "<none>") pprActualHPCInfo
|
|
| 463 | + |
|
| 464 | +-- | Constructs textual information about actual HPC info.
|
|
| 465 | +pprActualHPCInfo :: ByteCodeHpcInfo -> SDoc
|
|
| 466 | +pprActualHPCInfo ByteCodeHpcInfo {..}
|
|
| 467 | + = vcat [
|
|
| 468 | + pprHPCInfoHash $ bchi_hash,
|
|
| 469 | + pprModuleName $ bchi_module_name,
|
|
| 470 | + pprTickBoxName $ bchi_tickbox_name,
|
|
| 471 | + pprTickCount $ bchi_tick_count
|
|
| 472 | + ]
|
|
| 473 | + where
|
|
| 474 | + |
|
| 475 | +-- | Constructs textual information about the hash of HPC info.
|
|
| 476 | +pprHPCInfoHash :: Int -> SDoc
|
|
| 477 | +pprHPCInfoHash = entry (text "hash") . pprFixedSizeNatural
|
|
| 478 | + |
|
| 479 | +-- | Constructs textual information about a module name.
|
|
| 480 | +pprModuleName :: ShortByteString -> SDoc
|
|
| 481 | +pprModuleName = entry (text "module name") .
|
|
| 482 | + text .
|
|
| 483 | + utf8DecodeShortByteString
|
|
| 484 | + |
|
| 485 | +-- | Constructs textual information about a tick box name.
|
|
| 486 | +pprTickBoxName :: ShortByteString -> SDoc
|
|
| 487 | +pprTickBoxName = entry (text "tick box name") .
|
|
| 488 | + text .
|
|
| 489 | + utf8DecodeShortByteString
|
|
| 490 | + |
|
| 491 | +-- | Constructs textual information about a number of tick counts.
|
|
| 492 | +pprTickCount :: Int -> SDoc
|
|
| 493 | +pprTickCount = entry (text "number of ticks") . ppr
|
|
| 494 | + |
|
| 495 | +-- | Constructs a hexadecimal representation of a natural number such that the
|
|
| 496 | +-- number of hexadecimal digits fits the number of bits used to represent the
|
|
| 497 | +-- natural number.
|
|
| 498 | +pprFixedSizeNatural :: (Integral a, FiniteBits a) => a -> SDoc
|
|
| 499 | +pprFixedSizeNatural num
|
|
| 500 | + = assert (num >= 0) $
|
|
| 501 | + text $ replicate (digitCount - length unpadded) '0' ++ unpadded
|
|
| 502 | + where
|
|
| 503 | + |
|
| 504 | + digitCount :: Int
|
|
| 505 | + digitCount = (finiteBitSize num + 3) `div` 4
|
|
| 506 | + |
|
| 507 | + unpadded :: String
|
|
| 508 | + unpadded = showHex num ""
|
|
| 509 | + |
|
| 510 | +-- | Constructs a textual representation of a boolean, interpreting 'True' and
|
|
| 511 | +-- 'False' as “yes” and “no”, respectively.
|
|
| 512 | +noOrYes :: Bool -> SDoc
|
|
| 513 | +noOrYes bool = text (if bool then "yes" else "no")
|
|
| 514 | + |
|
| 515 | +-- | Constructs an entry in a list of textual data representations.
|
|
| 516 | +entry :: SDoc -- ^ The title of the entry
|
|
| 517 | + -> SDoc -- ^ The contents of the entry
|
|
| 518 | + -> SDoc -- ^ The entry
|
|
| 519 | +entry title content = hang (title <> text ":") 2 content
|
|
| 520 | + |
|
| 521 | +-- | Composes documents vertically in general, but presents an empty document
|
|
| 522 | +-- list as `<none`>.
|
|
| 523 | +vcatOrNone :: [SDoc] -> SDoc
|
|
| 524 | +vcatOrNone [] = text "<none>"
|
|
| 525 | +vcatOrNone docs = vcat docs
|
|
| 526 | + |
|
| 527 | +-- | Composes documents vertically in general, but presents an empty document
|
|
| 528 | +-- list as `<empty`>.
|
|
| 529 | +vcatOrEmpty :: [SDoc] -> SDoc
|
|
| 530 | +vcatOrEmpty [] = text "<empty>"
|
|
| 531 | +vcatOrEmpty docs = vcat docs |
| ... | ... | @@ -217,6 +217,7 @@ Library |
| 217 | 217 | GHC.ByteCode.Linker
|
| 218 | 218 | GHC.ByteCode.Recomp.Binary
|
| 219 | 219 | GHC.ByteCode.Serialize
|
| 220 | + GHC.ByteCode.Show
|
|
| 220 | 221 | GHC.ByteCode.Types
|
| 221 | 222 | GHC.Cmm
|
| 222 | 223 | GHC.Cmm.BlockId
|
| ... | ... | @@ -421,6 +421,13 @@ The available mode flags are: |
| 421 | 421 | Read the interface in ⟨file⟩ and dump it as text to ``stdout``. For
|
| 422 | 422 | example ``ghc --show-iface M.hi``.
|
| 423 | 423 | |
| 424 | +.. ghc-flag:: --show-byte-code ⟨file⟩
|
|
| 425 | + :shortdesc: display contents of a bytecode file.
|
|
| 426 | + :type: mode
|
|
| 427 | + :category: modes
|
|
| 428 | + |
|
| 429 | + Read a bytecode file and dump relevant parts of it as text to ``stdout``.
|
|
| 430 | + |
|
| 424 | 431 | .. ghc-flag:: --supported-extensions
|
| 425 | 432 | --supported-languages
|
| 426 | 433 | :shortdesc: display the supported language extensions
|
| ... | ... | @@ -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
|
| ... | ... | @@ -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)
|
| 1 | +{-# LANGUAGE StaticPointers #-}
|
|
| 2 | + |
|
| 3 | +module Example where
|
|
| 4 | + |
|
| 5 | +import Numeric.Natural (Natural)
|
|
| 6 | +import GHC.StaticPtr (StaticPtr)
|
|
| 7 | + |
|
| 8 | +fibonaccis :: [Natural]
|
|
| 9 | +fibonaccis = 0 : positiveFibonaccis where
|
|
| 10 | + |
|
| 11 | + positiveFibonaccis :: [Natural]
|
|
| 12 | + positiveFibonaccis = 1 : zipWith (+) fibonaccis positiveFibonaccis
|
|
| 13 | + |
|
| 14 | +fibonaccisPtr :: StaticPtr [Natural]
|
|
| 15 | +fibonaccisPtr = static fibonaccis
|
|
| 16 | + |
|
| 17 | +divides :: Integral a => a -> a -> Bool
|
|
| 18 | +k `divides` n = n `mod` k == 0
|
|
| 19 | + |
|
| 20 | +primes :: [Natural]
|
|
| 21 | +primes = 2 : filter isPrime [3 ..] where
|
|
| 22 | + |
|
| 23 | + isPrime :: Natural -> Bool
|
|
| 24 | + isPrime n = not (any (`divides` n) (takeWhile ((<= n) . (^ 2)) primes))
|
|
| 25 | + |
|
| 26 | +primesPtr :: StaticPtr [Natural]
|
|
| 27 | +primesPtr = static primes
|
|
| 28 | + |
|
| 29 | +data BinTree a b = Leaf a | Node (BinTree a b) b (BinTree a b)
|
|
| 30 | + |
|
| 31 | +data PerfectTree a = PerfectTree a | Nested (PerfectTree (a, a)) |
| 1 | +TOP=../..
|
|
| 2 | +include $(TOP)/mk/boilerplate.mk
|
|
| 3 | +include $(TOP)/mk/test.mk
|
|
| 4 | + |
|
| 5 | +compile = '$(TEST_HC)' $(TEST_HC_OPTS) -fbyte-code -fwrite-byte-code -no-link
|
|
| 6 | +show = '$(TEST_HC)' $(TEST_HC_OPTS) --show-byte-code
|
|
| 7 | +normalize = sed -E -e ' \
|
|
| 8 | + s/_r[[:alnum:]]+/_@name_suffix@/g; \
|
|
| 9 | + s/[[:xdigit:]]{32}/@hash@/g; \
|
|
| 10 | + s/word [[:digit:]]{4}[[:digit:]]*/word @large_word@/ \
|
|
| 11 | + '
|
|
| 12 | + |
|
| 13 | +show-bytecode-vanilla:
|
|
| 14 | + $(compile) Example.hs
|
|
| 15 | + $(show) Example.gbc | $(normalize)
|
|
| 16 | + |
|
| 17 | +show-bytecode-breakpoints:
|
|
| 18 | + $(compile) -fbreak-points Example.hs
|
|
| 19 | + $(show) Example.gbc | $(normalize)
|
|
| 20 | + |
|
| 21 | +show-bytecode-hpc:
|
|
| 22 | + $(compile) -fhpc Example.hs
|
|
| 23 | + $(show) Example.gbc | $(normalize) |
| 1 | +test(
|
|
| 2 | + 'show-bytecode-vanilla',
|
|
| 3 | + extra_files(['Example.hs']),
|
|
| 4 | + makefile_test,
|
|
| 5 | + []
|
|
| 6 | +)
|
|
| 7 | +test(
|
|
| 8 | + 'show-bytecode-breakpoints',
|
|
| 9 | + extra_files(['Example.hs']),
|
|
| 10 | + makefile_test,
|
|
| 11 | + []
|
|
| 12 | +)
|
|
| 13 | +test(
|
|
| 14 | + 'show-bytecode-hpc',
|
|
| 15 | + extra_files(['Example.hs']),
|
|
| 16 | + makefile_test,
|
|
| 17 | + []
|
|
| 18 | +) |
| 1 | +[1 of 1] Compiling Example ( Example.hs, Example.gbc )
|
|
| 2 | +name: Example
|
|
| 3 | +hash: @hash@
|
|
| 4 | +objects:
|
|
| 5 | + ordinary object ‘primesPtr’:
|
|
| 6 | + arity: 0
|
|
| 7 | + literals:
|
|
| 8 | + top-level string "Example"
|
|
| 9 | + top-level string "main"
|
|
| 10 | + cost center of breakpoint 0
|
|
| 11 | + utilized items:
|
|
| 12 | + break array of module ‘Example’
|
|
| 13 | + item named ‘static_ptr1’
|
|
| 14 | + item named ‘$dTypeable2_@name_suffix@’
|
|
| 15 | + item named ‘$fIsStaticStaticPtr’
|
|
| 16 | + static-construction object ‘static_ptr1’:
|
|
| 17 | + data constructor name: StaticPtr
|
|
| 18 | + lifted: yes
|
|
| 19 | + literals:
|
|
| 20 | + word @large_word@
|
|
| 21 | + word @large_word@
|
|
| 22 | + utilized items:
|
|
| 23 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 24 | + item named ‘primes’
|
|
| 25 | + static-construction object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 26 | + data constructor name: StaticPtrInfo
|
|
| 27 | + lifted: yes
|
|
| 28 | + literals: <none>
|
|
| 29 | + utilized items:
|
|
| 30 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 31 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 32 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 33 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 34 | + arity: 0
|
|
| 35 | + literals: top-level string "main"
|
|
| 36 | + utilized items:
|
|
| 37 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 38 | + arity: 0
|
|
| 39 | + literals: <none>
|
|
| 40 | + utilized items: item named ‘unpackCString#’
|
|
| 41 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 42 | + arity: 0
|
|
| 43 | + literals: top-level string "Example"
|
|
| 44 | + utilized items:
|
|
| 45 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 46 | + arity: 0
|
|
| 47 | + literals: <none>
|
|
| 48 | + utilized items: item named ‘unpackCString#’
|
|
| 49 | + static-construction object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 50 | + data constructor name: (,)
|
|
| 51 | + lifted: yes
|
|
| 52 | + literals: <none>
|
|
| 53 | + utilized items:
|
|
| 54 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 55 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 56 | + static-construction object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 57 | + data constructor name: I#
|
|
| 58 | + lifted: yes
|
|
| 59 | + literals: word 27
|
|
| 60 | + utilized items: <none>
|
|
| 61 | + static-construction object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 62 | + data constructor name: I#
|
|
| 63 | + lifted: yes
|
|
| 64 | + literals: word 20
|
|
| 65 | + utilized items: <none>
|
|
| 66 | + ordinary object ‘primes’:
|
|
| 67 | + arity: 0
|
|
| 68 | + literals:
|
|
| 69 | + top-level string "Example"
|
|
| 70 | + top-level string "main"
|
|
| 71 | + cost center of breakpoint 2
|
|
| 72 | + info table of ‘:’
|
|
| 73 | + utilized items:
|
|
| 74 | + break array of module ‘Example’
|
|
| 75 | + ordinary object ‘primes_sat_@name_suffix@’:
|
|
| 76 | + arity: 0
|
|
| 77 | + literals:
|
|
| 78 | + top-level string "Example"
|
|
| 79 | + top-level string "main"
|
|
| 80 | + cost center of breakpoint 1
|
|
| 81 | + utilized items:
|
|
| 82 | + break array of module ‘Example’
|
|
| 83 | + ordinary object ‘primes_sat_@name_suffix@’:
|
|
| 84 | + arity: 0
|
|
| 85 | + literals: <none>
|
|
| 86 | + utilized items:
|
|
| 87 | + ordinary object ‘primes_sat_@name_suffix@’:
|
|
| 88 | + arity: 0
|
|
| 89 | + literals:
|
|
| 90 | + word 3
|
|
| 91 | + info table of ‘IS’
|
|
| 92 | + utilized items:
|
|
| 93 | + item named ‘$fNumNatural’
|
|
| 94 | + item named ‘fromInteger’
|
|
| 95 | + item named ‘$fEnumNatural’
|
|
| 96 | + item named ‘enumFrom’
|
|
| 97 | + item named ‘isPrime_@name_suffix@’
|
|
| 98 | + item named ‘filter’
|
|
| 99 | + ordinary object ‘primes_sat_@name_suffix@’:
|
|
| 100 | + arity: 0
|
|
| 101 | + literals:
|
|
| 102 | + word 2
|
|
| 103 | + info table of ‘IS’
|
|
| 104 | + utilized items:
|
|
| 105 | + item named ‘$fNumNatural’
|
|
| 106 | + item named ‘fromInteger’
|
|
| 107 | + ordinary object ‘isPrime_@name_suffix@’:
|
|
| 108 | + arity: 1
|
|
| 109 | + literals:
|
|
| 110 | + top-level string "Example"
|
|
| 111 | + top-level string "main"
|
|
| 112 | + cost center of breakpoint 9
|
|
| 113 | + utilized items:
|
|
| 114 | + break array of module ‘Example’
|
|
| 115 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 116 | + arity: 1
|
|
| 117 | + literals:
|
|
| 118 | + top-level string "Example"
|
|
| 119 | + top-level string "main"
|
|
| 120 | + cost center of breakpoint 8
|
|
| 121 | + utilized items:
|
|
| 122 | + break array of module ‘Example’
|
|
| 123 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 124 | + arity: 1
|
|
| 125 | + literals:
|
|
| 126 | + top-level string "Example"
|
|
| 127 | + top-level string "main"
|
|
| 128 | + cost center of breakpoint 7
|
|
| 129 | + utilized items:
|
|
| 130 | + break array of module ‘Example’
|
|
| 131 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 132 | + arity: 1
|
|
| 133 | + literals:
|
|
| 134 | + top-level string "Example"
|
|
| 135 | + top-level string "main"
|
|
| 136 | + cost center of breakpoint 6
|
|
| 137 | + utilized items:
|
|
| 138 | + break array of module ‘Example’
|
|
| 139 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 140 | + arity: 0
|
|
| 141 | + literals:
|
|
| 142 | + top-level string "Example"
|
|
| 143 | + top-level string "main"
|
|
| 144 | + cost center of breakpoint 5
|
|
| 145 | + word 2
|
|
| 146 | + info table of ‘IS’
|
|
| 147 | + utilized items:
|
|
| 148 | + break array of module ‘Example’
|
|
| 149 | + ordinary object ‘v_@name_suffix@’:
|
|
| 150 | + arity: 0
|
|
| 151 | + literals: <none>
|
|
| 152 | + utilized items:
|
|
| 153 | + item named ‘$fIntegralInteger’
|
|
| 154 | + item named ‘$fNumNatural’
|
|
| 155 | + item named ‘^’
|
|
| 156 | + ordinary object ‘pap_@name_suffix@’:
|
|
| 157 | + arity: 3
|
|
| 158 | + literals: <none>
|
|
| 159 | + utilized items: <none>
|
|
| 160 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 161 | + arity: 1
|
|
| 162 | + literals:
|
|
| 163 | + top-level string "Example"
|
|
| 164 | + top-level string "main"
|
|
| 165 | + cost center of breakpoint 4
|
|
| 166 | + utilized items:
|
|
| 167 | + break array of module ‘Example’
|
|
| 168 | + ordinary object ‘v_@name_suffix@’:
|
|
| 169 | + arity: 0
|
|
| 170 | + literals: <none>
|
|
| 171 | + utilized items:
|
|
| 172 | + item named ‘$fOrdNatural’
|
|
| 173 | + item named ‘<=’
|
|
| 174 | + ordinary object ‘pap_@name_suffix@’:
|
|
| 175 | + arity: 3
|
|
| 176 | + literals: <none>
|
|
| 177 | + utilized items: <none>
|
|
| 178 | + item named ‘.’
|
|
| 179 | + item named ‘primes’
|
|
| 180 | + item named ‘takeWhile’
|
|
| 181 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 182 | + arity: 1
|
|
| 183 | + literals:
|
|
| 184 | + top-level string "Example"
|
|
| 185 | + top-level string "main"
|
|
| 186 | + cost center of breakpoint 3
|
|
| 187 | + utilized items:
|
|
| 188 | + break array of module ‘Example’
|
|
| 189 | + ordinary object ‘pap_@name_suffix@’:
|
|
| 190 | + arity: 2
|
|
| 191 | + literals: <none>
|
|
| 192 | + utilized items:
|
|
| 193 | + item named ‘$fIntegralNatural’
|
|
| 194 | + item named ‘divides’
|
|
| 195 | + item named ‘$fFoldableList’
|
|
| 196 | + item named ‘any’
|
|
| 197 | + item named ‘not’
|
|
| 198 | + ordinary object ‘fibonaccisPtr’:
|
|
| 199 | + arity: 0
|
|
| 200 | + literals:
|
|
| 201 | + top-level string "Example"
|
|
| 202 | + top-level string "main"
|
|
| 203 | + cost center of breakpoint 10
|
|
| 204 | + utilized items:
|
|
| 205 | + break array of module ‘Example’
|
|
| 206 | + item named ‘static_ptr’
|
|
| 207 | + item named ‘$dTypeable2_@name_suffix@’
|
|
| 208 | + item named ‘$fIsStaticStaticPtr’
|
|
| 209 | + static-construction object ‘static_ptr’:
|
|
| 210 | + data constructor name: StaticPtr
|
|
| 211 | + lifted: yes
|
|
| 212 | + literals:
|
|
| 213 | + word @large_word@
|
|
| 214 | + word @large_word@
|
|
| 215 | + utilized items:
|
|
| 216 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 217 | + item named ‘fibonaccis’
|
|
| 218 | + static-construction object ‘static_ptr_sat_@name_suffix@’:
|
|
| 219 | + data constructor name: StaticPtrInfo
|
|
| 220 | + lifted: yes
|
|
| 221 | + literals: <none>
|
|
| 222 | + utilized items:
|
|
| 223 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 224 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 225 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 226 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 227 | + arity: 0
|
|
| 228 | + literals: top-level string "main"
|
|
| 229 | + utilized items:
|
|
| 230 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 231 | + arity: 0
|
|
| 232 | + literals: <none>
|
|
| 233 | + utilized items: item named ‘unpackCString#’
|
|
| 234 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 235 | + arity: 0
|
|
| 236 | + literals: top-level string "Example"
|
|
| 237 | + utilized items:
|
|
| 238 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 239 | + arity: 0
|
|
| 240 | + literals: <none>
|
|
| 241 | + utilized items: item named ‘unpackCString#’
|
|
| 242 | + static-construction object ‘static_ptr_sat_@name_suffix@’:
|
|
| 243 | + data constructor name: (,)
|
|
| 244 | + lifted: yes
|
|
| 245 | + literals: <none>
|
|
| 246 | + utilized items:
|
|
| 247 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 248 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 249 | + static-construction object ‘static_ptr_sat_@name_suffix@’:
|
|
| 250 | + data constructor name: I#
|
|
| 251 | + lifted: yes
|
|
| 252 | + literals: word 15
|
|
| 253 | + utilized items: <none>
|
|
| 254 | + static-construction object ‘static_ptr_sat_@name_suffix@’:
|
|
| 255 | + data constructor name: I#
|
|
| 256 | + lifted: yes
|
|
| 257 | + literals: word 24
|
|
| 258 | + utilized items: <none>
|
|
| 259 | + ordinary object ‘fibonaccis’:
|
|
| 260 | + arity: 0
|
|
| 261 | + literals:
|
|
| 262 | + top-level string "Example"
|
|
| 263 | + top-level string "main"
|
|
| 264 | + cost center of breakpoint 11
|
|
| 265 | + info table of ‘:’
|
|
| 266 | + utilized items:
|
|
| 267 | + break array of module ‘Example’
|
|
| 268 | + ordinary object ‘fibonaccis_sat_@name_suffix@’:
|
|
| 269 | + arity: 0
|
|
| 270 | + literals:
|
|
| 271 | + word 0
|
|
| 272 | + info table of ‘IS’
|
|
| 273 | + utilized items:
|
|
| 274 | + item named ‘$fNumNatural’
|
|
| 275 | + item named ‘fromInteger’
|
|
| 276 | + item named ‘positiveFibonaccis_@name_suffix@’
|
|
| 277 | + ordinary object ‘positiveFibonaccis_@name_suffix@’:
|
|
| 278 | + arity: 0
|
|
| 279 | + literals:
|
|
| 280 | + top-level string "Example"
|
|
| 281 | + top-level string "main"
|
|
| 282 | + cost center of breakpoint 13
|
|
| 283 | + info table of ‘:’
|
|
| 284 | + utilized items:
|
|
| 285 | + break array of module ‘Example’
|
|
| 286 | + ordinary object ‘positiveFibonaccis_sat_@name_suffix@’:
|
|
| 287 | + arity: 0
|
|
| 288 | + literals:
|
|
| 289 | + top-level string "Example"
|
|
| 290 | + top-level string "main"
|
|
| 291 | + cost center of breakpoint 12
|
|
| 292 | + utilized items:
|
|
| 293 | + break array of module ‘Example’
|
|
| 294 | + ordinary object ‘positiveFibonaccis_sat_@name_suffix@’:
|
|
| 295 | + arity: 0
|
|
| 296 | + literals: <none>
|
|
| 297 | + utilized items:
|
|
| 298 | + item named ‘$fNumNatural’
|
|
| 299 | + item named ‘+’
|
|
| 300 | + item named ‘positiveFibonaccis_@name_suffix@’
|
|
| 301 | + item named ‘fibonaccis’
|
|
| 302 | + item named ‘zipWith’
|
|
| 303 | + ordinary object ‘positiveFibonaccis_sat_@name_suffix@’:
|
|
| 304 | + arity: 0
|
|
| 305 | + literals:
|
|
| 306 | + word 1
|
|
| 307 | + info table of ‘IS’
|
|
| 308 | + utilized items:
|
|
| 309 | + item named ‘$fNumNatural’
|
|
| 310 | + item named ‘fromInteger’
|
|
| 311 | + ordinary object ‘$dTypeable2_@name_suffix@’:
|
|
| 312 | + arity: 0
|
|
| 313 | + literals: <none>
|
|
| 314 | + utilized items:
|
|
| 315 | + item named ‘$dTypeable_@name_suffix@’
|
|
| 316 | + item named ‘$dTypeable1_@name_suffix@’
|
|
| 317 | + item named ‘mkTrAppChecked’
|
|
| 318 | + ordinary object ‘$dTypeable1_@name_suffix@’:
|
|
| 319 | + arity: 0
|
|
| 320 | + literals: info table of ‘[]’
|
|
| 321 | + utilized items:
|
|
| 322 | + item named ‘$tcList’
|
|
| 323 | + item named ‘mkTrCon’
|
|
| 324 | + ordinary object ‘$dTypeable_@name_suffix@’:
|
|
| 325 | + arity: 0
|
|
| 326 | + literals: info table of ‘[]’
|
|
| 327 | + utilized items:
|
|
| 328 | + item named ‘$tcNatural’
|
|
| 329 | + item named ‘mkTrCon’
|
|
| 330 | + static-construction object ‘$tc'Nested’:
|
|
| 331 | + data constructor name: TyCon
|
|
| 332 | + lifted: yes
|
|
| 333 | + literals:
|
|
| 334 | + word @large_word@
|
|
| 335 | + word @large_word@
|
|
| 336 | + word 1
|
|
| 337 | + utilized items:
|
|
| 338 | + item named ‘$trModule’
|
|
| 339 | + item named ‘$tc'Nested2_@name_suffix@’
|
|
| 340 | + item named ‘$krep17_@name_suffix@’
|
|
| 341 | + static-construction object ‘$tc'Nested2_@name_suffix@’:
|
|
| 342 | + data constructor name: TrNameS
|
|
| 343 | + lifted: yes
|
|
| 344 | + literals: address ‘$tc'Nested1_@name_suffix@’
|
|
| 345 | + utilized items: <none>
|
|
| 346 | + static-construction object ‘$krep17_@name_suffix@’:
|
|
| 347 | + data constructor name: KindRepFun
|
|
| 348 | + lifted: yes
|
|
| 349 | + literals: <none>
|
|
| 350 | + utilized items:
|
|
| 351 | + item named ‘$krep16_@name_suffix@’
|
|
| 352 | + item named ‘$krep13_@name_suffix@’
|
|
| 353 | + static-construction object ‘$krep16_@name_suffix@’:
|
|
| 354 | + data constructor name: KindRepTyConApp
|
|
| 355 | + lifted: yes
|
|
| 356 | + literals: <none>
|
|
| 357 | + utilized items:
|
|
| 358 | + item named ‘$tcPerfectTree’
|
|
| 359 | + item named ‘$krep15_@name_suffix@’
|
|
| 360 | + static-construction object ‘$krep15_@name_suffix@’:
|
|
| 361 | + data constructor name: :
|
|
| 362 | + lifted: yes
|
|
| 363 | + literals: <none>
|
|
| 364 | + utilized items:
|
|
| 365 | + item named ‘$krep4_@name_suffix@’
|
|
| 366 | + item named ‘[]’
|
|
| 367 | + static-construction object ‘$tc'PerfectTree’:
|
|
| 368 | + data constructor name: TyCon
|
|
| 369 | + lifted: yes
|
|
| 370 | + literals:
|
|
| 371 | + word @large_word@
|
|
| 372 | + word @large_word@
|
|
| 373 | + word 1
|
|
| 374 | + utilized items:
|
|
| 375 | + item named ‘$trModule’
|
|
| 376 | + item named ‘$tc'PerfectTree2_@name_suffix@’
|
|
| 377 | + item named ‘$krep14_@name_suffix@’
|
|
| 378 | + static-construction object ‘$tc'PerfectTree2_@name_suffix@’:
|
|
| 379 | + data constructor name: TrNameS
|
|
| 380 | + lifted: yes
|
|
| 381 | + literals: address ‘$tc'PerfectTree1_@name_suffix@’
|
|
| 382 | + utilized items: <none>
|
|
| 383 | + static-construction object ‘$krep14_@name_suffix@’:
|
|
| 384 | + data constructor name: KindRepFun
|
|
| 385 | + lifted: yes
|
|
| 386 | + literals: <none>
|
|
| 387 | + utilized items:
|
|
| 388 | + item named ‘$krep1_@name_suffix@’
|
|
| 389 | + item named ‘$krep13_@name_suffix@’
|
|
| 390 | + static-construction object ‘$krep13_@name_suffix@’:
|
|
| 391 | + data constructor name: KindRepTyConApp
|
|
| 392 | + lifted: yes
|
|
| 393 | + literals: <none>
|
|
| 394 | + utilized items:
|
|
| 395 | + item named ‘$tcPerfectTree’
|
|
| 396 | + item named ‘$krep12_@name_suffix@’
|
|
| 397 | + static-construction object ‘$krep12_@name_suffix@’:
|
|
| 398 | + data constructor name: :
|
|
| 399 | + lifted: yes
|
|
| 400 | + literals: <none>
|
|
| 401 | + utilized items:
|
|
| 402 | + item named ‘$krep1_@name_suffix@’
|
|
| 403 | + item named ‘[]’
|
|
| 404 | + static-construction object ‘$tcPerfectTree’:
|
|
| 405 | + data constructor name: TyCon
|
|
| 406 | + lifted: yes
|
|
| 407 | + literals:
|
|
| 408 | + word @large_word@
|
|
| 409 | + word @large_word@
|
|
| 410 | + word 0
|
|
| 411 | + utilized items:
|
|
| 412 | + item named ‘$trModule’
|
|
| 413 | + item named ‘$tcPerfectTree2_@name_suffix@’
|
|
| 414 | + item named ‘krep$*Arr*’
|
|
| 415 | + static-construction object ‘$tcPerfectTree2_@name_suffix@’:
|
|
| 416 | + data constructor name: TrNameS
|
|
| 417 | + lifted: yes
|
|
| 418 | + literals: address ‘$tcPerfectTree1_@name_suffix@’
|
|
| 419 | + utilized items: <none>
|
|
| 420 | + static-construction object ‘$tc'Node’:
|
|
| 421 | + data constructor name: TyCon
|
|
| 422 | + lifted: yes
|
|
| 423 | + literals:
|
|
| 424 | + word @large_word@
|
|
| 425 | + word @large_word@
|
|
| 426 | + word 2
|
|
| 427 | + utilized items:
|
|
| 428 | + item named ‘$trModule’
|
|
| 429 | + item named ‘$tc'Node2_@name_suffix@’
|
|
| 430 | + item named ‘$krep11_@name_suffix@’
|
|
| 431 | + static-construction object ‘$tc'Node2_@name_suffix@’:
|
|
| 432 | + data constructor name: TrNameS
|
|
| 433 | + lifted: yes
|
|
| 434 | + literals: address ‘$tc'Node1_@name_suffix@’
|
|
| 435 | + utilized items: <none>
|
|
| 436 | + static-construction object ‘$krep11_@name_suffix@’:
|
|
| 437 | + data constructor name: KindRepFun
|
|
| 438 | + lifted: yes
|
|
| 439 | + literals: <none>
|
|
| 440 | + utilized items:
|
|
| 441 | + item named ‘$krep7_@name_suffix@’
|
|
| 442 | + item named ‘$krep10_@name_suffix@’
|
|
| 443 | + static-construction object ‘$krep10_@name_suffix@’:
|
|
| 444 | + data constructor name: KindRepFun
|
|
| 445 | + lifted: yes
|
|
| 446 | + literals: <none>
|
|
| 447 | + utilized items:
|
|
| 448 | + item named ‘$krep_@name_suffix@’
|
|
| 449 | + item named ‘$krep9_@name_suffix@’
|
|
| 450 | + static-construction object ‘$krep9_@name_suffix@’:
|
|
| 451 | + data constructor name: KindRepFun
|
|
| 452 | + lifted: yes
|
|
| 453 | + literals: <none>
|
|
| 454 | + utilized items:
|
|
| 455 | + item named ‘$krep7_@name_suffix@’
|
|
| 456 | + item named ‘$krep7_@name_suffix@’
|
|
| 457 | + static-construction object ‘$tc'Leaf’:
|
|
| 458 | + data constructor name: TyCon
|
|
| 459 | + lifted: yes
|
|
| 460 | + literals:
|
|
| 461 | + word @large_word@
|
|
| 462 | + word @large_word@
|
|
| 463 | + word 2
|
|
| 464 | + utilized items:
|
|
| 465 | + item named ‘$trModule’
|
|
| 466 | + item named ‘$tc'Leaf2_@name_suffix@’
|
|
| 467 | + item named ‘$krep8_@name_suffix@’
|
|
| 468 | + static-construction object ‘$tc'Leaf2_@name_suffix@’:
|
|
| 469 | + data constructor name: TrNameS
|
|
| 470 | + lifted: yes
|
|
| 471 | + literals: address ‘$tc'Leaf1_@name_suffix@’
|
|
| 472 | + utilized items: <none>
|
|
| 473 | + static-construction object ‘$krep8_@name_suffix@’:
|
|
| 474 | + data constructor name: KindRepFun
|
|
| 475 | + lifted: yes
|
|
| 476 | + literals: <none>
|
|
| 477 | + utilized items:
|
|
| 478 | + item named ‘$krep1_@name_suffix@’
|
|
| 479 | + item named ‘$krep7_@name_suffix@’
|
|
| 480 | + static-construction object ‘$krep7_@name_suffix@’:
|
|
| 481 | + data constructor name: KindRepTyConApp
|
|
| 482 | + lifted: yes
|
|
| 483 | + literals: <none>
|
|
| 484 | + utilized items:
|
|
| 485 | + item named ‘$tcBinTree’
|
|
| 486 | + item named ‘$krep6_@name_suffix@’
|
|
| 487 | + static-construction object ‘$krep6_@name_suffix@’:
|
|
| 488 | + data constructor name: :
|
|
| 489 | + lifted: yes
|
|
| 490 | + literals: <none>
|
|
| 491 | + utilized items:
|
|
| 492 | + item named ‘$krep1_@name_suffix@’
|
|
| 493 | + item named ‘$krep5_@name_suffix@’
|
|
| 494 | + static-construction object ‘$krep5_@name_suffix@’:
|
|
| 495 | + data constructor name: :
|
|
| 496 | + lifted: yes
|
|
| 497 | + literals: <none>
|
|
| 498 | + utilized items:
|
|
| 499 | + item named ‘$krep_@name_suffix@’
|
|
| 500 | + item named ‘[]’
|
|
| 501 | + static-construction object ‘$tcBinTree’:
|
|
| 502 | + data constructor name: TyCon
|
|
| 503 | + lifted: yes
|
|
| 504 | + literals:
|
|
| 505 | + word @large_word@
|
|
| 506 | + word @large_word@
|
|
| 507 | + word 0
|
|
| 508 | + utilized items:
|
|
| 509 | + item named ‘$trModule’
|
|
| 510 | + item named ‘$tcBinTree2_@name_suffix@’
|
|
| 511 | + item named ‘krep$*->*->*’
|
|
| 512 | + static-construction object ‘$tcBinTree2_@name_suffix@’:
|
|
| 513 | + data constructor name: TrNameS
|
|
| 514 | + lifted: yes
|
|
| 515 | + literals: address ‘$tcBinTree1_@name_suffix@’
|
|
| 516 | + utilized items: <none>
|
|
| 517 | + static-construction object ‘$krep4_@name_suffix@’:
|
|
| 518 | + data constructor name: KindRepTyConApp
|
|
| 519 | + lifted: yes
|
|
| 520 | + literals: <none>
|
|
| 521 | + utilized items:
|
|
| 522 | + item named ‘$tcTuple2’
|
|
| 523 | + item named ‘$krep3_@name_suffix@’
|
|
| 524 | + static-construction object ‘$krep3_@name_suffix@’:
|
|
| 525 | + data constructor name: :
|
|
| 526 | + lifted: yes
|
|
| 527 | + literals: <none>
|
|
| 528 | + utilized items:
|
|
| 529 | + item named ‘$krep1_@name_suffix@’
|
|
| 530 | + item named ‘$krep2_@name_suffix@’
|
|
| 531 | + static-construction object ‘$krep2_@name_suffix@’:
|
|
| 532 | + data constructor name: :
|
|
| 533 | + lifted: yes
|
|
| 534 | + literals: <none>
|
|
| 535 | + utilized items:
|
|
| 536 | + item named ‘$krep1_@name_suffix@’
|
|
| 537 | + item named ‘[]’
|
|
| 538 | + static-construction object ‘$krep1_@name_suffix@’:
|
|
| 539 | + data constructor name: KindRepVar
|
|
| 540 | + lifted: yes
|
|
| 541 | + literals: word 0
|
|
| 542 | + utilized items: <none>
|
|
| 543 | + static-construction object ‘$krep_@name_suffix@’:
|
|
| 544 | + data constructor name: KindRepVar
|
|
| 545 | + lifted: yes
|
|
| 546 | + literals: word 1
|
|
| 547 | + utilized items: <none>
|
|
| 548 | + static-construction object ‘$trModule’:
|
|
| 549 | + data constructor name: Module
|
|
| 550 | + lifted: yes
|
|
| 551 | + literals: <none>
|
|
| 552 | + utilized items:
|
|
| 553 | + item named ‘$trModule2_@name_suffix@’
|
|
| 554 | + item named ‘$trModule4_@name_suffix@’
|
|
| 555 | + static-construction object ‘$trModule4_@name_suffix@’:
|
|
| 556 | + data constructor name: TrNameS
|
|
| 557 | + lifted: yes
|
|
| 558 | + literals: address ‘$trModule3_@name_suffix@’
|
|
| 559 | + utilized items: <none>
|
|
| 560 | + static-construction object ‘$trModule2_@name_suffix@’:
|
|
| 561 | + data constructor name: TrNameS
|
|
| 562 | + lifted: yes
|
|
| 563 | + literals: address ‘$trModule1_@name_suffix@’
|
|
| 564 | + utilized items: <none>
|
|
| 565 | + ordinary object ‘divides’:
|
|
| 566 | + arity: 3
|
|
| 567 | + literals: <none>
|
|
| 568 | + utilized items:
|
|
| 569 | + ordinary object ‘$dReal_@name_suffix@’:
|
|
| 570 | + arity: 0
|
|
| 571 | + literals: <none>
|
|
| 572 | + utilized items:
|
|
| 573 | + ordinary object ‘$dNum_@name_suffix@’:
|
|
| 574 | + arity: 0
|
|
| 575 | + literals: <none>
|
|
| 576 | + utilized items:
|
|
| 577 | + ordinary object ‘$dEq_@name_suffix@’:
|
|
| 578 | + arity: 0
|
|
| 579 | + literals: <none>
|
|
| 580 | + utilized items:
|
|
| 581 | + ordinary object ‘$dEq1_@name_suffix@’:
|
|
| 582 | + arity: 0
|
|
| 583 | + literals: <none>
|
|
| 584 | + utilized items:
|
|
| 585 | + ordinary object ‘bcprep_@name_suffix@’:
|
|
| 586 | + arity: 5
|
|
| 587 | + literals:
|
|
| 588 | + top-level string "Example"
|
|
| 589 | + top-level string "main"
|
|
| 590 | + cost center of breakpoint 15
|
|
| 591 | + utilized items:
|
|
| 592 | + break array of module ‘Example’
|
|
| 593 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 594 | + arity: 1
|
|
| 595 | + literals:
|
|
| 596 | + word 0
|
|
| 597 | + info table of ‘IS’
|
|
| 598 | + utilized items: item named ‘fromInteger’
|
|
| 599 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 600 | + arity: 3
|
|
| 601 | + literals:
|
|
| 602 | + top-level string "Example"
|
|
| 603 | + top-level string "main"
|
|
| 604 | + cost center of breakpoint 14
|
|
| 605 | + utilized items:
|
|
| 606 | + break array of module ‘Example’
|
|
| 607 | + item named ‘mod’
|
|
| 608 | + item named ‘==’
|
|
| 609 | + item named ‘$p1Ord’
|
|
| 610 | + item named ‘$p2Real’
|
|
| 611 | + item named ‘$p1Real’
|
|
| 612 | + item named ‘$p1Integral’
|
|
| 613 | + ordinary object ‘Node’:
|
|
| 614 | + arity: 3
|
|
| 615 | + literals: info table of ‘Node’
|
|
| 616 | + utilized items: <none>
|
|
| 617 | + ordinary object ‘Leaf’:
|
|
| 618 | + arity: 1
|
|
| 619 | + literals: info table of ‘Leaf’
|
|
| 620 | + utilized items: <none>
|
|
| 621 | + ordinary object ‘Nested’:
|
|
| 622 | + arity: 1
|
|
| 623 | + literals: info table of ‘Nested’
|
|
| 624 | + utilized items: <none>
|
|
| 625 | + ordinary object ‘PerfectTree’:
|
|
| 626 | + arity: 1
|
|
| 627 | + literals: info table of ‘PerfectTree’
|
|
| 628 | + utilized items: <none>
|
|
| 629 | +data constructor info tables:
|
|
| 630 | + info table of ‘PerfectTree’:
|
|
| 631 | + number of words for pointers: 1
|
|
| 632 | + number of words for non-pointers: 0
|
|
| 633 | + info table of ‘Nested’:
|
|
| 634 | + number of words for pointers: 1
|
|
| 635 | + number of words for non-pointers: 0
|
|
| 636 | + info table of ‘Leaf’:
|
|
| 637 | + number of words for pointers: 1
|
|
| 638 | + number of words for non-pointers: 0
|
|
| 639 | + info table of ‘Node’:
|
|
| 640 | + number of words for pointers: 3
|
|
| 641 | + number of words for non-pointers: 0
|
|
| 642 | +top-level strings:
|
|
| 643 | + $tc'Nested1_@name_suffix@: "'Nested"
|
|
| 644 | + $tc'PerfectTree1_@name_suffix@: "'PerfectTree"
|
|
| 645 | + $tcPerfectTree1_@name_suffix@: "PerfectTree"
|
|
| 646 | + $tc'Node1_@name_suffix@: "'Node"
|
|
| 647 | + $tc'Leaf1_@name_suffix@: "'Leaf"
|
|
| 648 | + $tcBinTree1_@name_suffix@: "BinTree"
|
|
| 649 | + $trModule3_@name_suffix@: "Example"
|
|
| 650 | + $trModule1_@name_suffix@: "main"
|
|
| 651 | +breakpoints:
|
|
| 652 | + source breakpoints:
|
|
| 653 | + source breakpoint 0:
|
|
| 654 | + source span: Example.hs:18:17-25
|
|
| 655 | + declaration path: divides
|
|
| 656 | + free variables:
|
|
| 657 | + k
|
|
| 658 | + n
|
|
| 659 | + source breakpoint 1:
|
|
| 660 | + source span: Example.hs:18:17-30
|
|
| 661 | + declaration path: divides
|
|
| 662 | + free variables:
|
|
| 663 | + k
|
|
| 664 | + n
|
|
| 665 | + source breakpoint 2:
|
|
| 666 | + source span: Example.hs:24:27-37
|
|
| 667 | + declaration path:
|
|
| 668 | + primes
|
|
| 669 | + isPrime
|
|
| 670 | + free variables: n
|
|
| 671 | + source breakpoint 3:
|
|
| 672 | + source span: Example.hs:24:53-56
|
|
| 673 | + declaration path:
|
|
| 674 | + primes
|
|
| 675 | + isPrime
|
|
| 676 | + free variables: n
|
|
| 677 | + source breakpoint 4:
|
|
| 678 | + source span: Example.hs:24:62-64
|
|
| 679 | + declaration path:
|
|
| 680 | + primes
|
|
| 681 | + isPrime
|
|
| 682 | + free variables: <none>
|
|
| 683 | + source breakpoint 5:
|
|
| 684 | + source span: Example.hs:24:52-65
|
|
| 685 | + declaration path:
|
|
| 686 | + primes
|
|
| 687 | + isPrime
|
|
| 688 | + free variables: n
|
|
| 689 | + source breakpoint 6:
|
|
| 690 | + source span: Example.hs:24:41-73
|
|
| 691 | + declaration path:
|
|
| 692 | + primes
|
|
| 693 | + isPrime
|
|
| 694 | + free variables: n
|
|
| 695 | + source breakpoint 7:
|
|
| 696 | + source span: Example.hs:24:22-74
|
|
| 697 | + declaration path:
|
|
| 698 | + primes
|
|
| 699 | + isPrime
|
|
| 700 | + free variables: n
|
|
| 701 | + source breakpoint 8:
|
|
| 702 | + source span: Example.hs:24:17-75
|
|
| 703 | + declaration path:
|
|
| 704 | + primes
|
|
| 705 | + isPrime
|
|
| 706 | + free variables: n
|
|
| 707 | + source breakpoint 9:
|
|
| 708 | + source span: Example.hs:21:14-34
|
|
| 709 | + declaration path: primes
|
|
| 710 | + free variables: isPrime
|
|
| 711 | + source breakpoint 10:
|
|
| 712 | + source span: Example.hs:21:10-34
|
|
| 713 | + declaration path: primes
|
|
| 714 | + free variables: isPrime
|
|
| 715 | + source breakpoint 11:
|
|
| 716 | + source span: Example.hs:27:13-25
|
|
| 717 | + declaration path: primesPtr
|
|
| 718 | + free variables: <none>
|
|
| 719 | + source breakpoint 12:
|
|
| 720 | + source span: Example.hs:12:30-70
|
|
| 721 | + declaration path:
|
|
| 722 | + fibonaccis
|
|
| 723 | + positiveFibonaccis
|
|
| 724 | + free variables: positiveFibonaccis
|
|
| 725 | + source breakpoint 13:
|
|
| 726 | + source span: Example.hs:12:26-70
|
|
| 727 | + declaration path:
|
|
| 728 | + fibonaccis
|
|
| 729 | + positiveFibonaccis
|
|
| 730 | + free variables: positiveFibonaccis
|
|
| 731 | + source breakpoint 14:
|
|
| 732 | + source span: Example.hs:9:14-35
|
|
| 733 | + declaration path: fibonaccis
|
|
| 734 | + free variables: positiveFibonaccis
|
|
| 735 | + source breakpoint 15:
|
|
| 736 | + source span: Example.hs:15:17-33
|
|
| 737 | + declaration path: fibonaccisPtr
|
|
| 738 | + free variables: <none>
|
|
| 739 | + bytecode breakpoints:
|
|
| 740 | + bytecode breakpoint 0:
|
|
| 741 | + type: StaticPtr [Natural]
|
|
| 742 | + type variables: <none>
|
|
| 743 | + variables: <none>
|
|
| 744 | + corresponding source breakpoint: 11
|
|
| 745 | + bytecode breakpoint 1:
|
|
| 746 | + type: [Natural]
|
|
| 747 | + type variables: <none>
|
|
| 748 | + variables: <unknown>
|
|
| 749 | + corresponding source breakpoint: 9
|
|
| 750 | + bytecode breakpoint 2:
|
|
| 751 | + type: [Natural]
|
|
| 752 | + type variables: <none>
|
|
| 753 | + variables: <unknown>
|
|
| 754 | + corresponding source breakpoint: 10
|
|
| 755 | + bytecode breakpoint 3:
|
|
| 756 | + type: Natural -> Bool
|
|
| 757 | + type variables: <none>
|
|
| 758 | + variables: %'Many n :: Natural
|
|
| 759 | + corresponding source breakpoint: 2
|
|
| 760 | + bytecode breakpoint 4:
|
|
| 761 | + type: Natural -> Bool
|
|
| 762 | + type variables: <none>
|
|
| 763 | + variables: %'Many n :: Natural
|
|
| 764 | + corresponding source breakpoint: 3
|
|
| 765 | + bytecode breakpoint 5:
|
|
| 766 | + type: Natural -> Natural
|
|
| 767 | + type variables: <none>
|
|
| 768 | + variables: <none>
|
|
| 769 | + corresponding source breakpoint: 4
|
|
| 770 | + bytecode breakpoint 6:
|
|
| 771 | + type: Natural -> Bool
|
|
| 772 | + type variables: <none>
|
|
| 773 | + variables: %'Many n :: Natural
|
|
| 774 | + corresponding source breakpoint: 5
|
|
| 775 | + bytecode breakpoint 7:
|
|
| 776 | + type: [Natural]
|
|
| 777 | + type variables: <none>
|
|
| 778 | + variables: %'Many n :: Natural
|
|
| 779 | + corresponding source breakpoint: 6
|
|
| 780 | + bytecode breakpoint 8:
|
|
| 781 | + type: Bool
|
|
| 782 | + type variables: <none>
|
|
| 783 | + variables: %'Many n :: Natural
|
|
| 784 | + corresponding source breakpoint: 7
|
|
| 785 | + bytecode breakpoint 9:
|
|
| 786 | + type: Bool
|
|
| 787 | + type variables: <none>
|
|
| 788 | + variables: %'Many n :: Natural
|
|
| 789 | + corresponding source breakpoint: 8
|
|
| 790 | + bytecode breakpoint 10:
|
|
| 791 | + type: StaticPtr [Natural]
|
|
| 792 | + type variables: <none>
|
|
| 793 | + variables: <none>
|
|
| 794 | + corresponding source breakpoint: 15
|
|
| 795 | + bytecode breakpoint 11:
|
|
| 796 | + type: [Natural]
|
|
| 797 | + type variables: <none>
|
|
| 798 | + variables: <unknown>
|
|
| 799 | + corresponding source breakpoint: 14
|
|
| 800 | + bytecode breakpoint 12:
|
|
| 801 | + type: [Natural]
|
|
| 802 | + type variables: <none>
|
|
| 803 | + variables: <unknown>
|
|
| 804 | + corresponding source breakpoint: 12
|
|
| 805 | + bytecode breakpoint 13:
|
|
| 806 | + type: [Natural]
|
|
| 807 | + type variables: <none>
|
|
| 808 | + variables: <unknown>
|
|
| 809 | + corresponding source breakpoint: 13
|
|
| 810 | + bytecode breakpoint 14:
|
|
| 811 | + type: a
|
|
| 812 | + type variables: a :: *
|
|
| 813 | + variables:
|
|
| 814 | + %'Many eta :: a
|
|
| 815 | + %'Many eta1 :: a
|
|
| 816 | + corresponding source breakpoint: 0
|
|
| 817 | + bytecode breakpoint 15:
|
|
| 818 | + type: Bool
|
|
| 819 | + type variables: a :: *
|
|
| 820 | + variables:
|
|
| 821 | + %'Many eta :: a
|
|
| 822 | + %'Many eta1 :: a
|
|
| 823 | + corresponding source breakpoint: 1
|
|
| 824 | +static-pointer table entries:
|
|
| 825 | + @hash@: static_ptr
|
|
| 826 | + @hash@: static_ptr1
|
|
| 827 | +HPC information: <none>
|
|
| 828 | + |
| 1 | +[1 of 1] Compiling Example ( Example.hs, Example.gbc )
|
|
| 2 | +name: Example
|
|
| 3 | +hash: @hash@
|
|
| 4 | +objects:
|
|
| 5 | + ordinary object ‘primesPtr’:
|
|
| 6 | + arity: 0
|
|
| 7 | + literals:
|
|
| 8 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 9 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 10 | + utilized items:
|
|
| 11 | + item named ‘static_ptr1’
|
|
| 12 | + item named ‘$dTypeable2_@name_suffix@’
|
|
| 13 | + item named ‘$fIsStaticStaticPtr’
|
|
| 14 | + static-construction object ‘static_ptr1’:
|
|
| 15 | + data constructor name: StaticPtr
|
|
| 16 | + lifted: yes
|
|
| 17 | + literals:
|
|
| 18 | + word @large_word@
|
|
| 19 | + word @large_word@
|
|
| 20 | + utilized items:
|
|
| 21 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 22 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 23 | + static-construction object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 24 | + data constructor name: StaticPtrInfo
|
|
| 25 | + lifted: yes
|
|
| 26 | + literals: <none>
|
|
| 27 | + utilized items:
|
|
| 28 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 29 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 30 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 31 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 32 | + arity: 0
|
|
| 33 | + literals: top-level string "main"
|
|
| 34 | + utilized items:
|
|
| 35 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 36 | + arity: 0
|
|
| 37 | + literals: <none>
|
|
| 38 | + utilized items: item named ‘unpackCString#’
|
|
| 39 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 40 | + arity: 0
|
|
| 41 | + literals: top-level string "Example"
|
|
| 42 | + utilized items:
|
|
| 43 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 44 | + arity: 0
|
|
| 45 | + literals: <none>
|
|
| 46 | + utilized items: item named ‘unpackCString#’
|
|
| 47 | + static-construction object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 48 | + data constructor name: (,)
|
|
| 49 | + lifted: yes
|
|
| 50 | + literals: <none>
|
|
| 51 | + utilized items:
|
|
| 52 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 53 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 54 | + static-construction object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 55 | + data constructor name: I#
|
|
| 56 | + lifted: yes
|
|
| 57 | + literals: word 27
|
|
| 58 | + utilized items: <none>
|
|
| 59 | + static-construction object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 60 | + data constructor name: I#
|
|
| 61 | + lifted: yes
|
|
| 62 | + literals: word 20
|
|
| 63 | + utilized items: <none>
|
|
| 64 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 65 | + arity: 0
|
|
| 66 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 67 | + utilized items: item named ‘primes’
|
|
| 68 | + ordinary object ‘primes2_@name_suffix@’:
|
|
| 69 | + arity: 0
|
|
| 70 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 71 | + utilized items:
|
|
| 72 | + ordinary object ‘primes2_sat_@name_suffix@’:
|
|
| 73 | + arity: 0
|
|
| 74 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 75 | + utilized items:
|
|
| 76 | + ordinary object ‘primes2_sat_@name_suffix@’:
|
|
| 77 | + arity: 0
|
|
| 78 | + literals:
|
|
| 79 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 80 | + word 3
|
|
| 81 | + info table of ‘IS’
|
|
| 82 | + utilized items:
|
|
| 83 | + item named ‘$fNumNatural’
|
|
| 84 | + item named ‘fromInteger’
|
|
| 85 | + item named ‘$fEnumNatural’
|
|
| 86 | + item named ‘enumFrom’
|
|
| 87 | + ordinary object ‘primes2_sat_@name_suffix@’:
|
|
| 88 | + arity: 0
|
|
| 89 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 90 | + utilized items: item named ‘isPrime_@name_suffix@’
|
|
| 91 | + item named ‘filter’
|
|
| 92 | + ordinary object ‘isPrime_@name_suffix@’:
|
|
| 93 | + arity: 1
|
|
| 94 | + literals:
|
|
| 95 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 96 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 97 | + utilized items:
|
|
| 98 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 99 | + arity: 1
|
|
| 100 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 101 | + utilized items:
|
|
| 102 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 103 | + arity: 1
|
|
| 104 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 105 | + utilized items:
|
|
| 106 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 107 | + arity: 0
|
|
| 108 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 109 | + utilized items: item named ‘primes’
|
|
| 110 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 111 | + arity: 1
|
|
| 112 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 113 | + utilized items:
|
|
| 114 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 115 | + arity: 0
|
|
| 116 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 117 | + utilized items:
|
|
| 118 | + ordinary object ‘v_@name_suffix@’:
|
|
| 119 | + arity: 0
|
|
| 120 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 121 | + utilized items:
|
|
| 122 | + item named ‘$fIntegralInteger’
|
|
| 123 | + item named ‘$fNumNatural’
|
|
| 124 | + item named ‘^’
|
|
| 125 | + ordinary object ‘v1_@name_suffix@’:
|
|
| 126 | + arity: 0
|
|
| 127 | + literals:
|
|
| 128 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 129 | + word 2
|
|
| 130 | + info table of ‘IS’
|
|
| 131 | + utilized items: <none>
|
|
| 132 | + ordinary object ‘pap_@name_suffix@’:
|
|
| 133 | + arity: 3
|
|
| 134 | + literals: <none>
|
|
| 135 | + utilized items: <none>
|
|
| 136 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 137 | + arity: 1
|
|
| 138 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 139 | + utilized items:
|
|
| 140 | + ordinary object ‘v_@name_suffix@’:
|
|
| 141 | + arity: 0
|
|
| 142 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 143 | + utilized items:
|
|
| 144 | + item named ‘$fOrdNatural’
|
|
| 145 | + item named ‘<=’
|
|
| 146 | + ordinary object ‘v1_@name_suffix@’:
|
|
| 147 | + arity: 1
|
|
| 148 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 149 | + utilized items: <none>
|
|
| 150 | + ordinary object ‘pap_@name_suffix@’:
|
|
| 151 | + arity: 3
|
|
| 152 | + literals: <none>
|
|
| 153 | + utilized items: <none>
|
|
| 154 | + item named ‘.’
|
|
| 155 | + item named ‘takeWhile’
|
|
| 156 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 157 | + arity: 1
|
|
| 158 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 159 | + utilized items:
|
|
| 160 | + ordinary object ‘v_@name_suffix@’:
|
|
| 161 | + arity: 0
|
|
| 162 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 163 | + utilized items:
|
|
| 164 | + ordinary object ‘pap_@name_suffix@’:
|
|
| 165 | + arity: 2
|
|
| 166 | + literals: <none>
|
|
| 167 | + utilized items:
|
|
| 168 | + item named ‘$fIntegralNatural’
|
|
| 169 | + item named ‘divides’
|
|
| 170 | + ordinary object ‘v1_@name_suffix@’:
|
|
| 171 | + arity: 1
|
|
| 172 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 173 | + utilized items: <none>
|
|
| 174 | + ordinary object ‘pap_@name_suffix@’:
|
|
| 175 | + arity: 3
|
|
| 176 | + literals: <none>
|
|
| 177 | + utilized items: <none>
|
|
| 178 | + item named ‘$fFoldableList’
|
|
| 179 | + item named ‘any’
|
|
| 180 | + item named ‘not’
|
|
| 181 | + ordinary object ‘primes’:
|
|
| 182 | + arity: 0
|
|
| 183 | + literals:
|
|
| 184 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 185 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 186 | + info table of ‘:’
|
|
| 187 | + utilized items:
|
|
| 188 | + item named ‘primes2_@name_suffix@’
|
|
| 189 | + item named ‘primes1_@name_suffix@’
|
|
| 190 | + ordinary object ‘primes1_@name_suffix@’:
|
|
| 191 | + arity: 0
|
|
| 192 | + literals:
|
|
| 193 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 194 | + word 2
|
|
| 195 | + info table of ‘IS’
|
|
| 196 | + utilized items:
|
|
| 197 | + item named ‘$fNumNatural’
|
|
| 198 | + item named ‘fromInteger’
|
|
| 199 | + ordinary object ‘fibonaccisPtr’:
|
|
| 200 | + arity: 0
|
|
| 201 | + literals:
|
|
| 202 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 203 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 204 | + utilized items:
|
|
| 205 | + item named ‘static_ptr’
|
|
| 206 | + item named ‘$dTypeable2_@name_suffix@’
|
|
| 207 | + item named ‘$fIsStaticStaticPtr’
|
|
| 208 | + static-construction object ‘static_ptr’:
|
|
| 209 | + data constructor name: StaticPtr
|
|
| 210 | + lifted: yes
|
|
| 211 | + literals:
|
|
| 212 | + word @large_word@
|
|
| 213 | + word @large_word@
|
|
| 214 | + utilized items:
|
|
| 215 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 216 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 217 | + static-construction object ‘static_ptr_sat_@name_suffix@’:
|
|
| 218 | + data constructor name: StaticPtrInfo
|
|
| 219 | + lifted: yes
|
|
| 220 | + literals: <none>
|
|
| 221 | + utilized items:
|
|
| 222 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 223 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 224 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 225 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 226 | + arity: 0
|
|
| 227 | + literals: top-level string "main"
|
|
| 228 | + utilized items:
|
|
| 229 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 230 | + arity: 0
|
|
| 231 | + literals: <none>
|
|
| 232 | + utilized items: item named ‘unpackCString#’
|
|
| 233 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 234 | + arity: 0
|
|
| 235 | + literals: top-level string "Example"
|
|
| 236 | + utilized items:
|
|
| 237 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 238 | + arity: 0
|
|
| 239 | + literals: <none>
|
|
| 240 | + utilized items: item named ‘unpackCString#’
|
|
| 241 | + static-construction object ‘static_ptr_sat_@name_suffix@’:
|
|
| 242 | + data constructor name: (,)
|
|
| 243 | + lifted: yes
|
|
| 244 | + literals: <none>
|
|
| 245 | + utilized items:
|
|
| 246 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 247 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 248 | + static-construction object ‘static_ptr_sat_@name_suffix@’:
|
|
| 249 | + data constructor name: I#
|
|
| 250 | + lifted: yes
|
|
| 251 | + literals: word 15
|
|
| 252 | + utilized items: <none>
|
|
| 253 | + static-construction object ‘static_ptr_sat_@name_suffix@’:
|
|
| 254 | + data constructor name: I#
|
|
| 255 | + lifted: yes
|
|
| 256 | + literals: word 24
|
|
| 257 | + utilized items: <none>
|
|
| 258 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 259 | + arity: 0
|
|
| 260 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 261 | + utilized items: item named ‘fibonaccis’
|
|
| 262 | + ordinary object ‘positiveFibonaccis1_@name_suffix@’:
|
|
| 263 | + arity: 0
|
|
| 264 | + literals:
|
|
| 265 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 266 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 267 | + info table of ‘:’
|
|
| 268 | + utilized items:
|
|
| 269 | + item named ‘positiveFibonaccis2_@name_suffix@’
|
|
| 270 | + item named ‘positiveFibonaccis_@name_suffix@’
|
|
| 271 | + ordinary object ‘positiveFibonaccis2_@name_suffix@’:
|
|
| 272 | + arity: 0
|
|
| 273 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 274 | + utilized items:
|
|
| 275 | + ordinary object ‘positiveFibonaccis2_sat_@name_suffix@’:
|
|
| 276 | + arity: 0
|
|
| 277 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 278 | + utilized items: item named ‘positiveFibonaccis1_@name_suffix@’
|
|
| 279 | + ordinary object ‘positiveFibonaccis2_sat_@name_suffix@’:
|
|
| 280 | + arity: 0
|
|
| 281 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 282 | + utilized items: item named ‘fibonaccis’
|
|
| 283 | + ordinary object ‘positiveFibonaccis2_sat_@name_suffix@’:
|
|
| 284 | + arity: 0
|
|
| 285 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 286 | + utilized items:
|
|
| 287 | + item named ‘$fNumNatural’
|
|
| 288 | + item named ‘+’
|
|
| 289 | + item named ‘zipWith’
|
|
| 290 | + ordinary object ‘fibonaccis’:
|
|
| 291 | + arity: 0
|
|
| 292 | + literals:
|
|
| 293 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 294 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 295 | + info table of ‘:’
|
|
| 296 | + utilized items:
|
|
| 297 | + item named ‘fibonaccis2_@name_suffix@’
|
|
| 298 | + item named ‘fibonaccis1_@name_suffix@’
|
|
| 299 | + ordinary object ‘fibonaccis2_@name_suffix@’:
|
|
| 300 | + arity: 0
|
|
| 301 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 302 | + utilized items: item named ‘positiveFibonaccis1_@name_suffix@’
|
|
| 303 | + ordinary object ‘positiveFibonaccis_@name_suffix@’:
|
|
| 304 | + arity: 0
|
|
| 305 | + literals:
|
|
| 306 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 307 | + word 1
|
|
| 308 | + info table of ‘IS’
|
|
| 309 | + utilized items:
|
|
| 310 | + item named ‘$fNumNatural’
|
|
| 311 | + item named ‘fromInteger’
|
|
| 312 | + ordinary object ‘fibonaccis1_@name_suffix@’:
|
|
| 313 | + arity: 0
|
|
| 314 | + literals:
|
|
| 315 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 316 | + word 0
|
|
| 317 | + info table of ‘IS’
|
|
| 318 | + utilized items:
|
|
| 319 | + item named ‘$fNumNatural’
|
|
| 320 | + item named ‘fromInteger’
|
|
| 321 | + ordinary object ‘$dTypeable2_@name_suffix@’:
|
|
| 322 | + arity: 0
|
|
| 323 | + literals: <none>
|
|
| 324 | + utilized items:
|
|
| 325 | + item named ‘$dTypeable_@name_suffix@’
|
|
| 326 | + item named ‘$dTypeable1_@name_suffix@’
|
|
| 327 | + item named ‘mkTrAppChecked’
|
|
| 328 | + ordinary object ‘$dTypeable1_@name_suffix@’:
|
|
| 329 | + arity: 0
|
|
| 330 | + literals: info table of ‘[]’
|
|
| 331 | + utilized items:
|
|
| 332 | + item named ‘$tcList’
|
|
| 333 | + item named ‘mkTrCon’
|
|
| 334 | + ordinary object ‘$dTypeable_@name_suffix@’:
|
|
| 335 | + arity: 0
|
|
| 336 | + literals: info table of ‘[]’
|
|
| 337 | + utilized items:
|
|
| 338 | + item named ‘$tcNatural’
|
|
| 339 | + item named ‘mkTrCon’
|
|
| 340 | + static-construction object ‘$tc'Nested’:
|
|
| 341 | + data constructor name: TyCon
|
|
| 342 | + lifted: yes
|
|
| 343 | + literals:
|
|
| 344 | + word @large_word@
|
|
| 345 | + word @large_word@
|
|
| 346 | + word 1
|
|
| 347 | + utilized items:
|
|
| 348 | + item named ‘$trModule’
|
|
| 349 | + item named ‘$tc'Nested2_@name_suffix@’
|
|
| 350 | + item named ‘$krep17_@name_suffix@’
|
|
| 351 | + static-construction object ‘$tc'Nested2_@name_suffix@’:
|
|
| 352 | + data constructor name: TrNameS
|
|
| 353 | + lifted: yes
|
|
| 354 | + literals: address ‘$tc'Nested1_@name_suffix@’
|
|
| 355 | + utilized items: <none>
|
|
| 356 | + static-construction object ‘$krep17_@name_suffix@’:
|
|
| 357 | + data constructor name: KindRepFun
|
|
| 358 | + lifted: yes
|
|
| 359 | + literals: <none>
|
|
| 360 | + utilized items:
|
|
| 361 | + item named ‘$krep16_@name_suffix@’
|
|
| 362 | + item named ‘$krep13_@name_suffix@’
|
|
| 363 | + static-construction object ‘$krep16_@name_suffix@’:
|
|
| 364 | + data constructor name: KindRepTyConApp
|
|
| 365 | + lifted: yes
|
|
| 366 | + literals: <none>
|
|
| 367 | + utilized items:
|
|
| 368 | + item named ‘$tcPerfectTree’
|
|
| 369 | + item named ‘$krep15_@name_suffix@’
|
|
| 370 | + static-construction object ‘$krep15_@name_suffix@’:
|
|
| 371 | + data constructor name: :
|
|
| 372 | + lifted: yes
|
|
| 373 | + literals: <none>
|
|
| 374 | + utilized items:
|
|
| 375 | + item named ‘$krep4_@name_suffix@’
|
|
| 376 | + item named ‘[]’
|
|
| 377 | + static-construction object ‘$tc'PerfectTree’:
|
|
| 378 | + data constructor name: TyCon
|
|
| 379 | + lifted: yes
|
|
| 380 | + literals:
|
|
| 381 | + word @large_word@
|
|
| 382 | + word @large_word@
|
|
| 383 | + word 1
|
|
| 384 | + utilized items:
|
|
| 385 | + item named ‘$trModule’
|
|
| 386 | + item named ‘$tc'PerfectTree2_@name_suffix@’
|
|
| 387 | + item named ‘$krep14_@name_suffix@’
|
|
| 388 | + static-construction object ‘$tc'PerfectTree2_@name_suffix@’:
|
|
| 389 | + data constructor name: TrNameS
|
|
| 390 | + lifted: yes
|
|
| 391 | + literals: address ‘$tc'PerfectTree1_@name_suffix@’
|
|
| 392 | + utilized items: <none>
|
|
| 393 | + static-construction object ‘$krep14_@name_suffix@’:
|
|
| 394 | + data constructor name: KindRepFun
|
|
| 395 | + lifted: yes
|
|
| 396 | + literals: <none>
|
|
| 397 | + utilized items:
|
|
| 398 | + item named ‘$krep1_@name_suffix@’
|
|
| 399 | + item named ‘$krep13_@name_suffix@’
|
|
| 400 | + static-construction object ‘$krep13_@name_suffix@’:
|
|
| 401 | + data constructor name: KindRepTyConApp
|
|
| 402 | + lifted: yes
|
|
| 403 | + literals: <none>
|
|
| 404 | + utilized items:
|
|
| 405 | + item named ‘$tcPerfectTree’
|
|
| 406 | + item named ‘$krep12_@name_suffix@’
|
|
| 407 | + static-construction object ‘$krep12_@name_suffix@’:
|
|
| 408 | + data constructor name: :
|
|
| 409 | + lifted: yes
|
|
| 410 | + literals: <none>
|
|
| 411 | + utilized items:
|
|
| 412 | + item named ‘$krep1_@name_suffix@’
|
|
| 413 | + item named ‘[]’
|
|
| 414 | + static-construction object ‘$tcPerfectTree’:
|
|
| 415 | + data constructor name: TyCon
|
|
| 416 | + lifted: yes
|
|
| 417 | + literals:
|
|
| 418 | + word @large_word@
|
|
| 419 | + word @large_word@
|
|
| 420 | + word 0
|
|
| 421 | + utilized items:
|
|
| 422 | + item named ‘$trModule’
|
|
| 423 | + item named ‘$tcPerfectTree2_@name_suffix@’
|
|
| 424 | + item named ‘krep$*Arr*’
|
|
| 425 | + static-construction object ‘$tcPerfectTree2_@name_suffix@’:
|
|
| 426 | + data constructor name: TrNameS
|
|
| 427 | + lifted: yes
|
|
| 428 | + literals: address ‘$tcPerfectTree1_@name_suffix@’
|
|
| 429 | + utilized items: <none>
|
|
| 430 | + static-construction object ‘$tc'Node’:
|
|
| 431 | + data constructor name: TyCon
|
|
| 432 | + lifted: yes
|
|
| 433 | + literals:
|
|
| 434 | + word @large_word@
|
|
| 435 | + word @large_word@
|
|
| 436 | + word 2
|
|
| 437 | + utilized items:
|
|
| 438 | + item named ‘$trModule’
|
|
| 439 | + item named ‘$tc'Node2_@name_suffix@’
|
|
| 440 | + item named ‘$krep11_@name_suffix@’
|
|
| 441 | + static-construction object ‘$tc'Node2_@name_suffix@’:
|
|
| 442 | + data constructor name: TrNameS
|
|
| 443 | + lifted: yes
|
|
| 444 | + literals: address ‘$tc'Node1_@name_suffix@’
|
|
| 445 | + utilized items: <none>
|
|
| 446 | + static-construction object ‘$krep11_@name_suffix@’:
|
|
| 447 | + data constructor name: KindRepFun
|
|
| 448 | + lifted: yes
|
|
| 449 | + literals: <none>
|
|
| 450 | + utilized items:
|
|
| 451 | + item named ‘$krep7_@name_suffix@’
|
|
| 452 | + item named ‘$krep10_@name_suffix@’
|
|
| 453 | + static-construction object ‘$krep10_@name_suffix@’:
|
|
| 454 | + data constructor name: KindRepFun
|
|
| 455 | + lifted: yes
|
|
| 456 | + literals: <none>
|
|
| 457 | + utilized items:
|
|
| 458 | + item named ‘$krep_@name_suffix@’
|
|
| 459 | + item named ‘$krep9_@name_suffix@’
|
|
| 460 | + static-construction object ‘$krep9_@name_suffix@’:
|
|
| 461 | + data constructor name: KindRepFun
|
|
| 462 | + lifted: yes
|
|
| 463 | + literals: <none>
|
|
| 464 | + utilized items:
|
|
| 465 | + item named ‘$krep7_@name_suffix@’
|
|
| 466 | + item named ‘$krep7_@name_suffix@’
|
|
| 467 | + static-construction object ‘$tc'Leaf’:
|
|
| 468 | + data constructor name: TyCon
|
|
| 469 | + lifted: yes
|
|
| 470 | + literals:
|
|
| 471 | + word @large_word@
|
|
| 472 | + word @large_word@
|
|
| 473 | + word 2
|
|
| 474 | + utilized items:
|
|
| 475 | + item named ‘$trModule’
|
|
| 476 | + item named ‘$tc'Leaf2_@name_suffix@’
|
|
| 477 | + item named ‘$krep8_@name_suffix@’
|
|
| 478 | + static-construction object ‘$tc'Leaf2_@name_suffix@’:
|
|
| 479 | + data constructor name: TrNameS
|
|
| 480 | + lifted: yes
|
|
| 481 | + literals: address ‘$tc'Leaf1_@name_suffix@’
|
|
| 482 | + utilized items: <none>
|
|
| 483 | + static-construction object ‘$krep8_@name_suffix@’:
|
|
| 484 | + data constructor name: KindRepFun
|
|
| 485 | + lifted: yes
|
|
| 486 | + literals: <none>
|
|
| 487 | + utilized items:
|
|
| 488 | + item named ‘$krep1_@name_suffix@’
|
|
| 489 | + item named ‘$krep7_@name_suffix@’
|
|
| 490 | + static-construction object ‘$krep7_@name_suffix@’:
|
|
| 491 | + data constructor name: KindRepTyConApp
|
|
| 492 | + lifted: yes
|
|
| 493 | + literals: <none>
|
|
| 494 | + utilized items:
|
|
| 495 | + item named ‘$tcBinTree’
|
|
| 496 | + item named ‘$krep6_@name_suffix@’
|
|
| 497 | + static-construction object ‘$krep6_@name_suffix@’:
|
|
| 498 | + data constructor name: :
|
|
| 499 | + lifted: yes
|
|
| 500 | + literals: <none>
|
|
| 501 | + utilized items:
|
|
| 502 | + item named ‘$krep1_@name_suffix@’
|
|
| 503 | + item named ‘$krep5_@name_suffix@’
|
|
| 504 | + static-construction object ‘$krep5_@name_suffix@’:
|
|
| 505 | + data constructor name: :
|
|
| 506 | + lifted: yes
|
|
| 507 | + literals: <none>
|
|
| 508 | + utilized items:
|
|
| 509 | + item named ‘$krep_@name_suffix@’
|
|
| 510 | + item named ‘[]’
|
|
| 511 | + static-construction object ‘$tcBinTree’:
|
|
| 512 | + data constructor name: TyCon
|
|
| 513 | + lifted: yes
|
|
| 514 | + literals:
|
|
| 515 | + word @large_word@
|
|
| 516 | + word @large_word@
|
|
| 517 | + word 0
|
|
| 518 | + utilized items:
|
|
| 519 | + item named ‘$trModule’
|
|
| 520 | + item named ‘$tcBinTree2_@name_suffix@’
|
|
| 521 | + item named ‘krep$*->*->*’
|
|
| 522 | + static-construction object ‘$tcBinTree2_@name_suffix@’:
|
|
| 523 | + data constructor name: TrNameS
|
|
| 524 | + lifted: yes
|
|
| 525 | + literals: address ‘$tcBinTree1_@name_suffix@’
|
|
| 526 | + utilized items: <none>
|
|
| 527 | + static-construction object ‘$krep4_@name_suffix@’:
|
|
| 528 | + data constructor name: KindRepTyConApp
|
|
| 529 | + lifted: yes
|
|
| 530 | + literals: <none>
|
|
| 531 | + utilized items:
|
|
| 532 | + item named ‘$tcTuple2’
|
|
| 533 | + item named ‘$krep3_@name_suffix@’
|
|
| 534 | + static-construction object ‘$krep3_@name_suffix@’:
|
|
| 535 | + data constructor name: :
|
|
| 536 | + lifted: yes
|
|
| 537 | + literals: <none>
|
|
| 538 | + utilized items:
|
|
| 539 | + item named ‘$krep1_@name_suffix@’
|
|
| 540 | + item named ‘$krep2_@name_suffix@’
|
|
| 541 | + static-construction object ‘$krep2_@name_suffix@’:
|
|
| 542 | + data constructor name: :
|
|
| 543 | + lifted: yes
|
|
| 544 | + literals: <none>
|
|
| 545 | + utilized items:
|
|
| 546 | + item named ‘$krep1_@name_suffix@’
|
|
| 547 | + item named ‘[]’
|
|
| 548 | + static-construction object ‘$krep1_@name_suffix@’:
|
|
| 549 | + data constructor name: KindRepVar
|
|
| 550 | + lifted: yes
|
|
| 551 | + literals: word 0
|
|
| 552 | + utilized items: <none>
|
|
| 553 | + static-construction object ‘$krep_@name_suffix@’:
|
|
| 554 | + data constructor name: KindRepVar
|
|
| 555 | + lifted: yes
|
|
| 556 | + literals: word 1
|
|
| 557 | + utilized items: <none>
|
|
| 558 | + static-construction object ‘$trModule’:
|
|
| 559 | + data constructor name: Module
|
|
| 560 | + lifted: yes
|
|
| 561 | + literals: <none>
|
|
| 562 | + utilized items:
|
|
| 563 | + item named ‘$trModule2_@name_suffix@’
|
|
| 564 | + item named ‘$trModule4_@name_suffix@’
|
|
| 565 | + static-construction object ‘$trModule4_@name_suffix@’:
|
|
| 566 | + data constructor name: TrNameS
|
|
| 567 | + lifted: yes
|
|
| 568 | + literals: address ‘$trModule3_@name_suffix@’
|
|
| 569 | + utilized items: <none>
|
|
| 570 | + static-construction object ‘$trModule2_@name_suffix@’:
|
|
| 571 | + data constructor name: TrNameS
|
|
| 572 | + lifted: yes
|
|
| 573 | + literals: address ‘$trModule1_@name_suffix@’
|
|
| 574 | + utilized items: <none>
|
|
| 575 | + ordinary object ‘divides’:
|
|
| 576 | + arity: 3
|
|
| 577 | + literals: <none>
|
|
| 578 | + utilized items:
|
|
| 579 | + ordinary object ‘$dReal_@name_suffix@’:
|
|
| 580 | + arity: 0
|
|
| 581 | + literals:
|
|
| 582 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 583 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 584 | + utilized items:
|
|
| 585 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 586 | + arity: 1
|
|
| 587 | + literals:
|
|
| 588 | + label ‘_hpc_tickboxes_Example_hpc’
|
|
| 589 | + word 0
|
|
| 590 | + info table of ‘IS’
|
|
| 591 | + utilized items:
|
|
| 592 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 593 | + arity: 0
|
|
| 594 | + literals: <none>
|
|
| 595 | + utilized items: item named ‘fromInteger’
|
|
| 596 | + item named ‘$p1Real’
|
|
| 597 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 598 | + arity: 3
|
|
| 599 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 600 | + utilized items:
|
|
| 601 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 602 | + arity: 1
|
|
| 603 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 604 | + utilized items: <none>
|
|
| 605 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 606 | + arity: 1
|
|
| 607 | + literals: label ‘_hpc_tickboxes_Example_hpc’
|
|
| 608 | + utilized items: <none>
|
|
| 609 | + item named ‘mod’
|
|
| 610 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 611 | + arity: 0
|
|
| 612 | + literals: <none>
|
|
| 613 | + utilized items:
|
|
| 614 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 615 | + arity: 0
|
|
| 616 | + literals: <none>
|
|
| 617 | + utilized items: item named ‘==’
|
|
| 618 | + item named ‘$p1Ord’
|
|
| 619 | + item named ‘$p2Real’
|
|
| 620 | + item named ‘$p1Integral’
|
|
| 621 | + ordinary object ‘Node’:
|
|
| 622 | + arity: 3
|
|
| 623 | + literals: info table of ‘Node’
|
|
| 624 | + utilized items: <none>
|
|
| 625 | + ordinary object ‘Leaf’:
|
|
| 626 | + arity: 1
|
|
| 627 | + literals: info table of ‘Leaf’
|
|
| 628 | + utilized items: <none>
|
|
| 629 | + ordinary object ‘Nested’:
|
|
| 630 | + arity: 1
|
|
| 631 | + literals: info table of ‘Nested’
|
|
| 632 | + utilized items: <none>
|
|
| 633 | + ordinary object ‘PerfectTree’:
|
|
| 634 | + arity: 1
|
|
| 635 | + literals: info table of ‘PerfectTree’
|
|
| 636 | + utilized items: <none>
|
|
| 637 | +data constructor info tables:
|
|
| 638 | + info table of ‘PerfectTree’:
|
|
| 639 | + number of words for pointers: 1
|
|
| 640 | + number of words for non-pointers: 0
|
|
| 641 | + info table of ‘Nested’:
|
|
| 642 | + number of words for pointers: 1
|
|
| 643 | + number of words for non-pointers: 0
|
|
| 644 | + info table of ‘Leaf’:
|
|
| 645 | + number of words for pointers: 1
|
|
| 646 | + number of words for non-pointers: 0
|
|
| 647 | + info table of ‘Node’:
|
|
| 648 | + number of words for pointers: 3
|
|
| 649 | + number of words for non-pointers: 0
|
|
| 650 | +top-level strings:
|
|
| 651 | + $tc'Nested1_@name_suffix@: "'Nested"
|
|
| 652 | + $tc'PerfectTree1_@name_suffix@: "'PerfectTree"
|
|
| 653 | + $tcPerfectTree1_@name_suffix@: "PerfectTree"
|
|
| 654 | + $tc'Node1_@name_suffix@: "'Node"
|
|
| 655 | + $tc'Leaf1_@name_suffix@: "'Leaf"
|
|
| 656 | + $tcBinTree1_@name_suffix@: "BinTree"
|
|
| 657 | + $trModule3_@name_suffix@: "Example"
|
|
| 658 | + $trModule1_@name_suffix@: "main"
|
|
| 659 | +breakpoints: <none>
|
|
| 660 | +static-pointer table entries:
|
|
| 661 | + @hash@: static_ptr
|
|
| 662 | + @hash@: static_ptr1
|
|
| 663 | +HPC information:
|
|
| 664 | + hash: 000000006110204f
|
|
| 665 | + module name: Example
|
|
| 666 | + tick box name: _hpc_tickboxes_Example_hpc
|
|
| 667 | + number of ticks: 45
|
|
| 668 | + |
| 1 | +[1 of 1] Compiling Example ( Example.hs, Example.gbc )
|
|
| 2 | +name: Example
|
|
| 3 | +hash: @hash@
|
|
| 4 | +objects:
|
|
| 5 | + ordinary object ‘primesPtr’:
|
|
| 6 | + arity: 0
|
|
| 7 | + literals: <none>
|
|
| 8 | + utilized items:
|
|
| 9 | + item named ‘static_ptr1’
|
|
| 10 | + item named ‘$dTypeable2_@name_suffix@’
|
|
| 11 | + item named ‘$fIsStaticStaticPtr’
|
|
| 12 | + static-construction object ‘static_ptr1’:
|
|
| 13 | + data constructor name: StaticPtr
|
|
| 14 | + lifted: yes
|
|
| 15 | + literals:
|
|
| 16 | + word @large_word@
|
|
| 17 | + word @large_word@
|
|
| 18 | + utilized items:
|
|
| 19 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 20 | + item named ‘primes’
|
|
| 21 | + static-construction object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 22 | + data constructor name: StaticPtrInfo
|
|
| 23 | + lifted: yes
|
|
| 24 | + literals: <none>
|
|
| 25 | + utilized items:
|
|
| 26 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 27 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 28 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 29 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 30 | + arity: 0
|
|
| 31 | + literals: top-level string "main"
|
|
| 32 | + utilized items:
|
|
| 33 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 34 | + arity: 0
|
|
| 35 | + literals: <none>
|
|
| 36 | + utilized items: item named ‘unpackCString#’
|
|
| 37 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 38 | + arity: 0
|
|
| 39 | + literals: top-level string "Example"
|
|
| 40 | + utilized items:
|
|
| 41 | + ordinary object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 42 | + arity: 0
|
|
| 43 | + literals: <none>
|
|
| 44 | + utilized items: item named ‘unpackCString#’
|
|
| 45 | + static-construction object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 46 | + data constructor name: (,)
|
|
| 47 | + lifted: yes
|
|
| 48 | + literals: <none>
|
|
| 49 | + utilized items:
|
|
| 50 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 51 | + item named ‘static_ptr1_sat_@name_suffix@’
|
|
| 52 | + static-construction object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 53 | + data constructor name: I#
|
|
| 54 | + lifted: yes
|
|
| 55 | + literals: word 27
|
|
| 56 | + utilized items: <none>
|
|
| 57 | + static-construction object ‘static_ptr1_sat_@name_suffix@’:
|
|
| 58 | + data constructor name: I#
|
|
| 59 | + lifted: yes
|
|
| 60 | + literals: word 20
|
|
| 61 | + utilized items: <none>
|
|
| 62 | + ordinary object ‘primes2_@name_suffix@’:
|
|
| 63 | + arity: 0
|
|
| 64 | + literals: <none>
|
|
| 65 | + utilized items:
|
|
| 66 | + item named ‘primes2_sat_@name_suffix@’
|
|
| 67 | + item named ‘isPrime_@name_suffix@’
|
|
| 68 | + item named ‘filter’
|
|
| 69 | + ordinary object ‘isPrime_@name_suffix@’:
|
|
| 70 | + arity: 1
|
|
| 71 | + literals: <none>
|
|
| 72 | + utilized items:
|
|
| 73 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 74 | + arity: 1
|
|
| 75 | + literals: <none>
|
|
| 76 | + utilized items:
|
|
| 77 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 78 | + arity: 1
|
|
| 79 | + literals: <none>
|
|
| 80 | + utilized items:
|
|
| 81 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 82 | + arity: 1
|
|
| 83 | + literals:
|
|
| 84 | + word 2
|
|
| 85 | + info table of ‘IS’
|
|
| 86 | + utilized items:
|
|
| 87 | + ordinary object ‘v_@name_suffix@’:
|
|
| 88 | + arity: 0
|
|
| 89 | + literals: <none>
|
|
| 90 | + utilized items:
|
|
| 91 | + item named ‘$fIntegralInteger’
|
|
| 92 | + item named ‘$fNumNatural’
|
|
| 93 | + item named ‘^’
|
|
| 94 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 95 | + arity: 3
|
|
| 96 | + literals: <none>
|
|
| 97 | + utilized items: <none>
|
|
| 98 | + ordinary object ‘v_@name_suffix@’:
|
|
| 99 | + arity: 0
|
|
| 100 | + literals: <none>
|
|
| 101 | + utilized items:
|
|
| 102 | + item named ‘$fOrdNatural’
|
|
| 103 | + item named ‘<=’
|
|
| 104 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 105 | + arity: 3
|
|
| 106 | + literals: <none>
|
|
| 107 | + utilized items: <none>
|
|
| 108 | + item named ‘.’
|
|
| 109 | + item named ‘primes’
|
|
| 110 | + item named ‘takeWhile’
|
|
| 111 | + ordinary object ‘isPrime_sat_@name_suffix@’:
|
|
| 112 | + arity: 2
|
|
| 113 | + literals: <none>
|
|
| 114 | + utilized items:
|
|
| 115 | + item named ‘$fIntegralNatural’
|
|
| 116 | + item named ‘divides’
|
|
| 117 | + item named ‘$fFoldableList’
|
|
| 118 | + item named ‘any’
|
|
| 119 | + item named ‘not’
|
|
| 120 | + static-construction object ‘primes’:
|
|
| 121 | + data constructor name: :
|
|
| 122 | + lifted: yes
|
|
| 123 | + literals: <none>
|
|
| 124 | + utilized items:
|
|
| 125 | + item named ‘primes1_@name_suffix@’
|
|
| 126 | + item named ‘primes2_@name_suffix@’
|
|
| 127 | + ordinary object ‘primes2_sat_@name_suffix@’:
|
|
| 128 | + arity: 0
|
|
| 129 | + literals: <none>
|
|
| 130 | + utilized items:
|
|
| 131 | + ordinary object ‘primes2_sat_@name_suffix@’:
|
|
| 132 | + arity: 0
|
|
| 133 | + literals:
|
|
| 134 | + word 3
|
|
| 135 | + info table of ‘IS’
|
|
| 136 | + utilized items:
|
|
| 137 | + item named ‘$fNumNatural’
|
|
| 138 | + item named ‘fromInteger’
|
|
| 139 | + item named ‘$fEnumNatural’
|
|
| 140 | + item named ‘enumFrom’
|
|
| 141 | + ordinary object ‘primes1_@name_suffix@’:
|
|
| 142 | + arity: 0
|
|
| 143 | + literals: <none>
|
|
| 144 | + utilized items:
|
|
| 145 | + item named ‘primes1_sat_@name_suffix@’
|
|
| 146 | + item named ‘$fNumNatural’
|
|
| 147 | + item named ‘fromInteger’
|
|
| 148 | + static-construction object ‘primes1_sat_@name_suffix@’:
|
|
| 149 | + data constructor name: IS
|
|
| 150 | + lifted: yes
|
|
| 151 | + literals: word 2
|
|
| 152 | + utilized items: <none>
|
|
| 153 | + ordinary object ‘fibonaccisPtr’:
|
|
| 154 | + arity: 0
|
|
| 155 | + literals: <none>
|
|
| 156 | + utilized items:
|
|
| 157 | + item named ‘static_ptr’
|
|
| 158 | + item named ‘$dTypeable2_@name_suffix@’
|
|
| 159 | + item named ‘$fIsStaticStaticPtr’
|
|
| 160 | + static-construction object ‘static_ptr’:
|
|
| 161 | + data constructor name: StaticPtr
|
|
| 162 | + lifted: yes
|
|
| 163 | + literals:
|
|
| 164 | + word @large_word@
|
|
| 165 | + word @large_word@
|
|
| 166 | + utilized items:
|
|
| 167 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 168 | + item named ‘fibonaccis’
|
|
| 169 | + static-construction object ‘static_ptr_sat_@name_suffix@’:
|
|
| 170 | + data constructor name: StaticPtrInfo
|
|
| 171 | + lifted: yes
|
|
| 172 | + literals: <none>
|
|
| 173 | + utilized items:
|
|
| 174 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 175 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 176 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 177 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 178 | + arity: 0
|
|
| 179 | + literals: top-level string "main"
|
|
| 180 | + utilized items:
|
|
| 181 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 182 | + arity: 0
|
|
| 183 | + literals: <none>
|
|
| 184 | + utilized items: item named ‘unpackCString#’
|
|
| 185 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 186 | + arity: 0
|
|
| 187 | + literals: top-level string "Example"
|
|
| 188 | + utilized items:
|
|
| 189 | + ordinary object ‘static_ptr_sat_@name_suffix@’:
|
|
| 190 | + arity: 0
|
|
| 191 | + literals: <none>
|
|
| 192 | + utilized items: item named ‘unpackCString#’
|
|
| 193 | + static-construction object ‘static_ptr_sat_@name_suffix@’:
|
|
| 194 | + data constructor name: (,)
|
|
| 195 | + lifted: yes
|
|
| 196 | + literals: <none>
|
|
| 197 | + utilized items:
|
|
| 198 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 199 | + item named ‘static_ptr_sat_@name_suffix@’
|
|
| 200 | + static-construction object ‘static_ptr_sat_@name_suffix@’:
|
|
| 201 | + data constructor name: I#
|
|
| 202 | + lifted: yes
|
|
| 203 | + literals: word 15
|
|
| 204 | + utilized items: <none>
|
|
| 205 | + static-construction object ‘static_ptr_sat_@name_suffix@’:
|
|
| 206 | + data constructor name: I#
|
|
| 207 | + lifted: yes
|
|
| 208 | + literals: word 24
|
|
| 209 | + utilized items: <none>
|
|
| 210 | + ordinary object ‘positiveFibonaccis2_@name_suffix@’:
|
|
| 211 | + arity: 0
|
|
| 212 | + literals: <none>
|
|
| 213 | + utilized items:
|
|
| 214 | + item named ‘positiveFibonaccis1_@name_suffix@’
|
|
| 215 | + item named ‘fibonaccis’
|
|
| 216 | + item named ‘positiveFibonaccis2_sat_@name_suffix@’
|
|
| 217 | + item named ‘zipWith’
|
|
| 218 | + static-construction object ‘positiveFibonaccis1_@name_suffix@’:
|
|
| 219 | + data constructor name: :
|
|
| 220 | + lifted: yes
|
|
| 221 | + literals: <none>
|
|
| 222 | + utilized items:
|
|
| 223 | + item named ‘positiveFibonaccis_@name_suffix@’
|
|
| 224 | + item named ‘positiveFibonaccis2_@name_suffix@’
|
|
| 225 | + static-construction object ‘fibonaccis’:
|
|
| 226 | + data constructor name: :
|
|
| 227 | + lifted: yes
|
|
| 228 | + literals: <none>
|
|
| 229 | + utilized items:
|
|
| 230 | + item named ‘fibonaccis1_@name_suffix@’
|
|
| 231 | + item named ‘positiveFibonaccis1_@name_suffix@’
|
|
| 232 | + ordinary object ‘positiveFibonaccis2_sat_@name_suffix@’:
|
|
| 233 | + arity: 0
|
|
| 234 | + literals: <none>
|
|
| 235 | + utilized items:
|
|
| 236 | + item named ‘$fNumNatural’
|
|
| 237 | + item named ‘+’
|
|
| 238 | + ordinary object ‘positiveFibonaccis_@name_suffix@’:
|
|
| 239 | + arity: 0
|
|
| 240 | + literals: <none>
|
|
| 241 | + utilized items:
|
|
| 242 | + item named ‘positiveFibonaccis_sat_@name_suffix@’
|
|
| 243 | + item named ‘$fNumNatural’
|
|
| 244 | + item named ‘fromInteger’
|
|
| 245 | + static-construction object ‘positiveFibonaccis_sat_@name_suffix@’:
|
|
| 246 | + data constructor name: IS
|
|
| 247 | + lifted: yes
|
|
| 248 | + literals: word 1
|
|
| 249 | + utilized items: <none>
|
|
| 250 | + ordinary object ‘fibonaccis1_@name_suffix@’:
|
|
| 251 | + arity: 0
|
|
| 252 | + literals: <none>
|
|
| 253 | + utilized items:
|
|
| 254 | + item named ‘fibonaccis1_sat_@name_suffix@’
|
|
| 255 | + item named ‘$fNumNatural’
|
|
| 256 | + item named ‘fromInteger’
|
|
| 257 | + static-construction object ‘fibonaccis1_sat_@name_suffix@’:
|
|
| 258 | + data constructor name: IS
|
|
| 259 | + lifted: yes
|
|
| 260 | + literals: word 0
|
|
| 261 | + utilized items: <none>
|
|
| 262 | + ordinary object ‘$dTypeable2_@name_suffix@’:
|
|
| 263 | + arity: 0
|
|
| 264 | + literals: <none>
|
|
| 265 | + utilized items:
|
|
| 266 | + item named ‘$dTypeable_@name_suffix@’
|
|
| 267 | + item named ‘$dTypeable1_@name_suffix@’
|
|
| 268 | + item named ‘mkTrAppChecked’
|
|
| 269 | + ordinary object ‘$dTypeable1_@name_suffix@’:
|
|
| 270 | + arity: 0
|
|
| 271 | + literals: info table of ‘[]’
|
|
| 272 | + utilized items:
|
|
| 273 | + item named ‘$tcList’
|
|
| 274 | + item named ‘mkTrCon’
|
|
| 275 | + ordinary object ‘$dTypeable_@name_suffix@’:
|
|
| 276 | + arity: 0
|
|
| 277 | + literals: info table of ‘[]’
|
|
| 278 | + utilized items:
|
|
| 279 | + item named ‘$tcNatural’
|
|
| 280 | + item named ‘mkTrCon’
|
|
| 281 | + static-construction object ‘$tc'Nested’:
|
|
| 282 | + data constructor name: TyCon
|
|
| 283 | + lifted: yes
|
|
| 284 | + literals:
|
|
| 285 | + word @large_word@
|
|
| 286 | + word @large_word@
|
|
| 287 | + word 1
|
|
| 288 | + utilized items:
|
|
| 289 | + item named ‘$trModule’
|
|
| 290 | + item named ‘$tc'Nested2_@name_suffix@’
|
|
| 291 | + item named ‘$krep17_@name_suffix@’
|
|
| 292 | + static-construction object ‘$tc'Nested2_@name_suffix@’:
|
|
| 293 | + data constructor name: TrNameS
|
|
| 294 | + lifted: yes
|
|
| 295 | + literals: address ‘$tc'Nested1_@name_suffix@’
|
|
| 296 | + utilized items: <none>
|
|
| 297 | + static-construction object ‘$krep17_@name_suffix@’:
|
|
| 298 | + data constructor name: KindRepFun
|
|
| 299 | + lifted: yes
|
|
| 300 | + literals: <none>
|
|
| 301 | + utilized items:
|
|
| 302 | + item named ‘$krep16_@name_suffix@’
|
|
| 303 | + item named ‘$krep13_@name_suffix@’
|
|
| 304 | + static-construction object ‘$krep16_@name_suffix@’:
|
|
| 305 | + data constructor name: KindRepTyConApp
|
|
| 306 | + lifted: yes
|
|
| 307 | + literals: <none>
|
|
| 308 | + utilized items:
|
|
| 309 | + item named ‘$tcPerfectTree’
|
|
| 310 | + item named ‘$krep15_@name_suffix@’
|
|
| 311 | + static-construction object ‘$krep15_@name_suffix@’:
|
|
| 312 | + data constructor name: :
|
|
| 313 | + lifted: yes
|
|
| 314 | + literals: <none>
|
|
| 315 | + utilized items:
|
|
| 316 | + item named ‘$krep4_@name_suffix@’
|
|
| 317 | + item named ‘[]’
|
|
| 318 | + static-construction object ‘$tc'PerfectTree’:
|
|
| 319 | + data constructor name: TyCon
|
|
| 320 | + lifted: yes
|
|
| 321 | + literals:
|
|
| 322 | + word @large_word@
|
|
| 323 | + word @large_word@
|
|
| 324 | + word 1
|
|
| 325 | + utilized items:
|
|
| 326 | + item named ‘$trModule’
|
|
| 327 | + item named ‘$tc'PerfectTree2_@name_suffix@’
|
|
| 328 | + item named ‘$krep14_@name_suffix@’
|
|
| 329 | + static-construction object ‘$tc'PerfectTree2_@name_suffix@’:
|
|
| 330 | + data constructor name: TrNameS
|
|
| 331 | + lifted: yes
|
|
| 332 | + literals: address ‘$tc'PerfectTree1_@name_suffix@’
|
|
| 333 | + utilized items: <none>
|
|
| 334 | + static-construction object ‘$krep14_@name_suffix@’:
|
|
| 335 | + data constructor name: KindRepFun
|
|
| 336 | + lifted: yes
|
|
| 337 | + literals: <none>
|
|
| 338 | + utilized items:
|
|
| 339 | + item named ‘$krep1_@name_suffix@’
|
|
| 340 | + item named ‘$krep13_@name_suffix@’
|
|
| 341 | + static-construction object ‘$krep13_@name_suffix@’:
|
|
| 342 | + data constructor name: KindRepTyConApp
|
|
| 343 | + lifted: yes
|
|
| 344 | + literals: <none>
|
|
| 345 | + utilized items:
|
|
| 346 | + item named ‘$tcPerfectTree’
|
|
| 347 | + item named ‘$krep12_@name_suffix@’
|
|
| 348 | + static-construction object ‘$krep12_@name_suffix@’:
|
|
| 349 | + data constructor name: :
|
|
| 350 | + lifted: yes
|
|
| 351 | + literals: <none>
|
|
| 352 | + utilized items:
|
|
| 353 | + item named ‘$krep1_@name_suffix@’
|
|
| 354 | + item named ‘[]’
|
|
| 355 | + static-construction object ‘$tcPerfectTree’:
|
|
| 356 | + data constructor name: TyCon
|
|
| 357 | + lifted: yes
|
|
| 358 | + literals:
|
|
| 359 | + word @large_word@
|
|
| 360 | + word @large_word@
|
|
| 361 | + word 0
|
|
| 362 | + utilized items:
|
|
| 363 | + item named ‘$trModule’
|
|
| 364 | + item named ‘$tcPerfectTree2_@name_suffix@’
|
|
| 365 | + item named ‘krep$*Arr*’
|
|
| 366 | + static-construction object ‘$tcPerfectTree2_@name_suffix@’:
|
|
| 367 | + data constructor name: TrNameS
|
|
| 368 | + lifted: yes
|
|
| 369 | + literals: address ‘$tcPerfectTree1_@name_suffix@’
|
|
| 370 | + utilized items: <none>
|
|
| 371 | + static-construction object ‘$tc'Node’:
|
|
| 372 | + data constructor name: TyCon
|
|
| 373 | + lifted: yes
|
|
| 374 | + literals:
|
|
| 375 | + word @large_word@
|
|
| 376 | + word @large_word@
|
|
| 377 | + word 2
|
|
| 378 | + utilized items:
|
|
| 379 | + item named ‘$trModule’
|
|
| 380 | + item named ‘$tc'Node2_@name_suffix@’
|
|
| 381 | + item named ‘$krep11_@name_suffix@’
|
|
| 382 | + static-construction object ‘$tc'Node2_@name_suffix@’:
|
|
| 383 | + data constructor name: TrNameS
|
|
| 384 | + lifted: yes
|
|
| 385 | + literals: address ‘$tc'Node1_@name_suffix@’
|
|
| 386 | + utilized items: <none>
|
|
| 387 | + static-construction object ‘$krep11_@name_suffix@’:
|
|
| 388 | + data constructor name: KindRepFun
|
|
| 389 | + lifted: yes
|
|
| 390 | + literals: <none>
|
|
| 391 | + utilized items:
|
|
| 392 | + item named ‘$krep7_@name_suffix@’
|
|
| 393 | + item named ‘$krep10_@name_suffix@’
|
|
| 394 | + static-construction object ‘$krep10_@name_suffix@’:
|
|
| 395 | + data constructor name: KindRepFun
|
|
| 396 | + lifted: yes
|
|
| 397 | + literals: <none>
|
|
| 398 | + utilized items:
|
|
| 399 | + item named ‘$krep_@name_suffix@’
|
|
| 400 | + item named ‘$krep9_@name_suffix@’
|
|
| 401 | + static-construction object ‘$krep9_@name_suffix@’:
|
|
| 402 | + data constructor name: KindRepFun
|
|
| 403 | + lifted: yes
|
|
| 404 | + literals: <none>
|
|
| 405 | + utilized items:
|
|
| 406 | + item named ‘$krep7_@name_suffix@’
|
|
| 407 | + item named ‘$krep7_@name_suffix@’
|
|
| 408 | + static-construction object ‘$tc'Leaf’:
|
|
| 409 | + data constructor name: TyCon
|
|
| 410 | + lifted: yes
|
|
| 411 | + literals:
|
|
| 412 | + word @large_word@
|
|
| 413 | + word @large_word@
|
|
| 414 | + word 2
|
|
| 415 | + utilized items:
|
|
| 416 | + item named ‘$trModule’
|
|
| 417 | + item named ‘$tc'Leaf2_@name_suffix@’
|
|
| 418 | + item named ‘$krep8_@name_suffix@’
|
|
| 419 | + static-construction object ‘$tc'Leaf2_@name_suffix@’:
|
|
| 420 | + data constructor name: TrNameS
|
|
| 421 | + lifted: yes
|
|
| 422 | + literals: address ‘$tc'Leaf1_@name_suffix@’
|
|
| 423 | + utilized items: <none>
|
|
| 424 | + static-construction object ‘$krep8_@name_suffix@’:
|
|
| 425 | + data constructor name: KindRepFun
|
|
| 426 | + lifted: yes
|
|
| 427 | + literals: <none>
|
|
| 428 | + utilized items:
|
|
| 429 | + item named ‘$krep1_@name_suffix@’
|
|
| 430 | + item named ‘$krep7_@name_suffix@’
|
|
| 431 | + static-construction object ‘$krep7_@name_suffix@’:
|
|
| 432 | + data constructor name: KindRepTyConApp
|
|
| 433 | + lifted: yes
|
|
| 434 | + literals: <none>
|
|
| 435 | + utilized items:
|
|
| 436 | + item named ‘$tcBinTree’
|
|
| 437 | + item named ‘$krep6_@name_suffix@’
|
|
| 438 | + static-construction object ‘$krep6_@name_suffix@’:
|
|
| 439 | + data constructor name: :
|
|
| 440 | + lifted: yes
|
|
| 441 | + literals: <none>
|
|
| 442 | + utilized items:
|
|
| 443 | + item named ‘$krep1_@name_suffix@’
|
|
| 444 | + item named ‘$krep5_@name_suffix@’
|
|
| 445 | + static-construction object ‘$krep5_@name_suffix@’:
|
|
| 446 | + data constructor name: :
|
|
| 447 | + lifted: yes
|
|
| 448 | + literals: <none>
|
|
| 449 | + utilized items:
|
|
| 450 | + item named ‘$krep_@name_suffix@’
|
|
| 451 | + item named ‘[]’
|
|
| 452 | + static-construction object ‘$tcBinTree’:
|
|
| 453 | + data constructor name: TyCon
|
|
| 454 | + lifted: yes
|
|
| 455 | + literals:
|
|
| 456 | + word @large_word@
|
|
| 457 | + word @large_word@
|
|
| 458 | + word 0
|
|
| 459 | + utilized items:
|
|
| 460 | + item named ‘$trModule’
|
|
| 461 | + item named ‘$tcBinTree2_@name_suffix@’
|
|
| 462 | + item named ‘krep$*->*->*’
|
|
| 463 | + static-construction object ‘$tcBinTree2_@name_suffix@’:
|
|
| 464 | + data constructor name: TrNameS
|
|
| 465 | + lifted: yes
|
|
| 466 | + literals: address ‘$tcBinTree1_@name_suffix@’
|
|
| 467 | + utilized items: <none>
|
|
| 468 | + static-construction object ‘$krep4_@name_suffix@’:
|
|
| 469 | + data constructor name: KindRepTyConApp
|
|
| 470 | + lifted: yes
|
|
| 471 | + literals: <none>
|
|
| 472 | + utilized items:
|
|
| 473 | + item named ‘$tcTuple2’
|
|
| 474 | + item named ‘$krep3_@name_suffix@’
|
|
| 475 | + static-construction object ‘$krep3_@name_suffix@’:
|
|
| 476 | + data constructor name: :
|
|
| 477 | + lifted: yes
|
|
| 478 | + literals: <none>
|
|
| 479 | + utilized items:
|
|
| 480 | + item named ‘$krep1_@name_suffix@’
|
|
| 481 | + item named ‘$krep2_@name_suffix@’
|
|
| 482 | + static-construction object ‘$krep2_@name_suffix@’:
|
|
| 483 | + data constructor name: :
|
|
| 484 | + lifted: yes
|
|
| 485 | + literals: <none>
|
|
| 486 | + utilized items:
|
|
| 487 | + item named ‘$krep1_@name_suffix@’
|
|
| 488 | + item named ‘[]’
|
|
| 489 | + static-construction object ‘$krep1_@name_suffix@’:
|
|
| 490 | + data constructor name: KindRepVar
|
|
| 491 | + lifted: yes
|
|
| 492 | + literals: word 0
|
|
| 493 | + utilized items: <none>
|
|
| 494 | + static-construction object ‘$krep_@name_suffix@’:
|
|
| 495 | + data constructor name: KindRepVar
|
|
| 496 | + lifted: yes
|
|
| 497 | + literals: word 1
|
|
| 498 | + utilized items: <none>
|
|
| 499 | + static-construction object ‘$trModule’:
|
|
| 500 | + data constructor name: Module
|
|
| 501 | + lifted: yes
|
|
| 502 | + literals: <none>
|
|
| 503 | + utilized items:
|
|
| 504 | + item named ‘$trModule2_@name_suffix@’
|
|
| 505 | + item named ‘$trModule4_@name_suffix@’
|
|
| 506 | + static-construction object ‘$trModule4_@name_suffix@’:
|
|
| 507 | + data constructor name: TrNameS
|
|
| 508 | + lifted: yes
|
|
| 509 | + literals: address ‘$trModule3_@name_suffix@’
|
|
| 510 | + utilized items: <none>
|
|
| 511 | + static-construction object ‘$trModule2_@name_suffix@’:
|
|
| 512 | + data constructor name: TrNameS
|
|
| 513 | + lifted: yes
|
|
| 514 | + literals: address ‘$trModule1_@name_suffix@’
|
|
| 515 | + utilized items: <none>
|
|
| 516 | + ordinary object ‘divides’:
|
|
| 517 | + arity: 3
|
|
| 518 | + literals: <none>
|
|
| 519 | + utilized items:
|
|
| 520 | + ordinary object ‘$dReal_@name_suffix@’:
|
|
| 521 | + arity: 0
|
|
| 522 | + literals: <none>
|
|
| 523 | + utilized items:
|
|
| 524 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 525 | + arity: 1
|
|
| 526 | + literals:
|
|
| 527 | + word 0
|
|
| 528 | + info table of ‘IS’
|
|
| 529 | + utilized items:
|
|
| 530 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 531 | + arity: 0
|
|
| 532 | + literals: <none>
|
|
| 533 | + utilized items: item named ‘fromInteger’
|
|
| 534 | + item named ‘$p1Real’
|
|
| 535 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 536 | + arity: 3
|
|
| 537 | + literals: <none>
|
|
| 538 | + utilized items: item named ‘mod’
|
|
| 539 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 540 | + arity: 0
|
|
| 541 | + literals: <none>
|
|
| 542 | + utilized items:
|
|
| 543 | + ordinary object ‘divides_sat_@name_suffix@’:
|
|
| 544 | + arity: 0
|
|
| 545 | + literals: <none>
|
|
| 546 | + utilized items: item named ‘==’
|
|
| 547 | + item named ‘$p1Ord’
|
|
| 548 | + item named ‘$p2Real’
|
|
| 549 | + item named ‘$p1Integral’
|
|
| 550 | + ordinary object ‘Node’:
|
|
| 551 | + arity: 3
|
|
| 552 | + literals: info table of ‘Node’
|
|
| 553 | + utilized items: <none>
|
|
| 554 | + ordinary object ‘Leaf’:
|
|
| 555 | + arity: 1
|
|
| 556 | + literals: info table of ‘Leaf’
|
|
| 557 | + utilized items: <none>
|
|
| 558 | + ordinary object ‘Nested’:
|
|
| 559 | + arity: 1
|
|
| 560 | + literals: info table of ‘Nested’
|
|
| 561 | + utilized items: <none>
|
|
| 562 | + ordinary object ‘PerfectTree’:
|
|
| 563 | + arity: 1
|
|
| 564 | + literals: info table of ‘PerfectTree’
|
|
| 565 | + utilized items: <none>
|
|
| 566 | +data constructor info tables:
|
|
| 567 | + info table of ‘PerfectTree’:
|
|
| 568 | + number of words for pointers: 1
|
|
| 569 | + number of words for non-pointers: 0
|
|
| 570 | + info table of ‘Nested’:
|
|
| 571 | + number of words for pointers: 1
|
|
| 572 | + number of words for non-pointers: 0
|
|
| 573 | + info table of ‘Leaf’:
|
|
| 574 | + number of words for pointers: 1
|
|
| 575 | + number of words for non-pointers: 0
|
|
| 576 | + info table of ‘Node’:
|
|
| 577 | + number of words for pointers: 3
|
|
| 578 | + number of words for non-pointers: 0
|
|
| 579 | +top-level strings:
|
|
| 580 | + $tc'Nested1_@name_suffix@: "'Nested"
|
|
| 581 | + $tc'PerfectTree1_@name_suffix@: "'PerfectTree"
|
|
| 582 | + $tcPerfectTree1_@name_suffix@: "PerfectTree"
|
|
| 583 | + $tc'Node1_@name_suffix@: "'Node"
|
|
| 584 | + $tc'Leaf1_@name_suffix@: "'Leaf"
|
|
| 585 | + $tcBinTree1_@name_suffix@: "BinTree"
|
|
| 586 | + $trModule3_@name_suffix@: "Example"
|
|
| 587 | + $trModule1_@name_suffix@: "main"
|
|
| 588 | +breakpoints: <none>
|
|
| 589 | +static-pointer table entries:
|
|
| 590 | + @hash@: static_ptr
|
|
| 591 | + @hash@: static_ptr1
|
|
| 592 | +HPC information: <none>
|
|
| 593 | + |