diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-11-10 02:00:38 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-11-10 02:00:38 +0000 |
commit | 13faf5c13c951741e9bdfeabd5f9047f1f28d95b (patch) | |
tree | 1373c2bb650a3a736a93aa75ef5aa4ae2d2258dd /include/llvm/Bitcode/BitstreamReader.h | |
parent | 2ba49a942e11498306be6ea08a79261b7d78855d (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.h | 19 |
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 //===--------------------------------------------------------------------===// |