| ConstructorApps
| PrimitiveApps
| LetNoEscapes
- | AlgCases
- | PrimCases
+ | StgCases
| FreeVariables
| ConstructorBinds Bool{-True<=>top-level-}
| ReEntrantBinds Bool{-ditto-}
s ConstructorApps = "ConstructorApps "
s PrimitiveApps = "PrimitiveApps "
s LetNoEscapes = "LetNoEscapes "
- s AlgCases = "AlgCases "
- s PrimCases = "PrimCases "
+ s StgCases = "StgCases "
s FreeVariables = "FreeVariables "
s (ConstructorBinds True) = "ConstructorBinds_Top "
s (ReEntrantBinds True) = "ReEntrantBinds_Top "
-> StgBinding
-> StatEnv
-statBinding top (StgNonRec _srt b rhs)
+statBinding top (StgNonRec b rhs)
= statRhs top (b, rhs)
-statBinding top (StgRec _srt pairs)
+statBinding top (StgRec pairs)
= combineSEs (map (statRhs top) pairs)
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)
+statRhs top (b, StgRhsClosure cc bi fv u _srt args body)
= statExpr body `combineSE`
countN FreeVariables (length fv) `combineSE`
countOne (
\begin{code}
statExpr :: StgExpr -> StatEnv
-statExpr (StgApp _ _) = countOne Applications
-statExpr (StgLit _) = countOne Literals
-statExpr (StgConApp _ _) = countOne ConstructorApps
-statExpr (StgPrimApp _ _ _) = countOne PrimitiveApps
-statExpr (StgSCC 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`
= statBinding False{-not top-level-} binds `combineSE`
statExpr body
-statExpr (StgCase expr lve lva bndr srt alts)
+statExpr (StgCase expr lve lva bndr srt alt_type alts)
= statExpr expr `combineSE`
+ stat_alts alts `combineSE`
+ countOne StgCases
+ where
stat_alts alts
- where
- stat_alts (StgAlgAlts ty alts def)
= combineSEs (map statExpr [ e | (_,_,_,e) <- alts ])
- `combineSE`
- stat_deflt def `combineSE`
- countOne AlgCases
-
- stat_alts (StgPrimAlts ty alts def)
- = combineSEs (map statExpr [ e | (_,e) <- alts ])
- `combineSE`
- stat_deflt def `combineSE`
- countOne PrimCases
-
- stat_deflt StgNoDefault = emptySE
-
- stat_deflt (StgBindDefault expr) = statExpr expr
\end{code}