Made Deserializer a friend class of BitstreamReader.
authorTed Kremenek <kremenek@apple.com>
Sat, 10 Nov 2007 02:00:38 +0000 (02:00 +0000)
committerTed Kremenek <kremenek@apple.com>
Sat, 10 Nov 2007 02:00:38 +0000 (02:00 +0000)
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

include/llvm/Bitcode/BitstreamReader.h

index 25e11ced932ec74e55656f54e40532fa7f8de38d..18b1979cb5e9a46e642086b32d41d52f6c3f34d6 100644 (file)
 
 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
   //===--------------------------------------------------------------------===//