aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/Bitcode/BitstreamReader.h
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-11-10 02:00:38 +0000
committerTed Kremenek <kremenek@apple.com>2007-11-10 02:00:38 +0000
commit13faf5c13c951741e9bdfeabd5f9047f1f28d95b (patch)
tree1373c2bb650a3a736a93aa75ef5aa4ae2d2258dd /include/llvm/Bitcode/BitstreamReader.h
parent2ba49a942e11498306be6ea08a79261b7d78855d (diff)
Made Deserializer a friend class of BitstreamReader.
Moved some of the logic in BitstreamReader::ExitBlock into a utility function BitstreamReader::PopBlockScope. The latter is a private method. It will also be called by Deserializer to manipulate the current "block scope." git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43972 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Bitcode/BitstreamReader.h')
-rw-r--r--include/llvm/Bitcode/BitstreamReader.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/include/llvm/Bitcode/BitstreamReader.h b/include/llvm/Bitcode/BitstreamReader.h
index 25e11ced93..18b1979cb5 100644
--- a/include/llvm/Bitcode/BitstreamReader.h
+++ b/include/llvm/Bitcode/BitstreamReader.h
@@ -20,9 +20,12 @@
namespace llvm {
+ class Deserializer;
+
class BitstreamReader {
const unsigned char *NextChar;
const unsigned char *LastChar;
+ friend class Deserializer;
/// CurWord - This is the current data we have pulled from the stream but have
/// not returned to the client.
@@ -269,8 +272,8 @@ public:
return false;
}
- /// EnterSubBlock - Having read the ENTER_SUBBLOCK abbrevid, read and enter
- /// the block, returning the BlockID of the block we just entered.
+ /// EnterSubBlock - Having read the ENTER_SUBBLOCK abbrevid, enter
+ /// the block, and return true if the block is valid.
bool EnterSubBlock(unsigned BlockID, unsigned *NumWordsP = 0) {
// Save the current block's state on BlockScope.
BlockScope.push_back(Block(CurCodeSize));
@@ -303,6 +306,13 @@ public:
// Block tail:
// [END_BLOCK, <align4bytes>]
SkipToWord();
+
+ PopBlockScope();
+ return false;
+ }
+
+private:
+ void PopBlockScope() {
CurCodeSize = BlockScope.back().PrevCodeSize;
// Delete abbrevs from popped scope.
@@ -311,9 +321,8 @@ public:
BlockScope.back().PrevAbbrevs.swap(CurAbbrevs);
BlockScope.pop_back();
- return false;
- }
-
+ }
+
//===--------------------------------------------------------------------===//
// Record Processing
//===--------------------------------------------------------------------===//