A ResolvedBCO is one in which all the Name references have been
resolved to actual addresses or RemoteHValues.
Constructors
ResolvedBCOresolvedBCOIsLE :: !BoolresolvedBCOArity :: !IntresolvedBCOInstrs :: !BCOByteArray Word16insns
resolvedBCOBitmap :: !BCOByteArray Wordbitmap
resolvedBCOLits :: !BCOByteArray Wordnon-ptrs - subword sized entries still take up a full (host) word
resolvedBCOPtrs :: !SmallArray ResolvedBCOPtrptrs
ResolvedStaticConA resolved static constructor See Note [Static constructors in Bytecode]
resolvedBCOIsLE :: !BoolresolvedStaticConInfoPtr :: !RemotePtr StgInfoTableresolvedStaticConArity :: !Wordhow many words are used for the payload of the static constructor (size of ptrs and (packed) non-ptrs combined)
resolvedStaticConLits :: !BCOByteArray WordNotably, sub-word non-ptr arguments and padding have already been packed into full words, and this array only stores the full final words to write as the constructor payload.
This is opposed to what we do for BCO literals, where we keep sub-word literals as full words. For static constructors, the layout must match exactly what the NCG also expects, so we must pack sub-words accordingly for compatibility between interpreted and compiled code.
resolvedStaticConPtrs :: !SmallArray ResolvedBCOPtrresolvedStaticConIsUnlifted :: !Bool
Instances4Show, Generic, Binary, Rep
Show ResolvedBCODefined in ghci-10.0.0.20260917 · GHCi.ResolvedBCOGeneric ResolvedBCODefined in ghci-10.0.0.20260917 · GHCi.ResolvedBCOBinary ResolvedBCODefined in ghci-10.0.0.20260917 · GHCi.ResolvedBCOThe Binary instance for ResolvedBCOs.
Note, that we do encode the endianness, however there is no support for mixed endianness setups. This is primarily to ensure that ghc and iserv share the same endianness.
type Rep ResolvedBCO = D1 ('MetaDataDefined in ghci-10.0.0.20260917 · GHCi.ResolvedBCO"ResolvedBCO"
"GHCi.ResolvedBCO"
"ghci-10.0.0.20260917-ecdf"
'False) (C1 ('MetaCons"ResolvedBCO"
'PrefixI 'True) ((S1 ('MetaSel ('Just"resolvedBCOIsLE"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool) :*: (S1 ('MetaSel ('Just"resolvedBCOArity"
) 'SourceUnpack 'SourceStrict 'DecidedUnpack) (Rec0 Int) :*: S1 ('MetaSel ('Just"resolvedBCOInstrs"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 (BCOByteArray Word16)))) :*: (S1 ('MetaSel ('Just"resolvedBCOBitmap"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 (BCOByteArray Word)) :*: (S1 ('MetaSel ('Just"resolvedBCOLits"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 (BCOByteArray Word)) :*: S1 ('MetaSel ('Just"resolvedBCOPtrs"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 (SmallArray ResolvedBCOPtr))))) :+: C1 ('MetaCons"ResolvedStaticCon"
'PrefixI 'True) ((S1 ('MetaSel ('Just"resolvedBCOIsLE"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool) :*: (S1 ('MetaSel ('Just"resolvedStaticConInfoPtr"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 (RemotePtr StgInfoTable)) :*: S1 ('MetaSel ('Just"resolvedStaticConArity"
) 'SourceUnpack 'SourceStrict 'DecidedUnpack) (Rec0 Word))) :*: (S1 ('MetaSel ('Just"resolvedStaticConLits"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 (BCOByteArray Word)) :*: (S1 ('MetaSel ('Just"resolvedStaticConPtrs"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 (SmallArray ResolvedBCOPtr)) :*: S1 ('MetaSel ('Just"resolvedStaticConIsUnlifted"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool)))))