25 #ifndef _JIT_COMPILER2_MACHINEINSTRUCTIONS
26 #define _JIT_COMPILER2_MACHINEINSTRUCTIONS
49 num_operands), phi(phi) {
50 for(
unsigned i = 0;
i < num_operands; ++
i) {
69 class MachineConstInst :
public MachineInstruction {
74 MachineConstInst(
s8 value) : MachineInstruction(
"MConst",
75 new Immediate(value), 0) {}
77 virtual void emit(CodeMemory* CM)
const {};
83 class MachineLoadInst :
public MachineInstruction {
88 : MachineInstruction(
"MLoad", dst, 1) {
97 class MachineStoreInst :
public MachineInstruction {
102 : MachineInstruction(
"MStore", dst, 1) {
103 operands[0].op = src;
108 class MachineOperandInst :
public MachineInstruction {
112 MachineOperandInst(MachineOperand *MO)
113 : MachineInstruction(
"MachineOperandInst", MO, 0), MO(MO) {
129 class MachineMoveInst :
public MachineInstruction {
131 MachineMoveInst(
const char*
name,
134 : MachineInstruction(name, dst, 1) {
135 operands[0].op = src;
137 virtual bool accepts_immediate(
unsigned i, Immediate *imm)
const {
140 virtual MachineMoveInst* to_MachineMoveInst() {
143 virtual void emit(CodeMemory* CM)
const = 0;
virtual bool is_label() const
PHIInst * get_PHIInst() const
virtual void emit(CodeMemory *CM) const
emit machine code
MachinePhiInst(unsigned num_operands, Type::TypeID type, PHIInst *phi)
JNIEnv jclass jobject const char * name
MachineJumpInst(const char *name)
virtual bool is_phi() const
virtual void emit(CodeMemory *CM) const =0
emit machine code
Proxy to encode explicit and implicit successors.
virtual MachinePhiInst * to_MachinePhiInst()
virtual void link(CodeFragment &CF) const =0
link machine code
virtual void emit(CodeMemory *CM) const
emit machine code