X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Futils%2FFiniteMap.lhs;h=d00d6fed041f6fe7021bf3e9107b29ae11d944cd;hb=62a2c335be9c3f33cd7d459d5403ea94b148c5ea;hp=d8c59893f5885142db4a4824df567ee804e4698e;hpb=5eb1c77c795f92ed0f4c8023847e9d4be1a4fd0d;p=ghc-hetmet.git diff --git a/ghc/compiler/utils/FiniteMap.lhs b/ghc/compiler/utils/FiniteMap.lhs index d8c5989..d00d6fe 100644 --- a/ghc/compiler/utils/FiniteMap.lhs +++ b/ghc/compiler/utils/FiniteMap.lhs @@ -54,9 +54,9 @@ module FiniteMap ( minusFM, foldFM, - IF_NOT_GHC(intersectFM COMMA) - IF_NOT_GHC(intersectFM_C COMMA) - IF_NOT_GHC(mapFM COMMA filterFM COMMA) + intersectFM, + intersectFM_C, + mapFM, filterFM, sizeFM, isEmptyFM, elemFM, lookupFM, lookupWithDefaultFM, @@ -69,14 +69,17 @@ module FiniteMap ( #endif ) where +IMPORT_DELOOPER(SpecLoop) +#if defined(USE_FAST_STRINGS) +import FastString +#endif import Maybes +import Bag ( Bag, foldrBag ) +import Outputable ( Outputable(..) ) +import PprStyle ( PprStyle ) +import Pretty ( SYN_IE(Pretty), PrettyRep ) #ifdef COMPILING_GHC -IMP_Ubiq(){-uitous-} -# ifdef DEBUG -import Pretty -# endif -import Bag ( foldBag ) # if ! OMIT_NATIVE_CODEGEN # define IF_NCG(a) a @@ -144,8 +147,8 @@ minusFM :: (Ord key OUTPUTABLE_key) => FiniteMap key elt -> FiniteMap key elt - -- (minusFM a1 a2) deletes from a1 any bindings which are bound in a2 intersectFM :: (Ord key OUTPUTABLE_key) => FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt -intersectFM_C :: (Ord key OUTPUTABLE_key) => (elt -> elt -> elt) - -> FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt +intersectFM_C :: (Ord key OUTPUTABLE_key) => (elt -> elt -> elt2) + -> FiniteMap key elt -> FiniteMap key elt -> FiniteMap key elt2 -- MAPPING, FOLDING, FILTERING foldFM :: (key -> elt -> a -> a) -> a -> FiniteMap key elt -> a @@ -215,7 +218,7 @@ unitFM key elt = Branch key elt IF_GHC(1#,1) emptyFM emptyFM listToFM = addListToFM emptyFM #ifdef COMPILING_GHC -bagToFM = foldBag plusFM (\ (k,v) -> unitFM k v) emptyFM +bagToFM = foldrBag (\(k,v) fm -> addToFM fm k v) emptyFM #endif \end{code} @@ -774,12 +777,10 @@ When the FiniteMap module is used in GHC, we specialise it for , FiniteMap FAST_STRING elt -> FAST_STRING -> elt -> FiniteMap FAST_STRING elt , FiniteMap (FAST_STRING, FAST_STRING) elt -> (FAST_STRING, FAST_STRING) -> elt -> FiniteMap (FAST_STRING, FAST_STRING) elt , FiniteMap RdrName elt -> RdrName -> elt -> FiniteMap RdrName elt - , FiniteMap OrigName elt -> OrigName -> elt -> FiniteMap OrigName elt IF_NCG(COMMA FiniteMap Reg elt -> Reg -> elt -> FiniteMap Reg elt) #-} {-# SPECIALIZE addToFM_C :: (elt -> elt -> elt) -> FiniteMap (RdrName, RdrName) elt -> (RdrName, RdrName) -> elt -> FiniteMap (RdrName, RdrName) elt - , (elt -> elt -> elt) -> FiniteMap (OrigName, OrigName) elt -> (OrigName, OrigName) -> elt -> FiniteMap (OrigName, OrigName) elt , (elt -> elt -> elt) -> FiniteMap FAST_STRING elt -> FAST_STRING -> elt -> FiniteMap FAST_STRING elt IF_NCG(COMMA (elt -> elt -> elt) -> FiniteMap Reg elt -> Reg -> elt -> FiniteMap Reg elt) #-} @@ -788,7 +789,6 @@ When the FiniteMap module is used in GHC, we specialise it for #-} {-# SPECIALIZE delListFromFM :: FiniteMap RdrName elt -> [RdrName] -> FiniteMap RdrName elt - , FiniteMap OrigName elt -> [OrigName] -> FiniteMap OrigName elt , FiniteMap FAST_STRING elt -> [FAST_STRING] -> FiniteMap FAST_STRING elt IF_NCG(COMMA FiniteMap Reg elt -> [Reg] -> FiniteMap Reg elt) #-} @@ -796,7 +796,6 @@ When the FiniteMap module is used in GHC, we specialise it for :: [([Char],elt)] -> FiniteMap [Char] elt , [(FAST_STRING,elt)] -> FiniteMap FAST_STRING elt , [((FAST_STRING,FAST_STRING),elt)] -> FiniteMap (FAST_STRING, FAST_STRING) elt - , [(OrigName,elt)] -> FiniteMap OrigName elt IF_NCG(COMMA [(Reg COMMA elt)] -> FiniteMap Reg elt) #-} {-# SPECIALIZE lookupFM @@ -804,8 +803,6 @@ When the FiniteMap module is used in GHC, we specialise it for , FiniteMap [Char] elt -> [Char] -> Maybe elt , FiniteMap FAST_STRING elt -> FAST_STRING -> Maybe elt , FiniteMap (FAST_STRING,FAST_STRING) elt -> (FAST_STRING,FAST_STRING) -> Maybe elt - , FiniteMap OrigName elt -> OrigName -> Maybe elt - , FiniteMap (OrigName,OrigName) elt -> (OrigName,OrigName) -> Maybe elt , FiniteMap RdrName elt -> RdrName -> Maybe elt , FiniteMap (RdrName,RdrName) elt -> (RdrName,RdrName) -> Maybe elt IF_NCG(COMMA FiniteMap Reg elt -> Reg -> Maybe elt) @@ -816,7 +813,6 @@ When the FiniteMap module is used in GHC, we specialise it for #-} {-# SPECIALIZE plusFM :: FiniteMap RdrName elt -> FiniteMap RdrName elt -> FiniteMap RdrName elt - , FiniteMap OrigName elt -> FiniteMap OrigName elt -> FiniteMap OrigName elt , FiniteMap FAST_STRING elt -> FiniteMap FAST_STRING elt -> FiniteMap FAST_STRING elt IF_NCG(COMMA FiniteMap Reg elt -> FiniteMap Reg elt -> FiniteMap Reg elt) #-}