Given that the bignum C code already knows how to roll back the heap and how to change the size of an array, I would say that the correct thing to do is to have the primitive combine the check-for-space and then call the C function. I can move the allocation into the C code and I would think that that kind of thing could be useful for other C code.