projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Refactoring
[ghc-hetmet.git]
/
compiler
/
vectorise
/
VectMonad.hs
diff --git
a/compiler/vectorise/VectMonad.hs
b/compiler/vectorise/VectMonad.hs
index
09e2d2f
..
0329af8
100644
(file)
--- a/
compiler/vectorise/VectMonad.hs
+++ b/
compiler/vectorise/VectMonad.hs
@@
-3,9
+3,9
@@
module VectMonad (
VM,
noV, tryV, maybeV, orElseV, fixV, localV, closedV, initV,
VM,
noV, tryV, maybeV, orElseV, fixV, localV, closedV, initV,
- cloneName, newLocalVar, newTyVar,
+ cloneName, newExportedVar, newLocalVar, newDummyVar, newTyVar,
- Builtins(..), paDictTyCon,
+ Builtins(..), paDictTyCon, paDictDataCon,
builtin,
GlobalEnv(..),
builtin,
GlobalEnv(..),
@@
-47,6
+47,7
@@
import FamInstEnv
import Panic
import Outputable
import FastString
import Panic
import Outputable
import FastString
+import SrcLoc ( noSrcSpan )
import Control.Monad ( liftM )
import Control.Monad ( liftM )
@@
-65,11
+66,15
@@
data Builtins = Builtins {
, applyClosurePVar :: Var
, lengthPAVar :: Var
, replicatePAVar :: Var
, applyClosurePVar :: Var
, lengthPAVar :: Var
, replicatePAVar :: Var
+ , emptyPAVar :: Var
}
paDictTyCon :: Builtins -> TyCon
paDictTyCon = classTyCon . paClass
}
paDictTyCon :: Builtins -> TyCon
paDictTyCon = classTyCon . paClass
+paDictDataCon :: Builtins -> DataCon
+paDictDataCon = classDataCon . paClass
+
initBuiltins :: DsM Builtins
initBuiltins
= do
initBuiltins :: DsM Builtins
initBuiltins
= do
@@
-83,6
+88,7
@@
initBuiltins
applyClosurePVar <- dsLookupGlobalId applyClosurePName
lengthPAVar <- dsLookupGlobalId lengthPAName
replicatePAVar <- dsLookupGlobalId replicatePAName
applyClosurePVar <- dsLookupGlobalId applyClosurePName
lengthPAVar <- dsLookupGlobalId lengthPAName
replicatePAVar <- dsLookupGlobalId replicatePAName
+ emptyPAVar <- dsLookupGlobalId emptyPAName
return $ Builtins {
parrayTyCon = parrayTyCon
return $ Builtins {
parrayTyCon = parrayTyCon
@@
-94,6
+100,7
@@
initBuiltins
, applyClosurePVar = applyClosurePVar
, lengthPAVar = lengthPAVar
, replicatePAVar = replicatePAVar
, applyClosurePVar = applyClosurePVar
, lengthPAVar = lengthPAVar
, replicatePAVar = replicatePAVar
+ , emptyPAVar = emptyPAVar
}
data GlobalEnv = GlobalEnv {
}
data GlobalEnv = GlobalEnv {
@@
-274,12
+281,25
@@
cloneName mk_occ name = liftM make (liftDs newUnique)
(nameSrcSpan name)
| otherwise = mkSystemName u occ_name
(nameSrcSpan name)
| otherwise = mkSystemName u occ_name
+newExportedVar :: OccName -> Type -> VM Var
+newExportedVar occ_name ty
+ = do
+ mod <- liftDs getModuleDs
+ u <- liftDs newUnique
+
+ let name = mkExternalName u mod occ_name noSrcSpan
+
+ return $ Id.mkExportedLocalId name ty
+
newLocalVar :: FastString -> Type -> VM Var
newLocalVar fs ty
= do
u <- liftDs newUnique
return $ mkSysLocal fs u ty
newLocalVar :: FastString -> Type -> VM Var
newLocalVar fs ty
= do
u <- liftDs newUnique
return $ mkSysLocal fs u ty
+newDummyVar :: Type -> VM Var
+newDummyVar = newLocalVar FSLIT("ds")
+
newTyVar :: FastString -> Kind -> VM Var
newTyVar fs k
= do
newTyVar :: FastString -> Kind -> VM Var
newTyVar fs k
= do