Added support in serializer and deserializer to create arbitrary blocks.

Added detection of end-of-stream in deserializer.

llvm-svn: 43736
This commit is contained in:
Ted Kremenek
2007-11-05 21:36:35 +00:00
parent 4646aa3e33
commit 4556582e2b
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() {