This reminds me: can't we be pimped by pre-emptive scheduling? Ah, there is no pre-emptive scheduling in C primitives, right? I'm thinking about the case where an IntInf primitive has partly tweaked the array but hasn't finished, so a GC would be very bad then.