RFC: Removing the DataStreamer and MemoryObject interfaces

Hi all,

BitstreamReader is the only in-tree client of the DataStreamer and MemoryObject interfaces. In practice when using user-facing LLVM tools, the bitcode will normally either be in memory or in a file, so the best way to access it is through memory, either directly or memory mapped.

As part of some refactorings I am making to BitstreamReader, I would like to simplify it by changing it to use a memory buffer directly and then removing the DataStreamer and MemoryObject interfaces.

My understanding that the only significant user of that interface as designed (for network streaming) is PNaCl, however it looks like removing this interface would not impose a significant burden on that project; they are already maintaining a couple of forks of BitstreamReader [1] so it would appear that the only change necessary on their side would be to also fork the interfaces.

If you are aware of any other significant users, please speak up!


And on a separate thread [0] Derek indicated he’d be fine with removing it. I’ll leave this thread open until end of Monday to receive any other opinions, then proceed to remove it.


[0] http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20161024/400754.html



Patch sent: https://reviews.llvm.org/D26219