mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-01 02:33:44 +00:00
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:
parent
342be126ef
commit
6fcf50338e
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user