[perform final cpr, demand, and workwraping after de-typing and boxification of program
John Meacham <john@repetae.net>**20061125020104] hunk ./E/CPR.hs 1
-module E.CPR(Val(..), cprAnalyzeDs) where
+module E.CPR(Val(..), cprAnalyzeDs, cprAnalyzeProgram) where
hunk ./E/CPR.hs 14
+import E.Program
hunk ./E/CPR.hs 71
+
+{-# NOINLINE cprAnalyzeProgram #-}
+cprAnalyzeProgram :: Program -> Program
+cprAnalyzeProgram prog = ans where
+    nds = cprAnalyzeDs (progDataTable prog) (programDs prog)
+    ans = programSetDs nds prog -- { progStats = progStats prog `mappend` stats }
+
hunk ./E/WorkerWrapper.hs 1
-module E.WorkerWrapper(performWorkWrap) where
+module E.WorkerWrapper(performWorkWrap,workWrapProgram) where
hunk ./E/WorkerWrapper.hs 16
+import E.Program
hunk ./E/WorkerWrapper.hs 96
-    lets = concatMap f sargs where
-        f (Absent,t) = [(t,EError "WorkWrap.Absent" (getType t))]
-        f (Plain,_) = []
-        f (Cons c ts,t) = [(t,ELit (updateLit dataTable litCons { litName = conName c, litArgs = map EVar (snds ts), litType = getType t }))] ++ concatMap f ts
+    lets = concatMap f (zip sargs (map show naturals)) where
+        f ((Absent,t),n) = [(t,EError ("WorkWrap.Absent." ++ tvrShowName tvr ++ "." ++ n) (getType t))]
+        f ((Plain,_),_) = []
+        f ((Cons c ts,t),n) = [(t,ELit (updateLit dataTable litCons { litName = conName c, litArgs = map EVar (snds ts), litType = getType t }))] ++ concatMap f (zip ts [ n ++ "." ++ show i | i <- naturals])
hunk ./E/WorkerWrapper.hs 144
+{-# NOINLINE workWrapProgram #-}
+workWrapProgram :: Program -> Program
+workWrapProgram prog = ans where
+    (nds,stats) = performWorkWrap (progDataTable prog) (programDs prog)
+    ans = programSetDs nds prog { progStats = progStats prog `mappend` stats }
+
+{-# NOINLINE performWorkWrap #-}
hunk ./Main.hs 9
-import List hiding(group,union)
+import List hiding(group,union,delete)
hunk ./Main.hs 663
-    prog <- return $ runIdentity $ annotateProgram mempty (\_ nfo -> return $ unsetProperty prop_HASRULE nfo) letann (\_ -> return) prog
+    prog <- return $ runIdentity $ annotateProgram mempty (\_ nfo -> return $ modifyProperties (flip (foldr delete) [prop_HASRULE,prop_WORKER,prop_WRAPPER]) nfo) letann (\_ -> return) prog
hunk ./Main.hs 679
-    prog <- transformProgram transformParms { transformCategory = "BoxifyProgram", transformOperation = boxifyProgram } prog
+    prog <- transformProgram transformParms { transformCategory = "BoxifyProgram", transformDumpProgress = dump FD.Progress, transformOperation = boxifyProgram } prog
hunk ./Main.hs 681
-    prog <- simplifyProgram mempty { SS.so_finalPhase = True } "SuperSimplify after boxify" True prog
+
+    prog <- Demand.analyzeProgram prog
+    prog <- return $ E.CPR.cprAnalyzeProgram prog
+    prog <- transformProgram transformParms { transformCategory = "Boxy WorkWrap", transformDumpProgress = dump FD.Progress, transformOperation = return . workWrapProgram } prog
+    prog <- simplifyProgram mempty { SS.so_finalPhase = True } "SuperSimplify after Boxy WorkWrap" True prog