2 Builtins(..), initBuiltins
5 #include "HsVersions.h"
9 import DataCon ( DataCon )
10 import TyCon ( TyCon, tyConDataCons )
12 import Id ( mkSysLocal )
14 import TysPrim ( intPrimTy )
17 import Control.Monad ( liftM )
19 data Builtins = Builtins {
22 , paDataCon :: DataCon
25 , prDataCon :: DataCon
27 , embedDataCon :: DataCon
29 , crossDataCon :: DataCon
31 , leftDataCon :: DataCon
32 , rightDataCon :: DataCon
33 , closureTyCon :: TyCon
35 , applyClosureVar :: Var
36 , mkClosurePVar :: Var
37 , applyClosurePVar :: Var
39 , replicatePAVar :: Var
42 -- , combinePAVar :: Var
44 , liftingContext :: Var
47 initBuiltins :: DsM Builtins
50 parrayTyCon <- dsLookupTyCon parrayTyConName
51 paTyCon <- dsLookupTyCon paTyConName
52 let [paDataCon] = tyConDataCons paTyCon
53 preprTyCon <- dsLookupTyCon preprTyConName
54 prTyCon <- dsLookupTyCon prTyConName
55 let [prDataCon] = tyConDataCons prTyCon
56 embedTyCon <- dsLookupTyCon embedTyConName
57 let [embedDataCon] = tyConDataCons embedTyCon
58 crossTyCon <- dsLookupTyCon ndpCrossTyConName
59 let [crossDataCon] = tyConDataCons crossTyCon
60 plusTyCon <- dsLookupTyCon ndpPlusTyConName
61 let [leftDataCon, rightDataCon] = tyConDataCons plusTyCon
62 closureTyCon <- dsLookupTyCon closureTyConName
64 mkClosureVar <- dsLookupGlobalId mkClosureName
65 applyClosureVar <- dsLookupGlobalId applyClosureName
66 mkClosurePVar <- dsLookupGlobalId mkClosurePName
67 applyClosurePVar <- dsLookupGlobalId applyClosurePName
68 lengthPAVar <- dsLookupGlobalId lengthPAName
69 replicatePAVar <- dsLookupGlobalId replicatePAName
70 emptyPAVar <- dsLookupGlobalId emptyPAName
71 -- packPAVar <- dsLookupGlobalId packPAName
72 -- combinePAVar <- dsLookupGlobalId combinePAName
73 intEqPAVar <- dsLookupGlobalId intEqPAName
75 liftingContext <- liftM (\u -> mkSysLocal FSLIT("lc") u intPrimTy)
79 parrayTyCon = parrayTyCon
81 , paDataCon = paDataCon
82 , preprTyCon = preprTyCon
84 , prDataCon = prDataCon
85 , embedTyCon = embedTyCon
86 , embedDataCon = embedDataCon
87 , crossTyCon = crossTyCon
88 , crossDataCon = crossDataCon
89 , plusTyCon = plusTyCon
90 , leftDataCon = leftDataCon
91 , rightDataCon = rightDataCon
92 , closureTyCon = closureTyCon
93 , mkClosureVar = mkClosureVar
94 , applyClosureVar = applyClosureVar
95 , mkClosurePVar = mkClosurePVar
96 , applyClosurePVar = applyClosurePVar
97 , lengthPAVar = lengthPAVar
98 , replicatePAVar = replicatePAVar
99 , emptyPAVar = emptyPAVar
100 -- , packPAVar = packPAVar
101 -- , combinePAVar = combinePAVar
102 , intEqPAVar = intEqPAVar
103 , liftingContext = liftingContext