diff options
author | Zachary Turner <zturner@google.com> | 2016-05-28 05:21:57 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2016-05-28 05:21:57 +0000 |
commit | 0d43c1c339ab5532c4527e92dc852b6e0f3f1788 (patch) | |
tree | 321e2a7cb797ccc76f6d806872e8a12ee8fd475b /llvm/lib/DebugInfo/CodeView/ByteStream.cpp | |
parent | 9a9a3169e35306f396e2d690b157ad03a9521650 (diff) | |
download | bcm5719-llvm-0d43c1c339ab5532c4527e92dc852b6e0f3f1788.tar.gz bcm5719-llvm-0d43c1c339ab5532c4527e92dc852b6e0f3f1788.zip |
[pdb] Finish conversion to zero copy pdb access.
This converts remaining uses of ByteStream, which was still
left in the symbol stream and type stream, to using the new
StreamInterface zero-copy classes.
RecordIterator is finally deleted, so this is the only way left
now. Additionally, more error checking is added when iterating
the various streams.
With this, the transition to zero copy pdb access is complete.
llvm-svn: 271101
Diffstat (limited to 'llvm/lib/DebugInfo/CodeView/ByteStream.cpp')
-rw-r--r-- | llvm/lib/DebugInfo/CodeView/ByteStream.cpp | 32 |
1 files changed, 2 insertions, 30 deletions
diff --git a/llvm/lib/DebugInfo/CodeView/ByteStream.cpp b/llvm/lib/DebugInfo/CodeView/ByteStream.cpp index 1ea976b6a26..c0ac0b7a8ff 100644 --- a/llvm/lib/DebugInfo/CodeView/ByteStream.cpp +++ b/llvm/lib/DebugInfo/CodeView/ByteStream.cpp @@ -17,41 +17,13 @@ using namespace llvm::codeview; ByteStream::ByteStream() {} -ByteStream::ByteStream(MutableArrayRef<uint8_t> Data) : Data(Data) {} +ByteStream::ByteStream(ArrayRef<uint8_t> Data) : Data(Data) {} ByteStream::~ByteStream() {} -void ByteStream::reset() { - Ownership.reset(); - Data = MutableArrayRef<uint8_t>(); -} - -void ByteStream::load(uint32_t Length) { - reset(); - if (Length > 0) - Data = MutableArrayRef<uint8_t>(new uint8_t[Length], Length); - Ownership.reset(Data.data()); -} - -Error ByteStream::load(StreamReader &Reader, uint32_t Length) { - load(Length); - auto EC = Reader.readBytes(Data); - if (EC) - reset(); - return EC; -} - -Error ByteStream::readBytes(uint32_t Offset, - MutableArrayRef<uint8_t> Buffer) const { - if (Data.size() < Buffer.size() + Offset) - return make_error<CodeViewError>(cv_error_code::insufficient_buffer); - ::memcpy(Buffer.data() + Offset, Data.data(), Buffer.size()); - return Error::success(); -} - Error ByteStream::readBytes(uint32_t Offset, uint32_t Size, ArrayRef<uint8_t> &Buffer) const { - if (Data.size() < Buffer.size() + Offset) + if (Data.size() < Size + Offset) return make_error<CodeViewError>(cv_error_code::insufficient_buffer); Buffer = Data.slice(Offset, Size); return Error::success(); |