Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch : supercompiler
http://hackage.haskell.org/trac/ghc/changeset/f2b4a3f7bfbbb51d927b61ec7251ba387132e385 >--------------------------------------------------------------- commit f2b4a3f7bfbbb51d927b61ec7251ba387132e385 Author: Max Bolingbroke <batterseapo...@hotmail.com> Date: Fri Nov 16 14:10:56 2012 +0000 Make the speculation flag work properly >--------------------------------------------------------------- .../supercompile/Supercompile/Drive/Process.hs | 3 ++- .../supercompile/Supercompile/Drive/Process1.hs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/supercompile/Supercompile/Drive/Process.hs b/compiler/supercompile/Supercompile/Drive/Process.hs index 5f9dcbd..c7727b0 100644 --- a/compiler/supercompile/Supercompile/Drive/Process.hs +++ b/compiler/supercompile/Supercompile/Drive/Process.hs @@ -696,7 +696,8 @@ nothingSpeculated = S.empty -- FIXME: if I speculate roughly in dependency order then GHCs inlining heuristics will have more information -- to work with in the reduce invocations speculate :: AlreadySpeculated -> (SCStats, State) -> (AlreadySpeculated, (SCStats, State)) -speculate speculated (stats, (deeds, heap, k, in_e)) = (speculated', (stats', (deeds', heap', k, in_e))) +speculate speculated (stats, state) | not sPECULATION = (speculated, (stats, state)) +speculate speculated (stats, (deeds, heap, k, in_e)) = (speculated', (stats', (deeds', heap', k, in_e))) where (speculated', (stats', deeds', heap')) = speculateHeap speculated (stats, deeds, heap) --type SpecRB = SpecHistory -> SpecM (SpecHistory, Deeds, Heap) diff --git a/compiler/supercompile/Supercompile/Drive/Process1.hs b/compiler/supercompile/Supercompile/Drive/Process1.hs index 09cb6b2..323b0ae 100644 --- a/compiler/supercompile/Supercompile/Drive/Process1.hs +++ b/compiler/supercompile/Supercompile/Drive/Process1.hs @@ -454,7 +454,7 @@ sc' hist speculated state = handlePrint $ (\raise -> check raise) `catchScpM` \g continue hist = do traceRenderScpM "reduce end (continue)" (PrettyDoc (pPrintFullState quietStatePrettiness state')) addStats stats liftM (\(_, deeds, e') -> (deeds, e')) $ split state' (liftPB . sc hist speculated') - where (speculated', (stats, state')) = (if sPECULATION then speculate speculated else ((,) speculated)) $ reduceWithStats state -- TODO: experiment with doing admissability-generalisation on reduced terms. My suspicion is that it won't help, though (such terms are already stuck or non-stuck but loopy: throwing stuff away does not necessarily remove loopiness). + where (speculated', (stats, state')) = speculate speculated $ reduceWithStats state -- TODO: experiment with doing admissability-generalisation on reduced terms. My suspicion is that it won't help, though (such terms are already stuck or non-stuck but loopy: throwing stuff away does not necessarily remove loopiness). memo :: (AlreadySpeculated -> State -> ScpBM (Deeds, Out FVedTerm)) -> AlreadySpeculated -> State -> ScpPM (Deeds, Out FVedTerm) _______________________________________________ Cvs-ghc mailing list Cvs-ghc@haskell.org http://www.haskell.org/mailman/listinfo/cvs-ghc