Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : 

http://hackage.haskell.org/trac/ghc/changeset/0702b1ff8db05c83256ff99875a62c2418a42b6c

>---------------------------------------------------------------

commit 0702b1ff8db05c83256ff99875a62c2418a42b6c
Author: Max Bolingbroke <batterseapo...@hotmail.com>
Date:   Thu Nov 24 09:45:14 2011 +0000

    Trace depth, trace less

>---------------------------------------------------------------

 compiler/supercompile/Supercompile/Drive/Match.hs  |    6 +++-
 .../supercompile/Supercompile/Drive/Process3.hs    |   25 ++++++++++---------
 compiler/supercompile/Supercompile/Utilities.hs    |    2 +-
 3 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/compiler/supercompile/Supercompile/Drive/Match.hs 
b/compiler/supercompile/Supercompile/Drive/Match.hs
index e63dc8d..60710f3 100644
--- a/compiler/supercompile/Supercompile/Drive/Match.hs
+++ b/compiler/supercompile/Supercompile/Drive/Match.hs
@@ -27,11 +27,13 @@ import qualified Data.Map as M
 
 
 pprTraceSC :: String -> SDoc -> a -> a
-pprTraceSC = pprTrace
+pprTraceSC _ _ = id
+--pprTraceSC = pprTrace
 --pprTraceSC msg doc a = traceSC (msg ++ ": " ++ showSDoc doc) a
 
 traceSC :: String -> a -> a
-traceSC = trace
+traceSC _ = id
+--traceSC = trace
 
 
 --newtype Match a = Match { unMatch :: Either String a }
diff --git a/compiler/supercompile/Supercompile/Drive/Process3.hs 
b/compiler/supercompile/Supercompile/Drive/Process3.hs
index 110b4b3..a5fef20 100644
--- a/compiler/supercompile/Supercompile/Drive/Process3.hs
+++ b/compiler/supercompile/Supercompile/Drive/Process3.hs
@@ -85,10 +85,11 @@ fulfill :: Promise -> (Deeds, FVedTerm) -> FulfilmentState 
-> ((Deeds, FVedTerm)
 fulfill p (deeds, e_body) fs = ((deeds, var (fun p) `applyAbsVars` abstracted 
p), FS { fulfilments = (fun p, tyVarIdLambdas (abstracted p) e_body) : 
fulfilments fs })
 
 
+type Depth = Int
 type StopCount = Int
 
 newtype ScpM a = ScpM { unScpM :: StateT (MemoState, ProcessHistory, 
FulfilmentState)
-                                         (ReaderT (StopCount, NodeKey, 
AlreadySpeculated) Identity) a }
+                                         (ReaderT (Depth, StopCount, NodeKey, 
AlreadySpeculated) Identity) a }
                deriving (Functor, Applicative, Monad)
 
 instance MonadStatics ScpM where
@@ -103,23 +104,23 @@ runScpM me = letRec (fulfilments fs') e
         hist = pROCESS_HISTORY
         fs = FS { fulfilments = [] }
         parent = generatedKey hist
-        (e, (_ms', _hist', fs')) = unI $ unReaderT (unStateT (unScpM me) (ms, 
hist, fs)) (0, parent, nothingSpeculated)
+        (e, (_ms', _hist', fs')) = unI $ unReaderT (unStateT (unScpM me) (ms, 
hist, fs)) (0, 0, parent, nothingSpeculated)
 
 
 traceRenderM :: Outputable a => String -> a -> ScpM ()
-traceRenderM msg x = pprTraceSC msg (pPrint x) $ pure () -- TODO: include 
depth, refine to ScpM monad only
+traceRenderM msg x = ScpM $ StateT $ \s -> ReaderT $ \(depth, _, _, _) -> 
pprTraceSC (replicate depth ' ' ++ msg) (pPrint x) $ pure ((), s) -- TODO: 
include depth, refine to ScpM monad only
 
 fulfillM :: Promise -> (Deeds, FVedTerm) -> ScpM (Deeds, FVedTerm)
 fulfillM p res = ScpM $ StateT $ \(ms, hist, fs) -> case fulfill p res fs of 
(res', fs') -> return (res', (ms, hist, fs'))
 
 terminateM :: State -> ScpM a -> (State -> ScpM a) -> ScpM a
-terminateM state mcont mstop = ScpM $ StateT $ \(ms, hist, fs) -> ReaderT $ 
\(stops, parent, already) -> case terminate hist (parent, state) of
+terminateM state mcont mstop = ScpM $ StateT $ \(ms, hist, fs) -> ReaderT $ 
\(depth, stops, parent, already) -> trace ("depth: " ++ show depth) case 
terminate hist (parent, state) of
         Stop (_, shallow_state) -> trace ("stops: " ++ show stops) $
