Pass a vector around to reduce dynamic allocation

Throw the RawInst class in an anon namespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8990 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2003-10-09 20:45:42 +00:00
parent 342be126ef
commit 6fcf50338e
3 changed files with 17 additions and 13 deletions

View File

@ -14,15 +14,16 @@
#include "llvm/iPHINode.h" #include "llvm/iPHINode.h"
#include "llvm/iOther.h" #include "llvm/iOther.h"
struct RawInst { // The raw fields out of the bytecode stream... namespace {
unsigned NumOperands; struct RawInst { // The raw fields out of the bytecode stream...
unsigned Opcode; unsigned NumOperands;
unsigned Type; unsigned Opcode;
unsigned Type;
RawInst(const unsigned char *&Buf, const unsigned char *EndBuf, RawInst(const unsigned char *&Buf, const unsigned char *EndBuf,
std::vector<unsigned> &Args); std::vector<unsigned> &Args);
};
}; }
@ -102,8 +103,9 @@ RawInst::RawInst(const unsigned char *&Buf, const unsigned char *EndBuf,
Instruction *BytecodeParser::ParseInstruction(const unsigned char *&Buf, Instruction *BytecodeParser::ParseInstruction(const unsigned char *&Buf,
const unsigned char *EndBuf) { const unsigned char *EndBuf,
std::vector<unsigned> Args; std::vector<unsigned> &Args) {
Args.clear();
RawInst RI(Buf, EndBuf, Args); RawInst RI(Buf, EndBuf, Args);
const Type *InstTy = getType(RI.Type); const Type *InstTy = getType(RI.Type);

View File

@ -200,7 +200,8 @@ BasicBlock *BytecodeParser::ParseBasicBlock(const unsigned char *&Buf,
BB = ParsedBasicBlocks[BlockNo]; BB = ParsedBasicBlocks[BlockNo];
while (Buf < EndBuf) { while (Buf < EndBuf) {
Instruction *Inst = ParseInstruction(Buf, EndBuf); std::vector<unsigned> Args;
Instruction *Inst = ParseInstruction(Buf, EndBuf, Args);
insertValue(Inst, Values); insertValue(Inst, Values);
BB->getInstList().push_back(Inst); BB->getInstList().push_back(Inst);
BCR_TRACE(4, Inst); BCR_TRACE(4, Inst);

View File

@ -149,7 +149,8 @@ private:
unsigned BlockNo); unsigned BlockNo);
Instruction *ParseInstruction(const unsigned char *&Buf, Instruction *ParseInstruction(const unsigned char *&Buf,
const unsigned char *End); const unsigned char *End,
std::vector<unsigned> &Args);
void ParseConstantPool(const unsigned char *&Buf, const unsigned char *EndBuf, void ParseConstantPool(const unsigned char *&Buf, const unsigned char *EndBuf,
ValueTable &Tab, TypeValuesListTy &TypeTab); ValueTable &Tab, TypeValuesListTy &TypeTab);