From: Vedant Kumar Date: Tue, 21 Jun 2016 22:22:33 +0000 (+0000) Subject: [Coverage] Clarify ownership of a MemoryBuffer in the reader (NFC) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1037ef2574adde2103ad221d63834c3e1df4a776;p=llvm [Coverage] Clarify ownership of a MemoryBuffer in the reader (NFC) Pass a `MemoryBuffer &` to BinaryCoverageReader::create() instead of a `std::unique_ptr &`. This makes it easier to reason about the ownership of the buffer at a glance. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273326 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ProfileData/Coverage/CoverageMappingReader.h b/include/llvm/ProfileData/Coverage/CoverageMappingReader.h index db907f128d9..daa16d35c37 100644 --- a/include/llvm/ProfileData/Coverage/CoverageMappingReader.h +++ b/include/llvm/ProfileData/Coverage/CoverageMappingReader.h @@ -181,8 +181,7 @@ private: public: static Expected> - create(std::unique_ptr &ObjectBuffer, - StringRef Arch); + create(MemoryBuffer &ObjectBuffer, StringRef Arch); Error readNextRecord(CoverageMappingRecord &Record) override; }; diff --git a/lib/ProfileData/Coverage/CoverageMapping.cpp b/lib/ProfileData/Coverage/CoverageMapping.cpp index 2d833204c91..ac3fe4635fb 100644 --- a/lib/ProfileData/Coverage/CoverageMapping.cpp +++ b/lib/ProfileData/Coverage/CoverageMapping.cpp @@ -236,11 +236,13 @@ CoverageMapping::load(CoverageMappingReader &CoverageReader, Expected> CoverageMapping::load(StringRef ObjectFilename, StringRef ProfileFilename, StringRef Arch) { - auto CounterMappingBuff = MemoryBuffer::getFileOrSTDIN(ObjectFilename); - if (std::error_code EC = CounterMappingBuff.getError()) + auto CounterMappingBufOrErr = MemoryBuffer::getFileOrSTDIN(ObjectFilename); + if (std::error_code EC = CounterMappingBufOrErr.getError()) return errorCodeToError(EC); + std::unique_ptr ObjectBuffer = + std::move(CounterMappingBufOrErr.get()); auto CoverageReaderOrErr = - BinaryCoverageReader::create(CounterMappingBuff.get(), Arch); + BinaryCoverageReader::create(*ObjectBuffer.get(), Arch); if (Error E = CoverageReaderOrErr.takeError()) return std::move(E); auto CoverageReader = std::move(CoverageReaderOrErr.get()); diff --git a/lib/ProfileData/Coverage/CoverageMappingReader.cpp b/lib/ProfileData/Coverage/CoverageMappingReader.cpp index 1a4b4f59084..1230054267f 100644 --- a/lib/ProfileData/Coverage/CoverageMappingReader.cpp +++ b/lib/ProfileData/Coverage/CoverageMappingReader.cpp @@ -641,8 +641,7 @@ static Error loadBinaryFormat(MemoryBufferRef ObjectBuffer, } Expected> -BinaryCoverageReader::create(std::unique_ptr &ObjectBuffer, - StringRef Arch) { +BinaryCoverageReader::create(MemoryBuffer &ObjectBuffer, StringRef Arch) { std::unique_ptr Reader(new BinaryCoverageReader()); StringRef Coverage; @@ -650,12 +649,12 @@ BinaryCoverageReader::create(std::unique_ptr &ObjectBuffer, support::endianness Endian; Error E; consumeError(std::move(E)); - if (ObjectBuffer->getBuffer().startswith(TestingFormatMagic)) + if (ObjectBuffer.getBuffer().startswith(TestingFormatMagic)) // This is a special format used for testing. - E = loadTestingFormat(ObjectBuffer->getBuffer(), Reader->ProfileNames, + E = loadTestingFormat(ObjectBuffer.getBuffer(), Reader->ProfileNames, Coverage, BytesInAddress, Endian); else - E = loadBinaryFormat(ObjectBuffer->getMemBufferRef(), Reader->ProfileNames, + E = loadBinaryFormat(ObjectBuffer.getMemBufferRef(), Reader->ProfileNames, Coverage, BytesInAddress, Endian, Arch); if (E) return std::move(E);