Bitcode: Decouple block info block state from reader.

As proposed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2016-October/106630.html

Move block info block state to a new class, BitstreamBlockInfo.
Clients may set the block info for a particular cursor with the
BitstreamCursor::setBlockInfo() method.

At this point BitstreamReader is not much more than a container for an
ArrayRef<uint8_t>, so remove it and replace all uses with direct uses
of memory buffers.

Differential Revision: https://reviews.llvm.org/D26259

llvm-svn: 286207
This commit is contained in:
Peter Collingbourne
2016-11-08 04:17:11 +00:00
parent 939c7d916e
commit 77c89b6958
15 changed files with 156 additions and 251 deletions

View File

@@ -135,15 +135,14 @@ ModuleManager::addModule(StringRef FileName, ModuleKind Type,
}
// Initialize the stream.
PCHContainerRdr.ExtractPCH(ModuleEntry->Buffer->getMemBufferRef(),
ModuleEntry->StreamFile);
ModuleEntry->Data = PCHContainerRdr.ExtractPCH(*ModuleEntry->Buffer);
}
if (ExpectedSignature) {
// If we've not read the control block yet, read the signature eagerly now
// so that we can check it.
if (!ModuleEntry->Signature)
ModuleEntry->Signature = ReadSignature(ModuleEntry->StreamFile);
ModuleEntry->Signature = ReadSignature(ModuleEntry->Data);
if (ModuleEntry->Signature != ExpectedSignature) {
ErrorStr = ModuleEntry->Signature ? "signature mismatch"