diff --git a/lib/Bitcode/Reader/Deserialize.cpp b/lib/Bitcode/Reader/Deserialize.cpp
index 31d180f..ef4e4f7 100644
--- a/lib/Bitcode/Reader/Deserialize.cpp
+++ b/lib/Bitcode/Reader/Deserialize.cpp
@@ -47,10 +47,15 @@
   // FIXME: Check if we haven't run off the edge of the stream.
   // FIXME: Handle abbreviations.
 
+  assert (Record.size() == 0);
+  
   unsigned Code;
 
   while (true) {
     
+    if (Stream.AtEndOfStream())
+      return;
+    
     Code = Stream.ReadCode();
   
     if (Code == bitc::ENTER_SUBBLOCK) {
@@ -71,7 +76,16 @@
   
   assert (Record.size() == 0);  
   Stream.ReadRecord(Code,Record);  
-  assert (Record.size() > 0);
+  assert (Record.size() > 0 || Stream.AtEndOfStream());
+}
+
+bool Deserializer::AtEnd() {
+  if (inRecord())
+    return false;
+  
+  ReadRecord();
+  
+  return Stream.AtEndOfStream();
 }
 
 uint64_t Deserializer::ReadInt() {
diff --git a/lib/Bitcode/Writer/Serialize.cpp b/lib/Bitcode/Writer/Serialize.cpp
index 58baf10..f25a154 100644
--- a/lib/Bitcode/Writer/Serialize.cpp
+++ b/lib/Bitcode/Writer/Serialize.cpp
@@ -17,16 +17,17 @@
 using namespace llvm;
 
 Serializer::Serializer(BitstreamWriter& stream, unsigned BlockID)
-  : Stream(stream), inBlock(BlockID >= 8) {
+  : Stream(stream), BlockLevel(0) {
     
-  if (inBlock) Stream.EnterSubblock(8,3);
+  if (BlockID >= 8)
+    EnterBlock(8,3);
 }
 
 Serializer::~Serializer() {
   if (inRecord())
     EmitRecord();
 
-  if (inBlock)
+  while (BlockLevel > 0)
     Stream.ExitBlock();
   
   Stream.FlushToWord();
@@ -38,7 +39,21 @@
   Record.clear();
 }
 
+void Serializer::EnterBlock(unsigned BlockID,unsigned CodeLen) {
+  Flush();
+  Stream.EnterSubblock(BlockID,CodeLen);
+  ++BlockLevel;
+}
+
+void Serializer::ExitBlock() {
+  assert (BlockLevel > 0);
+  --BlockLevel;
+  Flush();
+  Stream.ExitBlock();
+}
+
 void Serializer::EmitInt(unsigned X) {
+  assert (BlockLevel > 0);
   Record.push_back(X);
 }
 
@@ -71,6 +86,7 @@
   else return I->second;
 }
 
+
 #define INT_EMIT(TYPE)\
 void SerializeTrait<TYPE>::Emit(Serializer&S, TYPE X) { S.EmitInt(X); }
 
