[llvm-commits] CVS: llvm/lib/Bytecode/Reader/Reader.cpp
Misha Brukman
brukman at cs.uiuc.edu
Tue Sep 23 11:16:02 PDT 2003
Changes in directory llvm/lib/Bytecode/Reader:
Reader.cpp updated: 1.62 -> 1.63
---
Log message:
Suggestions made by Chris:
* Instead of a #define, use inline function
* Fix the name on the #define, errr... now inline function to be more logical:
it doesn't CHECK the alignment, it PERFORMS the alignment
* To get string name of a Type*, use getDescription(), not getName()
---
Diffs of the changes:
Index: llvm/lib/Bytecode/Reader/Reader.cpp
diff -u llvm/lib/Bytecode/Reader/Reader.cpp:1.62 llvm/lib/Bytecode/Reader/Reader.cpp:1.63
--- llvm/lib/Bytecode/Reader/Reader.cpp:1.62 Mon Sep 22 18:38:23 2003
+++ llvm/lib/Bytecode/Reader/Reader.cpp Tue Sep 23 11:15:29 2003
@@ -25,10 +25,11 @@
#include <algorithm>
#include <memory>
-#define CHECK_ALIGN32(begin,end) \
- if (align32(begin,end)) \
- throw std::string("Alignment error: Reader.cpp:" + \
- utostr((unsigned)__LINE__));
+static inline void ALIGN32(const unsigned char *&begin,
+ const unsigned char *end) {
+ if (align32(begin, end))
+ throw std::string("Alignment error in buffer: read past end of block.");
+}
void
BytecodeParser::getTypeSlot(const Type *Ty, unsigned &Slot) {
@@ -202,7 +203,8 @@
Value *NewDef = getValue(D->getType(), IDNumber, false);
if (NewDef == 0) {
throw std::string("Unresolvable reference found: <" +
- D->getType()->getName() + ">:" +utostr(IDNumber)+".");
+ D->getType()->getDescription() + ">:" +
+ utostr(IDNumber) + ".");
} else {
// Fixup all of the uses of this placeholder def...
D->replaceAllUsesWith(NewDef);
@@ -389,7 +391,7 @@
BCR_TRACE(2, "} end block\n");
// Malformed bc file if read past end of block.
- CHECK_ALIGN32(Buf, EndBuf);
+ ALIGN32(Buf, EndBuf);
}
// Check for unresolvable references
@@ -486,7 +488,7 @@
BCR_TRACE(2, "Function of type: " << Ty << "\n");
}
- CHECK_ALIGN32(Buf, End);
+ ALIGN32(Buf, End);
// Now that the function signature list is set up, reverse it so that we can
// remove elements efficiently from the back of the vector.
@@ -570,7 +572,7 @@
// Read into instance variables...
ParseVersionInfo(Buf, EndBuf);
- CHECK_ALIGN32(Buf, EndBuf);
+ ALIGN32(Buf, EndBuf);
while (Buf < EndBuf) {
const unsigned char *OldBuf = Buf;
@@ -608,7 +610,7 @@
break;
}
BCR_TRACE(1, "} end block\n");
- CHECK_ALIGN32(Buf, EndBuf);
+ ALIGN32(Buf, EndBuf);
}
// After the module constant pool has been read, we can safely initialize
@@ -636,9 +638,11 @@
void
BytecodeParser::ParseBytecode(const unsigned char *Buf, unsigned Length,
const std::string &ModuleID) {
- unsigned Sig;
+
unsigned char *EndBuf = (unsigned char*)(Buf + Length);
+
// Read and check signature...
+ unsigned Sig;
if (read(Buf, EndBuf, Sig) ||
Sig != ('l' | ('l' << 8) | ('v' << 16) | ('m' << 24)))
throw std::string("Invalid bytecode signature!");
More information about the llvm-commits
mailing list