[change chos to only build their ho's lazily, so we don't end up with duplicate copies of hos.
John Meacham <john@repetae.net>**20080214060556] hunk ./E/Program.hs 84
-programEsMap :: Program -> Map.Map Name (TVr,E)
-programEsMap prog = runIdentity $ do
+programEsMap :: Monad m => Program -> m (Map.Map Name (TVr,E))
+programEsMap prog = do
hunk ./Ho/Binary.hs 46
-instance Binary Ho where
-    put (Ho ac ad) = do
-	    put ac
-	    put ad
-    get = do
-    ac <- get
-    ad <- get
-    return (Ho ac ad)
hunk ./Ho/Build.hs 104
-
-type SourceHash = MD5.Hash
-type HoHash     = MD5.Hash
hunk ./Ho/Type.hs 25
+type SourceHash = MD5.Hash
+type HoHash     = MD5.Hash
hunk ./Ho/Type.hs 32
+    choHoMap :: Map.Map String Ho,
hunk ./Ho/Type.hs 37
+updateCollectedHo cho = cho { choHo = mconcat $ Map.elems (choHoMap cho) }
+
hunk ./Ho/Type.hs 40
-    mempty = collectedHo
+    mempty = CollectedHo {
+        choExternalNames = mempty,
+        choHo = pho,
+        choHoMap = Map.singleton "Prim@" pho,
+        choVarMap = mempty
+        } where pho = mempty { hoBuild = mempty { hoDataTable = dataTablePrims } }
hunk ./Ho/Type.hs 49
-        choHo = choHo a `mappend` choHo b
-        }
+        choHoMap = newHoMap,
+        choHo = mconcat $ Map.elems newHoMap
+        } where newHoMap = Map.union (choHoMap a) (choHoMap b)
hunk ./Ho/Type.hs 55
-collectedHo :: CollectedHo
-collectedHo = CollectedHo {
-    choExternalNames = mempty,
-    choHo = mempty { hoBuild = mempty { hoDataTable = dataTablePrims } },
-    choVarMap = mempty
-    }
hunk ./Ho/Type.hs 60
-    hoIDeps :: Map.Map MD5.Hash (Module,[Module])
+    hoIDeps :: Map.Map SourceHash (Module,[Module])
hunk ./Ho/Type.hs 66
-    hohHash       :: MD5.Hash,
+    hohHash       :: HoHash,
hunk ./Ho/Type.hs 68
-    hohDepends    :: [(Module,MD5.Hash)],
+    hohDepends    :: [(Module,SourceHash)],
hunk ./Ho/Type.hs 70
-    hohModDepends :: [MD5.Hash],
+    hohModDepends :: [HoHash],
hunk ./Main.hs 2
-module Main(main) where
+module Main(main,compileModEnv') where
hunk ./Main.hs 99
-main = runMain $ catom $ bracketHtml $ do
+main = do -- runMain $ catom $ bracketHtml $ do
hunk ./Main.hs 172
-        ds = runIdentity $ annotateDs (choVarMap accumho') (\_ -> return) letann lamann (hoEs ho')
+    let-- rules' = runIdentity $ mapBodies (annotate imapRules (\_ nfo -> return nfo) (\_ -> return) (\_ -> return)) (hoRules ho)
+        --imapRules = choVarMap accumho  `mappend` newVarMap
+        --accumho' = reprocessCho rules' mempty accumho
+    let ds = runIdentity $ annotateDs (choVarMap accumho) (\_ -> return) letann lamann (hoEs ho')
hunk ./Main.hs 178
+        newVarMap = fromList [ (tvrIdent t,Just (EVar t)) | (t,_) <- programDs prog ]
hunk ./Main.hs 180
-        rules' = runIdentity $ mapBodies (annotate imapRules (\_ nfo -> return nfo) (\_ -> return) (\_ -> return)) (hoRules ho)
-        accumho' = reprocessCho rules' mempty accumho
hunk ./Main.hs 181
-        imapRules = choVarMap accumho'  `mappend` newVarMap
-        newVarMap = fromList [ (tvrIdent t,Just (EVar t)) | (t,_) <- programDs prog ]
+        (mod:_) = Map.keys $ hoExports $ hoExp aho
hunk ./Main.hs 184
-    return $ accumho' `mappend` mempty { choVarMap = newVarMap, choExternalNames = idMapToIdSet newVarMap, choHo = aho { hoBuild = ho { hoEs = programDs prog } } }
+    return $ updateCollectedHo $ accumho `mappend` mempty { choVarMap = newVarMap, choExternalNames = idMapToIdSet newVarMap, choHoMap = Map.singleton (show mod) aho { hoBuild = ho { hoEs = programDs prog } } }
hunk ./Main.hs 193
-reprocessCho rules ps cho = choHo_u (hoBuild_u (hoEs_u (map f))) $ choVarMap_u (fmap h) cho where
+reprocessCho rules ps cho = updateCollectedHo $ choHoMap_u (Map.map $ hoBuild_u (hoEs_u (map f))) $ choVarMap_u (fmap h) cho where
hunk ./Main.hs 433
-    return (mempty { choHo = ho' { hoBuild = newHoBuild}, choExternalNames = idMapToIdSet newMap, choVarMap = newMap  } `mappend` cho,ho' { hoBuild = newHoBuild })
+        (mod:_) = Map.keys $ hoExports $ hoExp ho'
+    return (mempty { choHoMap = Map.singleton (show mod) ho' { hoBuild = newHoBuild}, choExternalNames = idMapToIdSet newMap, choVarMap = newMap  } `mappend` cho,ho' { hoBuild = newHoBuild })
hunk ./Main.hs 481
+    wdump FD.Core $ printProgram prog
hunk ./Main.hs 505
-    (_,main,mainv) <- getMainFunction dataTable mainFunc (programEsMap prog)
+    putErrLn "!!!!!"
+    esmap <- programEsMap prog
+    putErrLn "!!!!!"
+    (_,main,mainv) <- getMainFunction dataTable mainFunc esmap
hunk ./Main.hs 512
+    putErrLn "!!!!!"
hunk ./Makefile.am 6
+
hunk ./Makefile.am 14
-MY_CFLAGS= -I$(srcdir)/StringTable -I$(srcdir)/cbits -I$(builddir)/cbits
+MY_CFLAGS= -I$(srcdir)/StringTable -I$(srcdir)/cbits -I$(builddir)/cbits -optc-std=c99 -optc-O2 -optc-Wall
hunk ./Makefile.am 53
-GHCOPTS=  $(HSOPTS)  -O -ignore-package lang  $(GHCDEBUGOPTS) $(GHCINC) $(PACKAGES) $(GHCLANG) -optc-std=c99 -optc-O2 -optc-Wall $(MY_CFLAGS)
+GHCOPTS=  $(HSOPTS)  -O -ignore-package lang  $(GHCDEBUGOPTS) $(GHCINC) $(PACKAGES) $(GHCLANG)
hunk ./Makefile.am 59
+CC = $(HC)
+
hunk ./Makefile.am 94
-CFILES =  StringTable/StringTable_cbits.c  cbits/md5sum.c
+CFILES =  StringTable/StringTable_cbits.o  cbits/md5sum.o
+
+%.o : %.c
+	$(HC) $(MY_CFLAGS) $< -c -o $@
hunk ./Makefile.am 189
-	ghci $(GHCOPTS) Main.hs
+	ghci $(GHCOPTS) Main.hs $(CFILES)