-                                   unReaderT (unStateT (unScpM (mstop 
shallow_state)) (ms, hist,  fs)) (stops + 1, parent,             already) -- 
FIXME: prevent rollback?
-        Continue hist'          -> unReaderT (unStateT (unScpM mcont)          
       (ms, hist', fs)) (stops,     generatedKey hist', already)
+                                   unReaderT (unStateT (unScpM (mstop 
shallow_state)) (ms, hist,  fs)) (depth + 1, stops + 1, parent,             
already) -- FIXME: prevent rollback?
+        Continue hist'          -> unReaderT (unStateT (unScpM mcont)          
       (ms, hist', fs)) (depth + 1, stops,     generatedKey hist', already)
 
 speculateM :: State -> (State -> ScpM a) -> ScpM a
-speculateM state mcont = ScpM $ StateT $ \s -> ReaderT $ \(stops, parent, 
already) -> case speculate already (mempty, state) of (already', (_stats, 
state')) -> unReaderT (unStateT (unScpM (mcont state')) s) (stops, parent, 
already')
+speculateM state mcont = ScpM $ StateT $ \s -> ReaderT $ \(depth, stops, 
parent, already) -> case speculate already (mempty, state) of (already', 
(_stats, state')) -> unReaderT (unStateT (unScpM (mcont state')) s) (depth, 
stops, parent, already')
 
 
 sc, sc' :: State -> ScpM (Deeds, FVedTerm)
@@ -130,8 +131,8 @@ sc' state = terminateM state (speculateM (reduce state) $ 
\state -> split state
                                                       (generalise 
(mK_GENERALISER shallow_state state) state)
                                                       sc)
   where
-    trce how shallow_state = pprTraceSC ("sc-stop(" ++ how ++ ")") (ppr 
(stateTags shallow_state) <+> text "<|" <+> ppr (stateTags state) $$
-                                                                    ppr 
shallow_state $$ pPrintFullState True shallow_state $$ ppr state $$ 
pPrintFullState True state)
+    trce how shallow_state = pprTraceSC ("sc-stop(" ++ how ++ ")") ({- ppr 
(stateTags shallow_state) <+> text "<|" <+> ppr (stateTags state) $$ -}
+                                                                    {- ppr 
shallow_state $$ -} pPrintFullState {-True-}False shallow_state $$ {- ppr state 
$$ -} pPrintFullState {-True-}False state)
 
 -- Note [Prevent rollback loops by only rolling back when generalising]
 -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -167,11 +168,11 @@ memo opt state = join $ ScpM $ StateT $ \(ms, hist, fs) ->
      -- I can't rename, so "rename" will cause an error. Not observed in 
practice yet.
     case [ (p, (releaseStateDeed state, var (fun p) `applyAbsVars` map 
(renameAbsVar rn_lr) (abstracted p)))
          | p <- promises ms
-         , Just rn_lr <- [(\res -> if isNothing res then pprTraceSC "no 
match:" (ppr (fun p)) res else pprTraceSC "match!" (ppr (fun p)) res) $
+         , Just rn_lr <- [-- (\res -> if isNothing res then pprTraceSC "no 
match:" (ppr (fun p)) res else pprTraceSC "match!" (ppr (fun p)) res) $
                           match (meaning p) state]
-         ] of (p, res):_ -> pure (do { traceRenderM "=sc" (fun p, PrettyDoc 
(pPrintFullState True state), res)
+         ] of (p, res):_ -> pure (do { traceRenderM "=sc" (fun p, PrettyDoc 
(pPrintFullState {-True-}False state), res)
                                      ; return res }, (ms, hist, fs))
-              _          -> pure (do { traceRenderM ">sc" (fun p, PrettyDoc 
(pPrintFullState True state))
+              _          -> pure (do { traceRenderM ">sc" (fun p, PrettyDoc 
(pPrintFullState {-True-}False state))
                                      ; res <- opt state
                                      ; traceRenderM "<sc" (fun p, PrettyDoc 
(pPrintFullState False state), res)
                                      ; fulfillM p res }, (ms', hist, fs))
diff --git a/compiler/supercompile/Supercompile/Utilities.hs 
b/compiler/supercompile/Supercompile/Utilities.hs
index acdb5f4..f057984 100644
--- a/compiler/supercompile/Supercompile/Utilities.hs
+++ b/compiler/supercompile/Supercompile/Utilities.hs
@@ -22,7 +22,7 @@ import UniqSupply
 import Unique (Unique, getKey)
 import UniqFM (UniqFM, eltsUFM)
 import Maybes (expectJust)
-import Outputable
+import Outputable hiding (Depth)
 import State hiding (mapAccumLM)
 
 import Control.Arrow (first, second, (***), (&&&))



_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to