ghc-7.6.3: The GHC API

Safe Haskell | None

ByteCodeAsm

Synopsis

- assembleBCOs :: DynFlags -> [ProtoBCO Name] -> [TyCon] -> IO CompiledByteCode
- assembleBCO :: DynFlags -> ProtoBCO Name -> IO UnlinkedBCO
- data CompiledByteCode = ByteCode [UnlinkedBCO] ItblEnv
- data UnlinkedBCO = UnlinkedBCO {
  - unlinkedBCOName :: Name
  - unlinkedBCOArity :: Int
  - unlinkedBCOInstrs :: ByteArray#
  - unlinkedBCOBitmap :: ByteArray#
  - unlinkedBCOLits :: SizedSeq BCONPtr
  - unlinkedBCOPtrs :: SizedSeq BCOPtr
  }
- data BCOPtr
  - = BCOPtrName Name
  - | BCOPtrPrimOp PrimOp
  - | BCOPtrBCO UnlinkedBCO
  - | BCOPtrBreakInfo BreakInfo
  - | BCOPtrArray (MutableByteArray# RealWorld)
- data BCONPtr
  - = BCONPtrWord Word
  - | BCONPtrLbl FastString
  - | BCONPtrItbl Name
- bcoFreeNames :: UnlinkedBCO -> NameSet
- data SizedSeq a
- sizeSS :: SizedSeq a -> Word
- ssElts :: SizedSeq a -> [a]
- iNTERP_STACK_CHECK_THRESH :: Int

# Documentation

assembleBCOs :: DynFlags -> [ProtoBCO Name] -> [TyCon] -> IO CompiledByteCode

assembleBCO :: DynFlags -> ProtoBCO Name -> IO UnlinkedBCO

data CompiledByteCode

Constructors

ByteCode [UnlinkedBCO] ItblEnv |

Instances

Outputable CompiledByteCode |

data UnlinkedBCO

Constructors

UnlinkedBCO |
Fields unlinkedBCOName :: Name unlinkedBCOArity :: Int unlinkedBCOInstrs :: ByteArray# unlinkedBCOBitmap :: ByteArray# unlinkedBCOLits :: SizedSeq BCONPtr unlinkedBCOPtrs :: SizedSeq BCOPtr

Instances

Outputable UnlinkedBCO |

data BCOPtr

Constructors

BCOPtrName Name |
BCOPtrPrimOp PrimOp |
BCOPtrBCO UnlinkedBCO |
BCOPtrBreakInfo BreakInfo |
BCOPtrArray (MutableByteArray# RealWorld) |

data BCONPtr

Constructors

BCONPtrWord Word |
BCONPtrLbl FastString |
BCONPtrItbl Name |

bcoFreeNames :: UnlinkedBCO -> NameSet

Finds external references. Remember to remove the names defined by this group of BCOs themselves

data SizedSeq a

sizeSS :: SizedSeq a -> Word

ssElts :: SizedSeq a -> [a]

iNTERP_STACK_CHECK_THRESH :: Int