rje 2003/01/28 09:55:49 PST
Modified files: (Branch: speceval_2)
ghc/compiler/absCSyn AbsCSyn.lhs PprAbsC.lhs
ghc/compiler/codeGen CgExpr.lhs CgTailCall.lhs
ghc/includes Regs.h StgMacros.h
ghc/rts Schedule.c
Log:
Changed the behaviour of spec-let so that we push the return frame
BEFORE doing any speculative computation.
If we don't do this then, if the speculative expression is something fairly
complex such as a "case" then then some work might be done without a
speculative return frame having been pushed.
It is important that there always be a spec return frame on the stack when
the current execution is speculative as these frames are what the
dynamic profiler and abortion mechanism use to work out what speculative
executions are taking place.
(note that neither the profiler nor the abortion mechanism have yet
been ported across from my original 5.02-derived tree)
This commit also includes a few changes from the earlier branch that I
had missed in my previous rebasing.
Revision Changes Path
1.51.2.2 +2 -0 fptools/ghc/compiler/absCSyn/AbsCSyn.lhs
1.95.2.2 +4 -1 fptools/ghc/compiler/absCSyn/PprAbsC.lhs
1.52.2.2 +20 -7 fptools/ghc/compiler/codeGen/CgExpr.lhs
1.36.2.1 +55 -17 fptools/ghc/compiler/codeGen/CgTailCall.lhs
1.12.2.1 +10 -1 fptools/ghc/includes/Regs.h
1.50.2.1 +20 -1 fptools/ghc/includes/StgMacros.h
1.160.2.1 +2 -1 fptools/ghc/rts/Schedule.c
|