diff options
author | Chris Lattner <sabre@nondot.org> | 2013-01-20 01:06:48 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2013-01-20 01:06:48 +0000 |
commit | 194ef24dfedf62642c853a851db4d7e528d27460 (patch) | |
tree | a84711cd83f049ebe3cd165744e1738a262acbb8 | |
parent | f84b7500ce489d2e4039348ed30bf584f0b61973 (diff) | |
download | external_llvm-194ef24dfedf62642c853a851db4d7e528d27460.zip external_llvm-194ef24dfedf62642c853a851db4d7e528d27460.tar.gz external_llvm-194ef24dfedf62642c853a851db4d7e528d27460.tar.bz2 |
stringref'ize readRecord and properly capitalize it. Add a compatibility method to easy
the transition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172940 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Bitcode/BitstreamReader.h | 15 | ||||
-rw-r--r-- | lib/Bitcode/Reader/BitstreamReader.cpp | 13 |
2 files changed, 20 insertions, 8 deletions
diff --git a/include/llvm/Bitcode/BitstreamReader.h b/include/llvm/Bitcode/BitstreamReader.h index d6d9e34..3e8d880 100644 --- a/include/llvm/Bitcode/BitstreamReader.h +++ b/include/llvm/Bitcode/BitstreamReader.h @@ -506,9 +506,20 @@ public: /// skipRecord - Read the current record and discard it. void skipRecord(unsigned AbbrevID); + unsigned readRecord(unsigned AbbrevID, SmallVectorImpl<uint64_t> &Vals, + StringRef *Blob = 0); + unsigned ReadRecord(unsigned AbbrevID, SmallVectorImpl<uint64_t> &Vals, - const char **BlobStart = 0, unsigned *BlobLen = 0); - + const char **BlobStart = 0, unsigned *BlobLen = 0) { + if (!BlobStart) + return readRecord(AbbrevID, Vals); + StringRef S; + unsigned X = readRecord(AbbrevID, Vals, &S); + *BlobStart = S.data(); + *BlobLen = S.size(); + return X; + } + unsigned ReadRecord(unsigned AbbrevID, SmallVectorImpl<uint64_t> &Vals, const char *&BlobStart, unsigned &BlobLen) { return ReadRecord(AbbrevID, Vals, &BlobStart, &BlobLen); diff --git a/lib/Bitcode/Reader/BitstreamReader.cpp b/lib/Bitcode/Reader/BitstreamReader.cpp index be70f52..84d5ca6 100644 --- a/lib/Bitcode/Reader/BitstreamReader.cpp +++ b/lib/Bitcode/Reader/BitstreamReader.cpp @@ -198,9 +198,9 @@ void BitstreamCursor::skipRecord(unsigned AbbrevID) { } } -unsigned BitstreamCursor::ReadRecord(unsigned AbbrevID, +unsigned BitstreamCursor::readRecord(unsigned AbbrevID, SmallVectorImpl<uint64_t> &Vals, - const char **BlobStart, unsigned *BlobLen){ + StringRef *Blob) { if (AbbrevID == bitc::UNABBREV_RECORD) { unsigned Code = ReadVBR(6); unsigned NumElts = ReadVBR(6); @@ -256,10 +256,11 @@ unsigned BitstreamCursor::ReadRecord(unsigned AbbrevID, // Otherwise, read the number of bytes. If we can return a reference to // the data, do so to avoid copying it. - if (BlobStart) { - *BlobStart = (const char*)BitStream->getBitcodeBytes().getPointer( - NextChar, NumElts); - *BlobLen = NumElts; + if (Blob) { + *Blob = + StringRef((const char*)BitStream->getBitcodeBytes().getPointer( + NextChar, NumElts), + NumElts); } else { for (; NumElts; ++NextChar, --NumElts) Vals.push_back(getByte(NextChar)); |