From 86193bcfc847f1a1f844508224489456f08d6b83 Mon Sep 17 00:00:00 2001 From: Roman Leshchinskiy Date: Tue, 31 Jul 2007 04:06:21 +0000 Subject: [PATCH] Refactoring --- compiler/vectorise/VectType.hs | 2 +- compiler/vectorise/VectUtils.hs | 13 +++++++------ compiler/vectorise/Vectorise.hs | 11 +++++------ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/compiler/vectorise/VectType.hs b/compiler/vectorise/VectType.hs index fad2644..69a93f8 100644 --- a/compiler/vectorise/VectType.hs +++ b/compiler/vectorise/VectType.hs @@ -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 diff --git a/compiler/vectorise/VectUtils.hs b/compiler/vectorise/VectUtils.hs index 71ba7a3..7b0e4af 100644 --- a/compiler/vectorise/VectUtils.hs +++ b/compiler/vectorise/VectUtils.hs @@ -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 diff --git a/compiler/vectorise/Vectorise.hs b/compiler/vectorise/Vectorise.hs index fa771d2..c73564c 100644 --- a/compiler/vectorise/Vectorise.hs +++ b/compiler/vectorise/Vectorise.hs @@ -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 -- 1.7.10.4