CACAO
|
Proxy to encode explicit and implicit successors. More...
Public Types | |
typedef alloc::vector < MachineOperandDesc >::type | operand_list |
typedef operand_list::iterator | operand_iterator |
typedef operand_list::const_iterator | const_operand_iterator |
typedef alloc::vector < MachineOperandDesc >::type | dummy_operand_list |
typedef dummy_operand_list::iterator | dummy_operand_iterator |
typedef dummy_operand_list::const_iterator | const_dummy_operand_iterator |
typedef alloc::unordered_map < EmbeddedMachineOperand *, int >::type | RefMapTy |
typedef alloc::list < MachineBasicBlock * >::type | successor_list |
typedef successor_list::iterator | successor_iterator |
typedef successor_list::const_iterator | const_successor_iterator |
Protected Attributes | |
const std::size_t | id |
operand_list | operands |
dummy_operand_list | dummy_operands |
dummy_operands is a list of operands embedded in the real operands of this instruction that need register allocation (for example indirect addressing on x86) More... | |
RefMapTy | ref_map |
successor_list | successors |
MachineOperandDesc | result |
const char * | name |
const char * | comment |
MachineBasicBlock * | block |
Private Member Functions | |
void | set_dummy_operand (EmbeddedMachineOperand *op) |
Static Private Attributes | |
static std::size_t | id_counter = 0 |
Additional Inherited Members | |
![]() | |
static void * | operator new (std::size_t size) throw (std::bad_alloc) |
normal new More... | |
static void * | operator new (std::size_t size, void *ptr) throw () |
placement new More... | |
static void * | operator new (std::size_t size, const std::nothrow_t &nt) throw () |
nothrow new More... | |
static void | operator delete (void *pMemory) throw () |
normal delete More... | |
static void | operator delete (void *pMemory, void *ptr) throw () |
placement delete More... | |
static void | operator delete (void *pMemory, const std::nothrow_t &) throw () |
nothrow delete More... | |
static void * | operator new[] (std::size_t size) throw (std::bad_alloc) |
normal new[] More... | |
static void * | operator new[] (std::size_t size, void *ptr) throw () |
placement new[] More... | |
static void * | operator new[] (std::size_t size, const std::nothrow_t &nt) throw () |
nothrow new[] More... | |
static void | operator delete[] (void *pMemory) throw () |
normal delete[] More... | |
static void | operator delete[] (void *pMemory, void *ptr) throw () |
placement delete[] More... | |
static void | operator delete[] (void *pMemory, const std::nothrow_t &) throw () |
nothrow delete[] More... | |
Proxy to encode explicit and implicit successors.
The target of an unconditional jump is an explicit successor (i.e. the target is specified explicitly). The else branch of a conditional jump (i.e. the following block) is an implicit successor.
For implicit successors the source block is stored. Whenever the real successor is requested the block following the source block is returned. Therefore implicit successors might change if a block is inserted after the source block. Superclass for all machine dependent instructions
Definition at line 111 of file MachineInstruction.hpp.
typedef dummy_operand_list::const_iterator cacao::jit::compiler2::MachineInstruction::const_dummy_operand_iterator |
Definition at line 118 of file MachineInstruction.hpp.
typedef operand_list::const_iterator cacao::jit::compiler2::MachineInstruction::const_operand_iterator |
Definition at line 115 of file MachineInstruction.hpp.
typedef successor_list::const_iterator cacao::jit::compiler2::MachineInstruction::const_successor_iterator |
Definition at line 122 of file MachineInstruction.hpp.
typedef dummy_operand_list::iterator cacao::jit::compiler2::MachineInstruction::dummy_operand_iterator |
Definition at line 117 of file MachineInstruction.hpp.
typedef alloc::vector<MachineOperandDesc>::type cacao::jit::compiler2::MachineInstruction::dummy_operand_list |
Definition at line 116 of file MachineInstruction.hpp.
typedef operand_list::iterator cacao::jit::compiler2::MachineInstruction::operand_iterator |
Definition at line 114 of file MachineInstruction.hpp.
typedef alloc::vector<MachineOperandDesc>::type cacao::jit::compiler2::MachineInstruction::operand_list |
Definition at line 113 of file MachineInstruction.hpp.
typedef alloc::unordered_map<EmbeddedMachineOperand *,int>::type cacao::jit::compiler2::MachineInstruction::RefMapTy |
Definition at line 119 of file MachineInstruction.hpp.
typedef successor_list::iterator cacao::jit::compiler2::MachineInstruction::successor_iterator |
Definition at line 121 of file MachineInstruction.hpp.
typedef alloc::list<MachineBasicBlock*>::type cacao::jit::compiler2::MachineInstruction::successor_list |
Definition at line 120 of file MachineInstruction.hpp.
|
inline |
Definition at line 154 of file MachineInstruction.hpp.
|
inlinevirtual |
destructor
Definition at line 363 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::x86_64::MovInst, and cacao::jit::compiler2::x86_64::ALUInstruction.
Definition at line 313 of file MachineInstruction.hpp.
|
inline |
Definition at line 227 of file MachineInstruction.hpp.
|
inline |
Definition at line 211 of file MachineInstruction.hpp.
|
inline |
Definition at line 230 of file MachineInstruction.hpp.
|
inline |
Definition at line 265 of file MachineInstruction.hpp.
|
inline |
Definition at line 249 of file MachineInstruction.hpp.
|
inline |
Definition at line 268 of file MachineInstruction.hpp.
|
inline |
Definition at line 252 of file MachineInstruction.hpp.
|
inline |
Definition at line 271 of file MachineInstruction.hpp.
|
inline |
Definition at line 262 of file MachineInstruction.hpp.
|
inline |
Definition at line 236 of file MachineInstruction.hpp.
|
virtual |
emit machine code
Reimplemented in cacao::jit::compiler2::x86_64::TestInst, cacao::jit::compiler2::x86_64::MovSSInst, cacao::jit::compiler2::x86_64::MovImmSInst, cacao::jit::compiler2::x86_64::MovSDInst, cacao::jit::compiler2::x86_64::FPRemInst, cacao::jit::compiler2::x86_64::SSEAluInst, cacao::jit::compiler2::x86_64::XORPInst, cacao::jit::compiler2::x86_64::UCOMISInst, cacao::jit::compiler2::x86_64::FINCSTPInst, cacao::jit::compiler2::x86_64::FFREEInst, cacao::jit::compiler2::x86_64::FSTPInst, cacao::jit::compiler2::x86_64::FLDInst, cacao::jit::compiler2::x86_64::CVTSD2SSInst, cacao::jit::compiler2::x86_64::CVTSS2SDInst, cacao::jit::compiler2::x86_64::CVTTSD2SIInst, cacao::jit::compiler2::x86_64::CVTTSS2SIInst, cacao::jit::compiler2::x86_64::CVTSI2SSInst, cacao::jit::compiler2::x86_64::CVTSI2SDInst, cacao::jit::compiler2::x86_64::IndirectJumpInst, cacao::jit::compiler2::x86_64::CMovInst, cacao::jit::compiler2::x86_64::CondTrapInst, cacao::jit::compiler2::x86_64::TrapInst, cacao::jit::compiler2::aarch64::PatchInst, cacao::jit::compiler2::x86_64::CondJumpInst, cacao::jit::compiler2::x86_64::JumpInst, cacao::jit::compiler2::x86_64::MovDSEGInst, cacao::jit::compiler2::x86_64::MovSXInst, cacao::jit::compiler2::x86_64::LEAInst, cacao::jit::compiler2::x86_64::MovModRMInst, cacao::jit::compiler2::aarch64::RetInst, cacao::jit::compiler2::x86_64::MovInst, cacao::jit::compiler2::aarch64::LeaveInst, cacao::jit::compiler2::aarch64::EnterInst, cacao::jit::compiler2::x86_64::CallInst, cacao::jit::compiler2::x86_64::NegInst, cacao::jit::compiler2::aarch64::CondJumpInst, cacao::jit::compiler2::x86_64::RetInst, cacao::jit::compiler2::x86_64::CDQInst, cacao::jit::compiler2::x86_64::IDivInst, cacao::jit::compiler2::aarch64::JumpInst, cacao::jit::compiler2::x86_64::IMulImmInst, cacao::jit::compiler2::x86_64::IMulInst, cacao::jit::compiler2::x86_64::BreakInst, cacao::jit::compiler2::x86_64::LeaveInst, cacao::jit::compiler2::x86_64::EnterInst, cacao::jit::compiler2::x86_64::PatchInst, cacao::jit::compiler2::x86_64::ALUInstruction, cacao::jit::compiler2::aarch64::DsegAddrInst, cacao::jit::compiler2::MachineDeoptInst, cacao::jit::compiler2::MachineReplacementPointCallSiteInst, cacao::jit::compiler2::MachineReplacementEntryInst, cacao::jit::compiler2::MachineReplacementPointInst, cacao::jit::compiler2::MachineJumpInst, cacao::jit::compiler2::aarch64::AArch64Instruction, cacao::jit::compiler2::MachinePhiInst, and cacao::jit::compiler2::MachineLabelInst.
Definition at line 86 of file MachineInstruction.cpp.
|
inline |
Definition at line 214 of file MachineInstruction.hpp.
|
inline |
Definition at line 233 of file MachineInstruction.hpp.
|
inline |
has to be called after all operands with embedded operands have been added
Definition at line 180 of file MachineInstruction.hpp.
|
inline |
Definition at line 217 of file MachineInstruction.hpp.
|
inline |
Definition at line 255 of file MachineInstruction.hpp.
|
inline |
Definition at line 224 of file MachineInstruction.hpp.
|
inline |
Definition at line 201 of file MachineInstruction.hpp.
|
inline |
Definition at line 206 of file MachineInstruction.hpp.
|
inline |
Definition at line 189 of file MachineInstruction.hpp.
|
inline |
Definition at line 167 of file MachineInstruction.hpp.
|
inline |
Definition at line 239 of file MachineInstruction.hpp.
|
inline |
Definition at line 244 of file MachineInstruction.hpp.
|
inline |
Definition at line 298 of file MachineInstruction.hpp.
|
inline |
Definition at line 301 of file MachineInstruction.hpp.
|
inline |
Definition at line 304 of file MachineInstruction.hpp.
|
inline |
Definition at line 307 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::aarch64::CallInst.
Definition at line 331 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::aarch64::CondTrapInst, cacao::jit::compiler2::aarch64::TrapInst, cacao::jit::compiler2::x86_64::TrapInst, cacao::jit::compiler2::aarch64::RetInst, and cacao::jit::compiler2::x86_64::RetInst.
Definition at line 328 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::x86_64::IndirectJumpInst, cacao::jit::compiler2::x86_64::CondJumpInst, cacao::jit::compiler2::x86_64::JumpInst, cacao::jit::compiler2::aarch64::CondJumpInst, and cacao::jit::compiler2::aarch64::JumpInst.
Definition at line 325 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::MachineLabelInst.
Definition at line 316 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::aarch64::FMovInst, cacao::jit::compiler2::x86_64::MoveInst, cacao::jit::compiler2::aarch64::LoadInst, cacao::jit::compiler2::aarch64::StoreInst, and cacao::jit::compiler2::aarch64::MovInst.
Definition at line 322 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::MachinePhiInst.
Definition at line 319 of file MachineInstruction.hpp.
|
virtual |
link machine code
Reimplemented in cacao::jit::compiler2::x86_64::MovImmSInst, cacao::jit::compiler2::aarch64::PatchInst, cacao::jit::compiler2::x86_64::CondJumpInst, cacao::jit::compiler2::x86_64::JumpInst, cacao::jit::compiler2::x86_64::MovDSEGInst, cacao::jit::compiler2::aarch64::CondJumpInst, cacao::jit::compiler2::aarch64::JumpInst, cacao::jit::compiler2::x86_64::PatchInst, cacao::jit::compiler2::aarch64::DsegAddrInst, cacao::jit::compiler2::MachineDeoptInst, cacao::jit::compiler2::MachineReplacementPointCallSiteInst, cacao::jit::compiler2::MachineReplacementEntryInst, cacao::jit::compiler2::MachineReplacementPointInst, and cacao::jit::compiler2::MachineJumpInst.
Definition at line 90 of file MachineInstruction.cpp.
|
inline |
Definition at line 193 of file MachineInstruction.hpp.
|
inline |
Definition at line 196 of file MachineInstruction.hpp.
print instruction
Definition at line 39 of file MachineInstruction.cpp.
print operands
Reimplemented in cacao::jit::compiler2::x86_64::MovModRMInst.
Definition at line 74 of file MachineInstruction.cpp.
print result
Reimplemented in cacao::jit::compiler2::x86_64::MovModRMInst.
Definition at line 70 of file MachineInstruction.cpp.
|
virtual |
print successor label
Reimplemented in cacao::jit::compiler2::x86_64::CondJumpInst.
Definition at line 82 of file MachineInstruction.cpp.
|
inlinevirtual |
Definition at line 186 of file MachineInstruction.hpp.
|
inline |
Definition at line 166 of file MachineInstruction.hpp.
|
inlineprivate |
Definition at line 125 of file MachineInstruction.hpp.
|
inline |
Definition at line 169 of file MachineInstruction.hpp.
|
inline |
Definition at line 310 of file MachineInstruction.hpp.
|
inline |
Definition at line 286 of file MachineInstruction.hpp.
|
inline |
Definition at line 274 of file MachineInstruction.hpp.
|
inline |
Definition at line 280 of file MachineInstruction.hpp.
|
inline |
Definition at line 295 of file MachineInstruction.hpp.
|
inline |
Definition at line 277 of file MachineInstruction.hpp.
|
inline |
Definition at line 289 of file MachineInstruction.hpp.
|
inline |
Definition at line 283 of file MachineInstruction.hpp.
|
inline |
Definition at line 292 of file MachineInstruction.hpp.
|
inlinevirtual |
Definition at line 334 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::MachinePhiInst.
Definition at line 342 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::MachineReplacementPointInst.
Definition at line 345 of file MachineInstruction.hpp.
|
protected |
Definition at line 147 of file MachineInstruction.hpp.
|
protected |
Definition at line 146 of file MachineInstruction.hpp.
|
protected |
dummy_operands is a list of operands embedded in the real operands of this instruction that need register allocation (for example indirect addressing on x86)
Definition at line 141 of file MachineInstruction.hpp.
|
protected |
Definition at line 134 of file MachineInstruction.hpp.
|
staticprivate |
Definition at line 124 of file MachineInstruction.hpp.
|
protected |
Definition at line 145 of file MachineInstruction.hpp.
|
protected |
Definition at line 135 of file MachineInstruction.hpp.
|
protected |
Definition at line 142 of file MachineInstruction.hpp.
|
protected |
Definition at line 144 of file MachineInstruction.hpp.
|
protected |
Definition at line 143 of file MachineInstruction.hpp.