cvs commit: fptools/libraries/base/GHC Base.lhs Conc.lhs Err.lhs
fptools/ghc/compiler/basicTypes MkId.lhs fptools/ghc/compiler/codeGen
CgExpr.lhs fptools/ghc/compiler/coreSyn CorePrep.lhs
fptools/ghc/compiler/prelude PrelNames.lhs PrelRules.lhs ...
Simon Peyton Jones
simonpj@glass.cse.ogi.edu
Tue, 18 Jun 2002 06:58:25 -0700
simonpj 2002/06/18 06:58:24 PDT
Modified files:
libraries/base/GHC Base.lhs Conc.lhs Err.lhs
ghc/compiler/basicTypes MkId.lhs
ghc/compiler/codeGen CgExpr.lhs
ghc/compiler/coreSyn CorePrep.lhs
ghc/compiler/prelude PrelNames.lhs PrelRules.lhs
primops.txt.pp
ghc/compiler/stranal WorkWrap.lhs
Log:
---------------------------------------
Rehash the handling of SeqOp
---------------------------------------
See the comments in the commentary (Cunning Prelude Code).
* Expunge SeqOp altogether
* Add GHC.Base.lazy :: a -> a
to GHC.Base
* Add GHC.Base.lazy
to basicTypes/MkId. The idea is that this defn will over-ride
the info from GHC.Base.hi, thereby hiding strictness and
unfolding
* Make stranal/WorkWrap do a "manual inlining" for GHC.Base.lazy
This happens nicely after the strictness analyser has run.
* Expunge the SeqOp/ParOp magic in CorePrep
* Expunge the RULE for seq in PrelRules
* Change the defns of pseq/par in GHC.Conc to:
{-# INLINE pseq #-}
pseq :: a -> b -> b
pseq x y = x `seq` lazy y
{-# INLINE par #-}
par :: a -> b -> b
par x y = case (par# x) of { _ -> lazy y }
Revision Changes Path
1.13 +8 -0 fptools/libraries/base/GHC/Base.lhs
1.8 +6 -10 fptools/libraries/base/GHC/Conc.lhs
1.7 +2 -5 fptools/libraries/base/GHC/Err.lhs
1.100 +21 -1 fptools/ghc/compiler/basicTypes/MkId.lhs
1.49 +2 -4 fptools/ghc/compiler/codeGen/CgExpr.lhs
1.24 +3 -52 fptools/ghc/compiler/coreSyn/CorePrep.lhs
1.56 +1 -0 fptools/ghc/compiler/prelude/PrelNames.lhs
1.34 +0 -61 fptools/ghc/compiler/prelude/PrelRules.lhs
1.20 +1 -9 fptools/ghc/compiler/prelude/primops.txt.pp
1.58 +13 -4 fptools/ghc/compiler/stranal/WorkWrap.lhs