
8 Mar
2018
8 Mar
'18
9:19 a.m.
Let's say I have a gc-managed byte array of length 19. GHC promises that byte arrays are machine-word-aligned on the front end. That is, on a 64-bit machine, this array starts on a memory address that divide 8 evenly. However, the back end will certainly be unaligned. So, these two calls will be fine: - indexWordArray# myArr# 0# - indexWordArray# myArr# 1# But this one is non-deterministic: - indexWordArray# myArr# 2# Some of the bytes in the word will have garbage in them. However, this could always be masked out with a bit mask (you have to know the platform endianness for this to work right). Is this safe? I doubt think this could ever cause a segfault but I wanted to check. -- -Andrew Thaddeus Martin