ghc-simple 0.1.0.0 → 0.1.1.0
raw patch · 4 files changed
+221/−29 lines, 4 filesdep −data-defaultPVP ok
version bump matches the API change (PVP)
Dependencies removed: data-default
API changes (from Hackage documentation)
+ Language.Haskell.GHC.Simple.PrimIface: AddCFinalizerToWeakOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Addr2IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrAddOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrEqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrGeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrGtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrLeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrLtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrNeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrRemOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrSubOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AddrToAnyOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AndIOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AndOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AtomicModifyMutVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: AtomicallyOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: BSwap16Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: BSwap32Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: BSwap64Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: BSwapOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ByteArrayContents_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CasArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CasByteArrayOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CasMutVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CatchOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CatchRetryOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CatchSTMOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CharEqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CharGeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CharGtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CharLeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CharLtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CharNeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Check :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ChrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CloneArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CloneMutableArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Compare :: OccName -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: CopyAddrToByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyByteArrayToAddrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyMutableArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyMutableArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyMutableByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: CopyMutableByteArrayToAddrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DataToTagOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DeRefStablePtrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DeRefWeakOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DelayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Double2FloatOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Double2IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleAcosOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleAddOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleAsinOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleAtanOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleCosOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleCoshOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleDecode_2IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleDivOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleEqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleExpOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleGeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleGtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleLeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleLogOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleLtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleMulOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleNeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleNegOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoublePowerOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleSinOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleSinhOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleSqrtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleSubOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleTanOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: DoubleTanhOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Dyadic :: OccName -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: EqStableNameOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: EqStablePtrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FetchAddByteArrayOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FinalizeWeakOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Float2DoubleOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Float2IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatAcosOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatAddOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatAsinOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatAtanOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatCosOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatCoshOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatDecode_IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatDivOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatEqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatExpOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatGeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatGtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatLeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatLogOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatLtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatMulOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatNeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatNegOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatPowerOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatSinOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatSinhOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatSqrtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatSubOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatTanOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FloatTanhOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ForkOnOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ForkOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: FreezeArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: GenPrimOp :: OccName -> [TyVar] -> [Type] -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: GetApStackValOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: GetCCSOfOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: GetCurrentCCSOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: GetSparkOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ISllOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ISraOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ISrlOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexArrayArrayOp_ArrayArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexArrayArrayOp_ByteArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Addr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Double :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Float :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Int16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Int32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Int64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Int8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_StablePtr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_WideChar :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Word :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Word16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Word32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Word64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexByteArrayOp_Word8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Addr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Double :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Float :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Int16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Int32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Int64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Int8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_StablePtr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_WideChar :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Word :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Word16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Word32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Word64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IndexOffAddrOp_Word8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Int2AddrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Int2DoubleOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Int2FloatOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Int2WordOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntAddCOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntAddOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntEqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntGeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntGtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntLeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntLtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntMulMayOfloOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntMulOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntNeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntNegOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntQuotOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntQuotRemOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntRemOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntSubCOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IntSubOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IsCurrentThreadBoundOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: IsEmptyMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: KillThreadOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: LabelThreadOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MakeStableNameOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MakeStablePtrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MaskAsyncExceptionsOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MaskStatus :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MaskUninterruptibleOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MkApUpd0_Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MkWeakNoFinalizerOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: MkWeakOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Monadic :: OccName -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: MyThreadIdOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Narrow16IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Narrow16WordOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Narrow32IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Narrow32WordOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Narrow8IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Narrow8WordOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewAlignedPinnedByteArrayOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewBCOOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewByteArrayOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewMutVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewPinnedByteArrayOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NewTVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NoDuplicateOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NotIOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NotOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: NumSparks :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: OrIOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: OrOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: OrdOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParAtAbsOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParAtForNowOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParAtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParAtRelOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParGlobalOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParLocalOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ParOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PopCnt16Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PopCnt32Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PopCnt64Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PopCnt8Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PopCntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchAddrOp0 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchAddrOp1 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchAddrOp2 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchAddrOp3 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchByteArrayOp0 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchByteArrayOp1 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchByteArrayOp2 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchByteArrayOp3 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchMutableByteArrayOp0 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchMutableByteArrayOp1 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchMutableByteArrayOp2 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PrefetchMutableByteArrayOp3 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: PutMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: RaiseIOOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: RaiseOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadArrayArrayOp_ArrayArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadArrayArrayOp_ByteArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadArrayArrayOp_MutableArrayArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadArrayArrayOp_MutableByteArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Addr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Double :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Float :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Int16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Int32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Int64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Int8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_StablePtr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_WideChar :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Word :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Word16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Word32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Word64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadByteArrayOp_Word8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadMutVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Addr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Double :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Float :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Int16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Int32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Int64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Int8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_StablePtr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_WideChar :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Word :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Word16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Word32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Word64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadOffAddrOp_Word8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadTVarIOOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReadTVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ReallyUnsafePtrEqualityOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: RetryOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SameMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SameMutVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SameMutableArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SameMutableArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SameMutableByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SameTVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SeqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SetByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SizeofArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SizeofArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SizeofByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SizeofMutableArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SizeofMutableArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SizeofMutableByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SllOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SparkOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: SrlOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: StableNameToIntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TagToEnumOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TakeMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ThawArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: ThreadStatusOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TouchOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TraceEventOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TraceMarkerOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TryPutMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TryReadMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: TryTakeMVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: UnmaskAsyncExceptionsOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: UnpackClosureOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: UnsafeFreezeArrayArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: UnsafeFreezeArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: UnsafeFreezeByteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: UnsafeThawArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecAddOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecBroadcastOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecDivOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecIndexByteArrayOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecIndexOffAddrOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecIndexScalarByteArrayOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecIndexScalarOffAddrOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecInsertOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecMulOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecNegOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecPackOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecQuotOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecReadByteArrayOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecReadOffAddrOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecReadScalarByteArrayOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecReadScalarOffAddrOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecRemOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecSubOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecUnpackOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecWriteByteArrayOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecWriteOffAddrOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecWriteScalarByteArrayOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: VecWriteScalarOffAddrOp :: PrimOpVecCat -> Length -> Width -> PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WaitReadOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WaitWriteOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Word2DoubleOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Word2FloatOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: Word2IntOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordAdd2Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordAddOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordEqOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordGeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordGtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordLeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordLtOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordMul2Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordMulOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordNeOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordQuotOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordQuotRem2Op :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordQuotRemOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordRemOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WordSubOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteArrayArrayOp_ArrayArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteArrayArrayOp_ByteArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteArrayArrayOp_MutableArrayArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteArrayArrayOp_MutableByteArray :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteArrayOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Addr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Double :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Float :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Int16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Int32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Int64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Int8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_StablePtr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_WideChar :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Word :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Word16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Word32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Word64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteByteArrayOp_Word8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteMutVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Addr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Char :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Double :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Float :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Int :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Int16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Int32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Int64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Int8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_StablePtr :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_WideChar :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Word :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Word16 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Word32 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Word64 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteOffAddrOp_Word8 :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: WriteTVarOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: XorIOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: XorOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: YieldOp :: PrimOp
+ Language.Haskell.GHC.Simple.PrimIface: data PrimOp :: *
+ Language.Haskell.GHC.Simple.PrimIface: data PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: fixPrimopTypes :: (PrimOp -> PrimOpInfo) -> (PrimOp -> Arity -> StrictSig) -> HscEnv -> IO ()
+ Language.Haskell.GHC.Simple.PrimIface: mkCompare :: FastString -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: mkDyadic :: FastString -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: mkGenPrimOp :: FastString -> [TyVar] -> [Type] -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: mkMonadic :: FastString -> Type -> PrimOpInfo
+ Language.Haskell.GHC.Simple.PrimIface: primIface :: (PrimOp -> PrimOpInfo) -> (PrimOp -> Arity -> StrictSig) -> ModIface
+ Language.Haskell.GHC.Simple.Types: CompiledModule :: ModSummary -> String -> String -> Bool -> Bool -> Maybe FilePath -> FilePath -> a -> CompiledModule a
+ Language.Haskell.GHC.Simple.Types: Error :: SrcSpan -> String -> String -> Error
+ Language.Haskell.GHC.Simple.Types: Failure :: [Error] -> [Warning] -> CompResult a
+ Language.Haskell.GHC.Simple.Types: Success :: [CompiledModule a] -> [Warning] -> DynFlags -> CompResult a
+ Language.Haskell.GHC.Simple.Types: Warning :: SrcSpan -> String -> Warning
+ Language.Haskell.GHC.Simple.Types: cfgCustomPrimIface :: CompConfig -> Maybe (PrimOp -> PrimOpInfo, PrimOp -> Arity -> StrictSig)
+ Language.Haskell.GHC.Simple.Types: cfgGhcFlags :: CompConfig -> [String]
+ Language.Haskell.GHC.Simple.Types: cfgGhcLibDir :: CompConfig -> Maybe FilePath
+ Language.Haskell.GHC.Simple.Types: cfgUpdateDynFlags :: CompConfig -> DynFlags -> DynFlags
+ Language.Haskell.GHC.Simple.Types: cfgUseGhcErrorLogger :: CompConfig -> Bool
+ Language.Haskell.GHC.Simple.Types: cfgUseTargetsFromFlags :: CompConfig -> Bool
+ Language.Haskell.GHC.Simple.Types: compDynFlags :: CompResult a -> DynFlags
+ Language.Haskell.GHC.Simple.Types: compErrors :: CompResult a -> [Error]
+ Language.Haskell.GHC.Simple.Types: compResult :: CompResult a -> [CompiledModule a]
+ Language.Haskell.GHC.Simple.Types: compSuccess :: CompResult a -> Bool
+ Language.Haskell.GHC.Simple.Types: compWarnings :: CompResult a -> [Warning]
+ Language.Haskell.GHC.Simple.Types: data CompConfig
+ Language.Haskell.GHC.Simple.Types: data CompResult a
+ Language.Haskell.GHC.Simple.Types: data CompiledModule a
+ Language.Haskell.GHC.Simple.Types: data Error
+ Language.Haskell.GHC.Simple.Types: data Warning
+ Language.Haskell.GHC.Simple.Types: defaultConfig :: CompConfig
+ Language.Haskell.GHC.Simple.Types: errorExtraInfo :: Error -> String
+ Language.Haskell.GHC.Simple.Types: errorMessage :: Error -> String
+ Language.Haskell.GHC.Simple.Types: errorSpan :: Error -> SrcSpan
+ Language.Haskell.GHC.Simple.Types: modCompiledModule :: CompiledModule a -> a
+ Language.Haskell.GHC.Simple.Types: modInterfaceFile :: CompiledModule a -> FilePath
+ Language.Haskell.GHC.Simple.Types: modIsTarget :: CompiledModule a -> Bool
+ Language.Haskell.GHC.Simple.Types: modName :: CompiledModule a -> String
+ Language.Haskell.GHC.Simple.Types: modPackageKey :: CompiledModule a -> String
+ Language.Haskell.GHC.Simple.Types: modSourceFile :: CompiledModule a -> Maybe FilePath
+ Language.Haskell.GHC.Simple.Types: modSourceIsHsBoot :: CompiledModule a -> Bool
+ Language.Haskell.GHC.Simple.Types: modSummary :: CompiledModule a -> ModSummary
+ Language.Haskell.GHC.Simple.Types: warnMessage :: Warning -> String
+ Language.Haskell.GHC.Simple.Types: warnSpan :: Warning -> SrcSpan
Files
- ghc-simple.cabal +3/−4
- src/Language/Haskell/GHC/Simple.hs +23/−5
- src/Language/Haskell/GHC/Simple/PrimIface.hs +167/−0
- src/Language/Haskell/GHC/Simple/Types.hs +28/−20
ghc-simple.cabal view
@@ -1,5 +1,5 @@ name: ghc-simple-version: 0.1.0.0+version: 0.1.1.0 synopsis: Simplified interface to the GHC API. description: The GHC API is a great tool for working with Haskell code. Unfortunately, it's also fairly opaque and hard to get@@ -26,15 +26,14 @@ exposed-modules: Language.Haskell.GHC.Simple, Language.Haskell.GHC.Simple.Impl- other-modules: + Language.Haskell.GHC.Simple.PrimIface Language.Haskell.GHC.Simple.Types other-extensions: CPP, PatternGuards, FlexibleInstances build-depends: ghc >=7.8, base >=4.7 && <4.9,- ghc-paths >=0.1 && <0.2,- data-default >=0.5 && <0.6+ ghc-paths >=0.1 && <0.2 hs-source-dirs: src default-language:
src/Language/Haskell/GHC/Simple.hs view
@@ -1,12 +1,12 @@ {-# LANGUAGE CPP, PatternGuards #-} -- | Simplified interface to the GHC API. module Language.Haskell.GHC.Simple (- -- Configuration, input and output types+ -- * Configuration, input and output types module Simple.Types, Compile, StgModule, - -- GHC re-exports needed to meaningfully process STG and Core.+ -- * GHC re-exports for processing STG and Core module CoreSyn, module StgSyn, module Module, module Id, module IdInfo, module Var, module Literal, module DataCon, module OccName, module Name,@@ -17,7 +17,7 @@ PkgKey, pkgKeyString, modulePkgKey, - -- Entry points+ -- * Entry points compile, compileWith, genericCompile ) where @@ -30,6 +30,7 @@ import Bag import SrcLoc import Outputable+import Hooks -- Convenience re-exports for fiddling with STG import StgSyn@@ -51,6 +52,8 @@ -- Misc. stuff import GHC.Paths (libdir) import Data.IORef+import Control.Monad+import Language.Haskell.GHC.Simple.PrimIface as Simple.PrimIface import Language.Haskell.GHC.Simple.Types as Simple.Types import Language.Haskell.GHC.Simple.Impl @@ -61,7 +64,7 @@ -- ^ List of compilation targets. A target can be either a module -- or a file name. -> IO (CompResult a)-compile = compileWith def+compile = compileWith defaultConfig -- | Compile a list of targets and their dependencies using a custom -- configuration.@@ -92,12 +95,21 @@ (flags, _staticwarns) <- parseStaticFlags $ map noLoc (cfgGhcFlags cfg) warns <- newIORef [] runGhc (maybe (Just libdir) Just (cfgGhcLibDir cfg)) $ do++ -- Parse and update dynamic flags dfs <- getSessionDynFlags (dfs', files2, _dynwarns) <- parseDynamicFlags dfs flags let dfs'' = cfgUpdateDynFlags cfg $ dfs' { log_action = logger (log_action dfs') warns }- _ <- setSessionDynFlags dfs''++ -- Update prim interface hook name and cache if we're using a custom+ -- GHC.Prim interface, setting the dynflags in the process.+ case cfgCustomPrimIface cfg of+ Just (nfo, strs) -> setPrimIface dfs'' nfo strs+ _ -> void $ setSessionDynFlags dfs''++ -- Generate code and report results ecode <- genCode (toCompiledModule comp) (files ++ map unLoc files2) ws <- liftIO $ readIORef warns case ecode of@@ -113,6 +125,12 @@ compWarnings = ws } where+ setPrimIface dfs nfo strs = do+ void $ setSessionDynFlags dfs {+ hooks = (hooks dfs) {ghcPrimIfaceHook = Just $ primIface nfo strs}+ }+ getSession >>= liftIO . fixPrimopTypes nfo strs+ logger deflog warns dfs severity srcspan style msg | cfgUseGhcErrorLogger cfg = do logger' deflog warns dfs severity srcspan style msg
+ src/Language/Haskell/GHC/Simple/PrimIface.hs view
@@ -0,0 +1,167 @@+{-# LANGUAGE CPP #-}+-- | Facilities for using a custom GHC.Prim interface.+--+-- The simplest(?) way to use this is to generate primop info+-- using the @genprimopcode@ program from GHC, making any desired changes+-- to those files, and passing the @primOpInfo@ and @primOpStrictness@+-- functions defined therein as the @cfgCustomPrimIface@ member of+-- your config.+--+-- Your strictness and info functions need to support all the+-- primops exported by the GHC version in use, making code written for this+-- interface rather less portable than code using the rest of @ghc-simple@.+--+-- This functionality is probably what you want if you are making a cross+-- compiler, to prevent the types of GHC primops from changing depending on+-- the compiler host platform.+--+-- If you are *not* making a cross compiler, chances are you will not want to+-- touch this with a ten foot pole.+module Language.Haskell.GHC.Simple.PrimIface (+ module Demand, module TysWiredIn, module FastString, module CmmType,+ module BasicTypes,+ PrimOp (..), PrimOpInfo (..),+ mkGenPrimOp, mkDyadic, mkMonadic, mkCompare,+ primIface, fixPrimopTypes+ ) where+import IfaceEnv (initNameCache)+import PrelInfo (wiredInThings, primOpRules, ghcPrimIds)+import PrimOp hiding (primOpSig)+import IdInfo+import Rules+import PrelNames+import Name+import BasicTypes+import Type+import Unique+import Id+import TysWiredIn+import TysPrim+import FastString+import Demand+import HscTypes+import Avail+import MkId (seqId)+import Data.IORef (modifyIORef')+import TyCon+import CmmType++#if __GLASGOW_HASKELL__ < 710+setCallArityInfo :: IdInfo -> Arity -> IdInfo+setCallArityInfo i _ = i+#endif++-- | Module interface for @GHC.Prim@, with the given function applied to each+-- primop.+primIface :: (PrimOp -> PrimOpInfo)+ -> (PrimOp -> Arity -> StrictSig)+ -> ModIface+primIface nfo str = (emptyModIface gHC_PRIM) {+ mi_exports = exports nfo str,+ mi_decls = [],+ mi_fixities = fixies,+ mi_fix_fn = mkIfaceFixCache fixies+ }+ where+ fixies = (getOccName seqId, Fixity 0 InfixR) :+ [(primOpOcc op, f)+ | op <- allThePrimOps+ , Just f <- [primOpFixity op]]++exports :: (PrimOp -> PrimOpInfo)+ -> (PrimOp -> Arity -> StrictSig)+ -> [IfaceExport]+exports nfo str = concat [+ map (Avail . idName) ghcPrimIds,+ map (Avail . idName . (fixPrimOp nfo str)) allThePrimOps,+ [ AvailTC n [n]+ | tc <- funTyCon : coercibleTyCon : primTyCons, let n = tyConName tc]+ ]++-- | Fix primop types in the name cache.+fixPrimopTypes :: (PrimOp -> PrimOpInfo)+ -> (PrimOp -> Arity -> StrictSig)+ -> HscEnv+ -> IO ()+fixPrimopTypes nfo str env = do+ modifyIORef' (hsc_NC env) fixNC+ where+ isPrim (AnId v) = isPrimOpId v+ isPrim _ = False++ fixNC (NameCache us _) = initNameCache us $ concat [+ [getName thing | thing <- wiredInThings, not (isPrim thing)],+ basicKnownKeyNames,+ map (getName . AnId . fixPrimOp nfo str) allThePrimOps+ ]++-- | Primitive operation signature: constists of the op's type, arity and+-- strictness annotations.+data PrimOpSig = PrimOpSig {+ opType :: !Type,+ opArity :: !Arity,+ opStrictness :: !StrictSig+ }++-- | Get the signature of a primitive operation.+primOpSig :: (PrimOp -> PrimOpInfo)+ -> (PrimOp -> Arity -> StrictSig)+ -> PrimOp+ -> PrimOpSig+primOpSig nfo str op = PrimOpSig {+ opType = typ,+ opArity = arity,+ opStrictness = str op arity+ }+ where+ (typ, arity) =+ case nfo op of+ Monadic _ t -> (mkForAllTys [] $ mkFunTys [t] t, 1)+ Dyadic _ t -> (mkForAllTys [] $ mkFunTys [t,t] t, 2)+ Compare _ t -> (mkForAllTys [] $ mkFunTys [t,t] intPrimTy, 2)+ GenPrimOp _ tvs ts t -> (mkForAllTys tvs $ mkFunTys ts t, length ts)++data PrimOpInfo+ = Dyadic OccName -- string :: T -> T -> T+ Type+ | Monadic OccName -- string :: T -> T+ Type+ | Compare OccName -- string :: T -> T -> Bool+ Type++ | GenPrimOp OccName -- string :: \/a1..an . T1 -> .. -> Tk -> T+ [TyVar]+ [Type]+ Type++fixPrimOp :: (PrimOp -> PrimOpInfo)+ -> (PrimOp -> Arity -> StrictSig)+ -> PrimOp+ -> Id+fixPrimOp opnfo str op =+ var+ where+ sig = primOpSig opnfo str op+ var = mkGlobalId (PrimOpId op) name (opType sig) nfo+ name = mkWiredInName gHC_PRIM (primOpOcc op) unique (AnId var) UserSyntax+ unique = mkPrimOpIdUnique $ primOpTag op+ nfo = flip setCallArityInfo (opArity sig) $+ noCafIdInfo `setStrictnessInfo` opStrictness sig+ `setSpecInfo` si+ `setArityInfo` opArity sig+ `setInlinePragInfo` neverInlinePragma+ si = mkSpecInfo $ case primOpRules name op of+ Just r -> [r]+ _ -> []++-- | Create a 'PrimOpInfo' for dyadic, monadic and compare primops.+-- Needed by GHC-generated primop info includes.+mkDyadic, mkMonadic, mkCompare :: FastString -> Type -> PrimOpInfo+mkDyadic str ty = Dyadic (mkVarOccFS str) ty+mkMonadic str ty = Monadic (mkVarOccFS str) ty+mkCompare str ty = Compare (mkVarOccFS str) ty++-- | Create a general 'PrimOpInfo'. Needed by GHC-generated primop info+-- includes.+mkGenPrimOp :: FastString -> [TyVar] -> [Type] -> Type -> PrimOpInfo+mkGenPrimOp str tvs tys ty = GenPrimOp (mkVarOccFS str) tvs tys ty
src/Language/Haskell/GHC/Simple/Types.hs view
@@ -1,25 +1,21 @@ -- | Config, input and output types for the simplified GHC API. module Language.Haskell.GHC.Simple.Types (- Default (..),- -- Configuration CompConfig,+ defaultConfig, cfgGhcFlags, cfgUseTargetsFromFlags, cfgUpdateDynFlags, cfgGhcLibDir,- cfgUseGhcErrorLogger,+ cfgUseGhcErrorLogger, cfgCustomPrimIface, -- Results and errors CompiledModule (..), CompResult (..), Error (..), Warning (..),- ghcSuccess+ compSuccess ) where --- GHC imports import GHC---- Misc. stuff-import Data.Default+import Language.Haskell.GHC.Simple.PrimIface data CompConfig = CompConfig { -- | GHC command line flags to control the Haskell to STG compilation@@ -63,17 +59,29 @@ -- of the system's default GHC compiler will be used. -- -- Default: @Nothing@- cfgGhcLibDir :: Maybe FilePath+ cfgGhcLibDir :: Maybe FilePath,++ -- | Use a custom interface for @GHC.Prim@.+ -- This is useful if you want to, for instance, compile to a 32 bit+ -- target architecture on a 64 bit host.+ --+ -- For more information, see "Language.Haskell.GHC.Simple.PrimIface".+ --+ -- Default: @Nothing@+ cfgCustomPrimIface :: Maybe (PrimOp -> PrimOpInfo,+ PrimOp -> Arity -> StrictSig) } -instance Default CompConfig where- def = CompConfig {- cfgGhcFlags = [],- cfgUseTargetsFromFlags = True,- cfgUpdateDynFlags = id,- cfgUseGhcErrorLogger = False,- cfgGhcLibDir = Nothing- }+-- | Default configuration.+defaultConfig :: CompConfig+defaultConfig = CompConfig {+ cfgGhcFlags = [],+ cfgUseTargetsFromFlags = True,+ cfgUpdateDynFlags = id,+ cfgUseGhcErrorLogger = False,+ cfgGhcLibDir = Nothing,+ cfgCustomPrimIface = Nothing+ } -- | Compiler output and metadata for a given module. data CompiledModule a = CompiledModule {@@ -151,6 +159,6 @@ } -- | Does the given 'CompResult' represent a successful compilation?-ghcSuccess :: CompResult a -> Bool-ghcSuccess (Success {}) = True-ghcSuccess _ = False+compSuccess :: CompResult a -> Bool+compSuccess (Success {}) = True+compSuccess _ = False