mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-14 14:24:05 +00:00
*** empty log message ***
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3105 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -16,8 +16,14 @@
|
||||
#include "llvm/DerivedTypes.h"
|
||||
#include "llvm/iOther.h"
|
||||
#include "llvm/iTerminators.h"
|
||||
#include "Support/StatisticReporter.h"
|
||||
#include <algorithm>
|
||||
|
||||
static Statistic<>
|
||||
NumOversized("bytecodewriter\t- Number of oversized instructions");
|
||||
static Statistic<>
|
||||
NumNormal("bytecodewriter\t- Number of normal instructions");
|
||||
|
||||
typedef unsigned char uchar;
|
||||
|
||||
// outputInstructionFormat0 - Output those wierd instructions that have a large
|
||||
@ -48,6 +54,7 @@ static void outputInstructionFormat0(const Instruction *I,
|
||||
}
|
||||
|
||||
align32(Out); // We must maintain correct alignment!
|
||||
++NumOversized;
|
||||
}
|
||||
|
||||
|
||||
@ -97,6 +104,7 @@ static void outputInstrVarArgsCall(const Instruction *I,
|
||||
output_vbr((unsigned)Slot, Out);
|
||||
}
|
||||
align32(Out); // We must maintain correct alignment!
|
||||
++NumOversized;
|
||||
}
|
||||
|
||||
|
||||
@ -118,6 +126,7 @@ static void outputInstructionFormat1(const Instruction *I,
|
||||
unsigned Bits = 1 | (Opcode << 2) | (Type << 8) | (Slots[0] << 20);
|
||||
// cerr << "1 " << IType << " " << Type << " " << Slots[0] << endl;
|
||||
output(Bits, Out);
|
||||
++NumNormal;
|
||||
}
|
||||
|
||||
|
||||
@ -142,6 +151,7 @@ static void outputInstructionFormat2(const Instruction *I,
|
||||
// cerr << "2 " << IType << " " << Type << " " << Slots[0] << " "
|
||||
// << Slots[1] << endl;
|
||||
output(Bits, Out);
|
||||
++NumNormal;
|
||||
}
|
||||
|
||||
|
||||
@ -167,6 +177,7 @@ static void outputInstructionFormat3(const Instruction *I,
|
||||
//cerr << "3 " << IType << " " << Type << " " << Slots[0] << " "
|
||||
// << Slots[1] << " " << Slots[2] << endl;
|
||||
output(Bits, Out);
|
||||
++NumNormal;
|
||||
}
|
||||
|
||||
void BytecodeWriter::processInstruction(const Instruction &I) {
|
||||
|
@ -25,11 +25,14 @@
|
||||
#include "llvm/SymbolTable.h"
|
||||
#include "llvm/DerivedTypes.h"
|
||||
#include "Support/STLExtras.h"
|
||||
#include "Support/StatisticReporter.h"
|
||||
#include <string.h>
|
||||
#include <algorithm>
|
||||
|
||||
static RegisterPass<WriteBytecodePass> X("emitbytecode", "Bytecode Writer");
|
||||
|
||||
static Statistic<>
|
||||
BytesWritten("bytecodewriter\t- Number of bytecode bytes written");
|
||||
|
||||
|
||||
BytecodeWriter::BytecodeWriter(std::deque<unsigned char> &o, const Module *M)
|
||||
@ -234,6 +237,9 @@ void WriteBytecodeToFile(const Module *C, std::ostream &Out) {
|
||||
// This object populates buffer for us...
|
||||
BytecodeWriter BCW(Buffer, C);
|
||||
|
||||
// Keep track of how much we've written...
|
||||
BytesWritten += Buffer.size();
|
||||
|
||||
// Okay, write the deque out to the ostream now... the deque is not
|
||||
// sequential in memory, however, so write out as much as possible in big
|
||||
// chunks, until we're done.
|
||||
|
Reference in New Issue
Block a user