-data Builtins = Builtins {
- parrayTyCon :: TyCon
- , paTyCon :: TyCon
- , paDataCon :: DataCon
- , reprTyCon :: TyCon
- , embedTyCon :: TyCon
- , embedDataCon :: DataCon
- , crossTyCon :: TyCon
- , plusTyCon :: TyCon
- , closureTyCon :: TyCon
- , mkClosureVar :: Var
- , applyClosureVar :: Var
- , mkClosurePVar :: Var
- , applyClosurePVar :: Var
- , lengthPAVar :: Var
- , replicatePAVar :: Var
- , emptyPAVar :: Var
- -- , packPAVar :: Var
- -- , combinePAVar :: Var
- , intEqPAVar :: Var
- , liftingContext :: Var
- }
-
-initBuiltins :: DsM Builtins
-initBuiltins
- = do
- parrayTyCon <- dsLookupTyCon parrayTyConName
- paTyCon <- dsLookupTyCon paTyConName
- let paDataCon = case tyConDataCons paTyCon of [dc] -> dc
- reprTyCon <- dsLookupTyCon reprTyConName
- embedTyCon <- dsLookupTyCon embedTyConName
- let embedDataCon = case tyConDataCons embedTyCon of [dc] -> dc
- crossTyCon <- dsLookupTyCon crossTyConName
- plusTyCon <- dsLookupTyCon plusTyConName
- closureTyCon <- dsLookupTyCon closureTyConName
-
- mkClosureVar <- dsLookupGlobalId mkClosureName
- applyClosureVar <- dsLookupGlobalId applyClosureName
- mkClosurePVar <- dsLookupGlobalId mkClosurePName
- applyClosurePVar <- dsLookupGlobalId applyClosurePName
- lengthPAVar <- dsLookupGlobalId lengthPAName
- replicatePAVar <- dsLookupGlobalId replicatePAName
- emptyPAVar <- dsLookupGlobalId emptyPAName
- -- packPAVar <- dsLookupGlobalId packPAName
- -- combinePAVar <- dsLookupGlobalId combinePAName
- intEqPAVar <- dsLookupGlobalId intEqPAName
-
- liftingContext <- liftM (\u -> mkSysLocal FSLIT("lc") u intPrimTy)
- newUnique
-
- return $ Builtins {
- parrayTyCon = parrayTyCon
- , paTyCon = paTyCon
- , paDataCon = paDataCon
- , reprTyCon = reprTyCon
- , embedTyCon = embedTyCon
- , embedDataCon = embedDataCon
- , crossTyCon = crossTyCon
- , plusTyCon = plusTyCon
- , closureTyCon = closureTyCon
- , mkClosureVar = mkClosureVar
- , applyClosureVar = applyClosureVar
- , mkClosurePVar = mkClosurePVar
- , applyClosurePVar = applyClosurePVar
- , lengthPAVar = lengthPAVar
- , replicatePAVar = replicatePAVar
- , emptyPAVar = emptyPAVar
- -- , packPAVar = packPAVar
- -- , combinePAVar = combinePAVar
- , intEqPAVar = intEqPAVar
- , liftingContext = liftingContext
- }
-