[Use an IdMap in E.Demand. This gives an 18% speed-up and smaller ho files.
Lemmih <lemmih@gmail.com>**20080222021445] hunk ./E/Demand.hs 20
-import qualified Data.Map as Map
hunk ./E/Demand.hs 32
-import Support.MapBinaryInstance
hunk ./E/Demand.hs 66
-data DemandEnv = DemandEnv (Map.Map TVr Demand) Demand
+data DemandEnv = DemandEnv (IdMap Demand) Demand
hunk ./E/Demand.hs 71
-        putMap dt
+        put dt
hunk ./E/Demand.hs 74
-        m <- getMap
+        m <- get
hunk ./E/Demand.hs 84
-    showsPrec _ (DemandEnv m Absent) = showString "{" . foldr (.) id (intersperse (showString ",") [ showString (pprint t) . showString " -> " . shows v | (t,v) <- Map.toList m]) . showString "}"
+    showsPrec _ (DemandEnv m Absent) = showString "{" . foldr (.) id (intersperse (showString ",") [ showString (pprint t) . showString " -> " . shows v | (t,v) <- idMapToList m]) . showString "}"
hunk ./E/Demand.hs 86
-    showsPrec _ (DemandEnv m demand) = showString "{" . shows demand . showString " - " . foldr (.) id (intersperse (showString ",") [ showString (pprint t) . showString " -> " . shows v | (t,v) <- Map.toList m]) . showString "}"
+    showsPrec _ (DemandEnv m demand) = showString "{" . shows demand . showString " - " . foldr (.) id (intersperse (showString ",") [ showString (pprint t) . showString " -> " . shows v | (t,v) <- idMapToList m]) . showString "}"
hunk ./E/Demand.hs 205
-lenv e (DemandEnv m r) = case Map.lookup e m of
+lenv e (DemandEnv m r) = case mlookup e m of
hunk ./E/Demand.hs 211
-demandEnvSingleton t d = DemandEnv (Map.singleton t d) idGlb
+demandEnvSingleton t d = DemandEnv (msingleton (tvrIdent t) d) idGlb
hunk ./E/Demand.hs 214
-demandEnvMinus (DemandEnv m r) x = DemandEnv (Map.delete x m) r
+demandEnvMinus (DemandEnv m r) x = DemandEnv (mdelete (tvrIdent x) m) r
hunk ./E/Demand.hs 218
-        m = Map.fromList [ (x,lenv x d1 `lub` lenv x d2) | x <- Map.keys m1 ++ Map.keys m2]
+        m = fromList [ (x,lenv x d1 `lub` lenv x d2) | x <- mkeys m1 ++ mkeys m2]
hunk ./E/Demand.hs 220
-        m = Map.fromList [ (x,lenv x d1 `glb` lenv x d2) | x <- Map.keys m1 ++ Map.keys m2]
+        m = fromList [ (x,lenv x d1 `glb` lenv x d2) | x <- mkeys m1 ++ mkeys m2]
hunk ./E/Demand.hs 315
-    let sx = lenv x phi
+    let sx = lenv (tvrIdent x) phi
hunk ./E/Demand.hs 320
-    let sx = lenv x phi
+    let sx = lenv (tvrIdent x) phi
hunk ./E/Demand.hs 332
-            (e',enve :=> []) <- analyze (eCaseScrutinee ec) (sp [ lenv t enva | t <- ts])
+            (e',enve :=> []) <- analyze (eCaseScrutinee ec) (sp [ lenv (tvrIdent t) enva | t <- ts])
hunk ./E/Demand.hs 340
-        let g (t,e) = (tvrInfo_u (Info.insert (lenv t phi)) t,e)
+        let g (t,e) = (tvrInfo_u (Info.insert (lenv (tvrIdent t) phi)) t,e)
hunk ./E/Demand.hs 354
-lazify (DemandEnv x r) = DemandEnv (Map.map f x) Absent where
+lazify (DemandEnv x r) = DemandEnv (fmap f x) Absent where
hunk ./E/Demand.hs 371
-denvDelete x (DemandEnv m r) = DemandEnv (Map.delete x m) r
+denvDelete x (DemandEnv m r) = DemandEnv (mdelete (tvrIdent x) m) r