Added support in serializer and deserializer to create arbitrary blocks.

Added detection of end-of-stream in deserializer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43736 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Ted Kremenek
2007-11-05 21:36:35 +00:00
parent eb57ea7ea2
commit 0a6d98e10e
4 changed files with 40 additions and 5 deletions

View File

@@ -47,10 +47,15 @@ void Deserializer::ReadRecord() {
// 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 @@ void Deserializer::ReadRecord() {
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() {