summaryrefslogtreecommitdiff
path: root/ghc/lib/concurrent/Channel.lhs
Commit message (Collapse)AuthorAgeFilesLines
* [project @ 1999-11-26 16:29:09 by simonmar]simonmar1999-11-261-126/+0
| | | | GHC bits for new library organisation.
* [project @ 1999-07-06 16:45:31 by simonpj]simonpj1999-07-061-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All Simon's recent tuning changes. Rough summary follows: * Fix Kevin Atkinson's cant-find-instance bug. Turns out that Rename.slurpSourceRefs needs to repeatedly call getImportedInstDecls, and then go back to slurping source-refs. Comments with Rename.slurpSourceRefs. * Add a case to Simplify.mkDupableAlt for the quite-common case where there's a very simple alternative, in which case there's no point in creating a join-point binding. * Fix CoreUtils.exprOkForSpeculation so that it returns True of (==# a# b#). This lack meant that case ==# a# b# of { True -> x; False -> x } was not simplifying * Make float-out dump bindings at the top of a function argument, as at the top of a let(rec) rhs. See notes with FloatOut.floatRhs * Make the ArgOf case of mkDupableAlt generate a OneShot lambda. This gave a noticeable boost to spectral/boyer2 * Reduce the number of coerces, using worker/wrapper stuff. The main idea is in WwLib.mkWWcoerce. The gloss is that we must do the w/w split even for small non-recursive things. See notes with WorkWrap.tryWw. * This further complicated getWorkerId, so I finally bit the bullet and make the workerInfo field of the IdInfo work properly, including under substitutions. Death to getWorkerId. Kevin Glynn will be happy. * Make all lambdas over realWorldStatePrimTy into one-shot lambdas. This is a GROSS HACK. * Also make the occurrence analyser aware of one-shot lambdas. * Make various Prelude things into INLINE, so that foldr doesn't get inlined in their body, so that the caller gets the benefit of fusion. Notably in PrelArr.lhs.
* [project @ 1999-01-25 10:26:18 by sof]sof1999-01-251-0/+10
| | | | Added isEmptyChan
* [project @ 1999-01-14 18:21:49 by sof]sof1999-01-141-1/+1
| | | | | | | Haskell 98 related changes + the addition of the MVar primop, isEmptyMVar :: MVar a -> IO Bool -- use with care.
* [project @ 1998-05-26 13:00:47 by simonm]simonm1998-05-261-1/+1
| | | | - remove references to PrelUnsafe(ST)
* [project @ 1998-02-02 17:27:26 by simonm]simonm1998-02-021-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Library re-organisation: All libraries now live under ghc/lib, which has the following structure: ghc/lib/std -- all prelude files (libHS.a) ghc/lib/std/cbits ghc/lib/exts -- standard Hugs/GHC extensions (libHSexts.a) -- available with '-fglasgow-exts' ghc/lib/posix -- POSIX library (libHSposix.a) ghc/lib/posix/cbits -- available with '-syslib posix' ghc/lib/misc -- used to be hslibs/ghc (libHSmisc.a) ghc/lib/misc/cbits -- available with '-syslib misc' ghc/lib/concurrent -- Concurrent libraries (libHSconc.a) -- available with '-concurrent' Also, several non-standard prelude modules had their names changed to begin with 'Prel' to reduce namespace pollution. Addr ==> PrelAddr (Addr interface available in 'exts') ArrBase ==> PrelArr CCall ==> PrelCCall (CCall interface available in 'exts') ConcBase ==> PrelConc GHCerr ==> PrelErr Foreign ==> PrelForeign (Foreign interface available in 'exts') GHC ==> PrelGHC IOHandle ==> PrelHandle IOBase ==> PrelIOBase GHCmain ==> PrelMain STBase ==> PrelST Unsafe ==> PrelUnsafe UnsafeST ==> PrelUnsafeST
* [project @ 1998-01-22 11:11:46 by sof]sof1998-01-221-43/+32
| | | | | | * renamed putList2Chan to writeList2Chan. * renamed readChanContents to getChanContents * Use do notation throughout.
* [project @ 1997-11-11 14:32:34 by simonm]simonm1997-11-111-15/+13
| | | | | | | | | Library changes to: * remove PrimIO * change type of _ccall_ to IO * incorporate Alastair Reid's new library interfaces for compatibility with Hugs.
* [project @ 1997-10-13 16:12:54 by simonm]simonm1997-10-131-25/+8
| | | | | | | | | | | | | | | | | | Changes to unbox the state in the ST and IO monads. ST now has type newtype ST s a = ST (State# s -> STret s a) data STret s a = STret (State# s) a IO now has type newtype IO a = IO (State# RealWorld -> IOResult a) data IOResult a = IOok (State# RealWorld) a | IOfail (State# RealWorld) IOError So ST should be slightly more efficient, and IO should be nearly as efficient as ST.
* [project @ 1997-07-05 01:01:11 by sof]sof1997-07-051-0/+1
| | | | Use UnsafeST
* [project @ 1997-01-18 10:03:27 by simonpj]simonpj1997-01-181-0/+1
| | | | More polishing by Simon; to get nofib to run!
* [project @ 1996-12-19 18:35:23 by simonpj]simonpj1996-12-191-0/+144
Adding and removing files