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)
commit916d10f8e6e840cc0aabf739aa221c9851db1f31
tree39e455b0eb64bc2d0d58041dde355010b1554247
parent5dc6d8aa5d148a5a81356f4babd6cf2dd2d7a556
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.
libraries/base/Data/ByteString.hs
libraries/base/Data/ByteString/Char8.hs