diff options
author | Zachary Turner <zturner@google.com> | 2016-05-27 18:20:20 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2016-05-27 18:20:20 +0000 |
commit | 3a9a23ae62be9959ea1d98ed22fea561efd9cf03 (patch) | |
tree | 3435915d18500427ef98a5802876703929f0fd16 /llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp | |
parent | 346b98011c33cec0b4ab1354ae29b294e1765faa (diff) | |
download | bcm5719-llvm-3a9a23ae62be9959ea1d98ed22fea561efd9cf03.tar.gz bcm5719-llvm-3a9a23ae62be9959ea1d98ed22fea561efd9cf03.zip |
[pdb] Allow zero-copy read support for symbol streams.
This reduces the amount of memory used by llvm-pdbdump by roughly
1/3 of the size of the PDB file.
Differential Revision: http://reviews.llvm.org/D20724
Reviewed By: ruiu
llvm-svn: 271025
Diffstat (limited to 'llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp')
-rw-r--r-- | llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp b/llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp index 35937574645..1827ab078df 100644 --- a/llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp +++ b/llvm/lib/DebugInfo/PDB/Raw/DbiStream.cpp @@ -136,14 +136,12 @@ Error DbiStream::reload() { return make_error<RawError>(raw_error_code::corrupt_file, "DBI type server substream not aligned."); - if (auto EC = - Reader.readStreamRef(ModInfoSubstream, Header->ModiSubstreamSize)) - return EC; - // Since each ModInfo in the stream is a variable length, we have to iterate // them to know how many there actually are. - codeview::VarStreamArray ModInfoArray(ModInfoSubstream, ModInfoRecordLength); - for (auto Info : ModInfoArray) { + codeview::VarStreamArray<ModInfo> ModInfoArray; + if (auto EC = Reader.readArray(ModInfoArray, Header->ModiSubstreamSize)) + return EC; + for (auto &Info : ModInfoArray) { ModuleInfos.emplace_back(Info); } |