Is there any reason why we still want to keep around the legacy case? It seems that the IteratorValues and ArrayBufferValues are handled in very similar ways downstream (e.g. in BlockManager.doPut, and memoryStore.putValues), and it would be nice if we could somehow merge these two code paths into a simpler one.

The other thing is that computeValues in L71 is already an iterator anyway, so we can just feed this directly into BlockManager. The existing way of making it an ArrayBuffer arbitrarily and back into an Iterator seems a little unnecessary.

(That said, there might be a performance reason that I haven't thought of.)