aboutsummaryrefslogtreecommitdiff
path: root/lib/Bytecode/Reader/InstructionReader.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-01-15 06:13:09 +0000
committerChris Lattner <sabre@nondot.org>2004-01-15 06:13:09 +0000
commit7969dc2beca333e556b533053a94777169ffaa98 (patch)
tree7bc16347bb7f22e61c460de4f8c9f3499d053978 /lib/Bytecode/Reader/InstructionReader.cpp
parentc8434e3d71105e2e908c7b07fc190a74c6b2ddf0 (diff)
Change all of the bytecode reader primitives to throw exceptions instead of
returning error codes. Because they don't return an error code, they can return the value read, which simplifies the code and makes the reader more efficient (yaay!). Also eliminate the special case code for little endian machines. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10871 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Bytecode/Reader/InstructionReader.cpp')
-rw-r--r--lib/Bytecode/Reader/InstructionReader.cpp20
1 files changed, 6 insertions, 14 deletions
diff --git a/lib/Bytecode/Reader/InstructionReader.cpp b/lib/Bytecode/Reader/InstructionReader.cpp
index 4beb2b0c11..21a1490397 100644
--- a/lib/Bytecode/Reader/InstructionReader.cpp
+++ b/lib/Bytecode/Reader/InstructionReader.cpp
@@ -36,9 +36,7 @@ namespace {
RawInst::RawInst(const unsigned char *&Buf, const unsigned char *EndBuf,
std::vector<unsigned> &Args) {
- unsigned Op, Typ;
- if (read(Buf, EndBuf, Op))
- throw std::string("Error reading from buffer.");
+ unsigned Op = read(Buf, EndBuf);
// bits Instruction format: Common to all formats
// --------------------------
@@ -85,25 +83,19 @@ RawInst::RawInst(const unsigned char *&Buf, const unsigned char *EndBuf,
break;
case 0:
Buf -= 4; // Hrm, try this again...
- if (read_vbr(Buf, EndBuf, Opcode))
- throw std::string("Error reading from buffer.");
+ Opcode = read_vbr_uint(Buf, EndBuf);
Opcode >>= 2;
- if (read_vbr(Buf, EndBuf, Type))
- throw std::string("Error reading from buffer.");
+ Type = read_vbr_uint(Buf, EndBuf);
- unsigned NumOperands;
- if (read_vbr(Buf, EndBuf, NumOperands))
- throw std::string("Error reading from buffer.");
+ unsigned NumOperands = read_vbr_uint(Buf, EndBuf);
Args.resize(NumOperands);
if (NumOperands == 0)
throw std::string("Zero-argument instruction found; this is invalid.");
for (unsigned i = 0; i != NumOperands; ++i)
- if (read_vbr(Buf, EndBuf, Args[i]))
- throw std::string("Error reading from buffer");
- if (align32(Buf, EndBuf))
- throw std::string("Unaligned bytecode buffer.");
+ Args[i] = read_vbr_uint(Buf, EndBuf);
+ align32(Buf, EndBuf);
break;
}
}