Refactoring
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Tue, 31 Jul 2007 04:06:21 +0000 (04:06 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Tue, 31 Jul 2007 04:06:21 +0000 (04:06 +0000)
compiler/vectorise/VectType.hs
compiler/vectorise/VectUtils.hs
compiler/vectorise/Vectorise.hs

index fad2644..69a93f8 100644 (file)
@@ -320,7 +320,7 @@ buildPADict (PAInstance {
                painstInstance  = inst
              , painstVectTyCon = vect_tc
              , painstArrTyCon  = arr_tc })
-  = localV . abstractOverTyVars (tyConTyVars arr_tc) $ \abstract ->
+  = polyAbstract (tyConTyVars arr_tc) $ \abstract ->
     do
       shape <- tyConShape vect_tc
       meth_binds <- mapM (mk_method shape) paMethods
index 71ba7a3..7b0e4af 100644 (file)
@@ -4,7 +4,7 @@ module VectUtils (
   mkPADictType, mkPArrayType,
   paDictArgType, paDictOfType,
   paMethod, lengthPA, replicatePA, emptyPA,
-  abstractOverTyVars, applyToTypes,
+  polyAbstract, polyApply,
   lookupPArrayFamInst,
   hoistExpr, takeHoisted
 ) where
@@ -140,9 +140,10 @@ replicatePA len x = liftM (`mkApps` [len,x])
 emptyPA :: Type -> VM CoreExpr
 emptyPA = paMethod emptyPAVar
 
-abstractOverTyVars :: [TyVar] -> ((CoreExpr -> CoreExpr) -> VM a) -> VM a
-abstractOverTyVars tvs p
-  = do
+polyAbstract :: [TyVar] -> ((CoreExpr -> CoreExpr) -> VM a) -> VM a
+polyAbstract tvs p
+  = localV
+  $ do
       mdicts <- mapM mk_dict_var tvs
       zipWithM_ (\tv -> maybe (defLocalTyVar tv) (defLocalTyVarWithPA tv . Var)) tvs mdicts
       p (mk_lams mdicts)
@@ -155,8 +156,8 @@ abstractOverTyVars tvs p
 
     mk_lams mdicts = mkLams (tvs ++ [dict | Just dict <- mdicts])
 
-applyToTypes :: CoreExpr -> [Type] -> VM CoreExpr
-applyToTypes expr tys
+polyApply :: CoreExpr -> [Type] -> VM CoreExpr
+polyApply expr tys
   = do
       dicts <- mapM paDictOfType tys
       return $ expr `mkTyApps` tys `mkApps` dicts
index fa771d2..c73564c 100644 (file)
@@ -175,12 +175,11 @@ vectPolyVar lc v tys
                                   lexpr <- replicatePA vexpr lc
                                   return (vexpr, lexpr)
   where
-    mk_app e = applyToTypes e =<< mapM vectType tys
+    mk_app e = polyApply e =<< mapM vectType tys
 
 vectPolyExpr :: CoreExpr -> CoreExprWithFVs -> VM (CoreExpr, CoreExpr)
 vectPolyExpr lc expr
-  = localV
-  . abstractOverTyVars tvs $ \mk_lams ->
+  = polyAbstract tvs $ \mk_lams ->
     -- FIXME: shadowing (tvs in lc)
     do
       (vmono, lmono) <- vectExpr lc mono
@@ -264,8 +263,8 @@ vectExpr lc (fvs, AnnLam bndr body)
       res_ty <- vectType (exprType $ deAnnotate body)
 
       -- FIXME: move the functions to the top level
-      mono_vfn <- applyToTypes (Var vfn_var) (mkTyVarTys tyvars)
-      mono_lfn <- applyToTypes (Var lfn_var) (mkTyVarTys tyvars)
+      mono_vfn <- polyApply (Var vfn_var) (mkTyVarTys tyvars)
+      mono_lfn <- polyApply (Var lfn_var) (mkTyVarTys tyvars)
 
       mk_clo <- builtin mkClosureVar
       mk_cloP <- builtin mkClosurePVar
@@ -348,7 +347,7 @@ mkClosureFns :: CEnvInfo -> [TyVar] -> Var -> CoreExprWithFVs
              -> VM (CoreExpr, CoreExpr)
 mkClosureFns info tyvars arg body
   = closedV
-  . abstractOverTyVars tyvars
+  . polyAbstract tyvars
   $ \mk_tlams ->
   do
     (vfn, lfn) <- mkClosureMonoFns info arg body