Sat May 6 13:01:34 EST 2006 Don Stewart <dons@cse.unsw.edu.au>
authordons@cse.unsw.edu.au <unknown>
Sat, 6 May 2006 06:10:29 +0000 (06:10 +0000)
committerdons@cse.unsw.edu.au <unknown>
Sat, 6 May 2006 06:10:29 +0000 (06:10 +0000)
commit1c205444fabc129f0e8b592370b9a55589ad37e0
treed5aa869e1e5f07140c53e2e1d476aaf1b0e24141
parentce38a61ec9d0961ad4ca0b37712e4a08ff59eef3
Sat May  6 13:01:34 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
  * Do loopU realloc on the Haskell heap. And add a really tough stress test

Sat May  6 12:28:58 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
  * Use simple, 3x faster concat. Plus QC properties. Suggested by sjanssen and dcoutts

Sat May  6 15:59:31 EST 2006  Don Stewart <dons@cse.unsw.edu.au>
  * dcoutt's packByte bug squashed

  With inlinePerformIO, ghc head was compiling:

   packByte 255 `compare` packByte 127

  into roughly

   case mallocByteString 2 of
       ForeignPtr f internals ->
            case writeWord8OffAddr# f 0 255 of _ ->
            case writeWord8OffAddr# f 0 127 of _ ->
            case eqAddr# f f of
                   False -> case compare (GHC.Prim.plusAddr# f 0)
                                         (GHC.Prim.plusAddr# f 0)

  which is rather stunning. unsafePerformIO seems to prevent whatever
  magic inlining was leading to this. Only affected the head.
Data/ByteString.hs
Data/ByteString/Char8.hs