Thu Mar  5 07:41:53 PST 2009  Simon Marlow <[email protected]>
  * Partial fix for #2917
  Ignore-this: 3a06cd3ea09f1d6454d52031802a93fd
  
   - add newAlignedPinnedByteArray# for allocating pinned BAs with
     arbitrary alignment
  
   - the old newPinnedByteArray# now aligns to 16 bytes
  
  Foreign.alloca will use newAlignedPinnedByteArray#, and so might end
  up wasting less space than before (we used to align to 8 by default).
  Foreign.allocaBytes and Foreign.mallocForeignPtrBytes will get 16-byte
  aligned memory, which is enough to avoid problems with SSE
  instructions on x86, for example.
  
  There was a bug in the old newPinnedByteArray#: it aligned to 8 bytes,
  but would have failed if the header was not a multiple of 8
  (fortunately it always was, even with profiling).  Also we
  occasionally wasted some space unnecessarily due to alignment in
  allocatePinned().
  
  I haven't done anything about Foreign.malloc/mallocBytes, which will
  give you the same alignment guarantees as malloc() (8 bytes on
  Linux/x86 here).

    M ./Foreign/Marshal/Alloc.hs -2 +16
    M ./GHC/ForeignPtr.hs -4 +6

View patch online:
http://darcs.haskell.org/ghc-6.10/packages/base/_darcs/patches/20090305154153-12142-5bb4e5d63218021c9092a802e82bc781fc800198.gz
_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to