[project @ 2001-05-22 13:43:14 by simonpj]
[ghc-hetmet.git] / ghc / compiler / simplStg / StgStats.lhs
index bfe00f3..824c112 100644 (file)
@@ -1,5 +1,5 @@
 %
-% (c) The GRASP/AQUA Project, Glasgow University, 1992-1994
+% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
 %
 \section[StgStats]{Gathers statistical information about programs}
 
@@ -21,15 +21,14 @@ The program gather statistics about
 \end{enumerate}
 
 \begin{code}
-#include "HsVersions.h"
-
 module StgStats ( showStgStats ) where
 
-import StgSyn
+#include "HsVersions.h"
 
-import FiniteMap
+import StgSyn
 
-import Util
+import FiniteMap       ( emptyFM, plusFM_C, unitFM, fmToList, FiniteMap )
+import Id (Id)
 \end{code}
 
 \begin{code}
@@ -63,10 +62,10 @@ combineSEs :: [StatEnv] -> StatEnv
 combineSEs = foldr combineSE emptySE
 
 countOne :: CounterType -> StatEnv
-countOne c = singletonFM c 1
+countOne c = unitFM c 1
 
 countN :: CounterType -> Int -> StatEnv
-countN = singletonFM
+countN = unitFM
 \end{code}
 
 %************************************************************************
@@ -76,7 +75,7 @@ countN = singletonFM
 %************************************************************************
 
 \begin{code}
-showStgStats :: PlainStgProgram -> String
+showStgStats :: [StgBinding] -> String
 
 showStgStats prog
   = "STG Statistics:\n\n"
@@ -101,9 +100,9 @@ showStgStats prog
     s (SingleEntryBinds _)    = "SingleEntryBinds_Nested    "
     s (UpdatableBinds _)      = "UpdatableBinds_Nested      "
 
-gatherStgStats :: PlainStgProgram -> StatEnv
+gatherStgStats :: [StgBinding] -> StatEnv
 
-gatherStgStats binds 
+gatherStgStats binds
   = combineSEs (map (statBinding True{-top-level-}) binds)
 \end{code}
 
@@ -115,22 +114,22 @@ gatherStgStats binds
 
 \begin{code}
 statBinding :: Bool -- True <=> top-level; False <=> nested
-           -> PlainStgBinding
+           -> StgBinding
            -> StatEnv
 
-statBinding top (StgNonRec b rhs)
+statBinding top (StgNonRec _srt b rhs)
   = statRhs top (b, rhs)
 
-statBinding top (StgRec pairs)
+statBinding top (StgRec _srt pairs)
   = combineSEs (map (statRhs top) pairs)
 
-statRhs :: Bool -> (Id, PlainStgRhs) -> StatEnv
+statRhs :: Bool -> (Id, StgRhs) -> StatEnv
 
 statRhs top (b, StgRhsCon cc con args)
   = countOne (ConstructorBinds top)
 
 statRhs top (b, StgRhsClosure cc bi fv u args body)
-  = statExpr body                      `combineSE` 
+  = statExpr body                      `combineSE`
     countN FreeVariables (length fv)   `combineSE`
     countOne (
       case u of
@@ -146,39 +145,31 @@ statRhs top (b, StgRhsClosure cc bi fv u args body)
 %*                                                                     *
 %************************************************************************
 
-\begin{code}    
-statExpr :: PlainStgExpr -> StatEnv
-
-statExpr (StgApp _ [] lvs) 
-  = countOne Literals
-statExpr (StgApp _ _ lvs) 
-  = countOne Applications
-
-statExpr (StgConApp con as lvs)
-  = countOne ConstructorApps
-
-statExpr (StgPrimApp op as lvs)
-  = countOne PrimitiveApps
+\begin{code}
+statExpr :: StgExpr -> StatEnv
 
-statExpr (StgSCC ty l e)
-  = statExpr e
+statExpr (StgApp _ _)    = countOne Applications
+statExpr (StgLit _)      = countOne Literals
+statExpr (StgConApp _ _)  = countOne ConstructorApps
+statExpr (StgOpApp _ _ _) = countOne PrimitiveApps
+statExpr (StgSCC l e)    = statExpr e
 
 statExpr (StgLetNoEscape lvs_whole lvs_rhss binds body)
   = statBinding False{-not top-level-} binds   `combineSE`
-    statExpr body                              `combineSE` 
+    statExpr body                              `combineSE`
     countOne LetNoEscapes
 
 statExpr (StgLet binds body)
-  = statBinding False{-not top-level-} binds   `combineSE` 
+  = statBinding False{-not top-level-} binds   `combineSE`
     statExpr body
 
-statExpr (StgCase expr lve lva uniq alts)
+statExpr (StgCase expr lve lva bndr srt alts)
   = statExpr expr      `combineSE`
     stat_alts alts
     where
       stat_alts (StgAlgAlts ty alts def)
        = combineSEs (map statExpr [ e | (_,_,_,e) <- alts ])
-                                       `combineSE` 
+                                       `combineSE`
          stat_deflt def                `combineSE`
          countOne AlgCases
 
@@ -190,6 +181,6 @@ statExpr (StgCase expr lve lva uniq alts)
 
       stat_deflt StgNoDefault = emptySE
 
-      stat_deflt (StgBindDefault b u expr) = statExpr expr     
+      stat_deflt (StgBindDefault expr) = statExpr expr
 \end{code}