Why align all pinned array payloads on 16 bytes?

Simon Marlow marlowsd at gmail.com
Tue Oct 16 21:18:14 UTC 2018


I vaguely recall that this was because 16 byte alignment is the minimum you
need for certain foreign types, and it's what malloc() does.  Perhaps check
the FFI spec and the guarantees that mallocForeignPtrBytes and friends
provide?

Cheers
Simon

On Thu, 11 Oct 2018 at 18:44, Ömer Sinan Ağacan <omeragacan at gmail.com>
wrote:

> Hi,
>
> I just found out we currently align all pinned array payloads to 16 bytes
> and
> I'm wondering why. I don't see any comments/notes on this, and it's also
> not
> part of the primop documentation. We also have another primop for aligned
> allocation: newAlignedPinnedByteArray#. Given that alignment behavior of
> newPinnedByteArray# is not documented and we have another one for aligned
> allocation, perhaps we can remove alignment in newPinnedByteArray#.
>
> Does anyone remember what was the motivation for always aligning pinned
> arrays?
>
> Thanks
>
> Ömer
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20181016/e372ad73/attachment.html>


More information about the ghc-devs mailing list