In some program, array created by new_array_buffer is not immutable (I think Kraken/crypto-aes and SixSpeed spread-literal.es5 are). But ArrayifyToStructure's array copying is really slow compared to non CoW array creation in NewArrayBuffer. I think we should have non-CoW mode for NewArrayBuffer / new_array_buffer. ArrayAllocationProfile should carefully profile the use of resulted array, and tell us whether using CoW mode is profitable.
Why is arrayify to structure slow?
It seems like if this is a problem the fix is to make Arrayification faster. Since the total amount of work duplicating the butterfly should be the same either way, I don't see any obvious reason to eagerly copy.