|
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 Public Member Functions inherited from cacao::jit::compiler2::memory::ManagerMixin< MachineInstruction > | |
| 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 110 of file MachineInstruction.hpp.
| typedef dummy_operand_list::const_iterator cacao::jit::compiler2::MachineInstruction::const_dummy_operand_iterator |
Definition at line 117 of file MachineInstruction.hpp.
| typedef operand_list::const_iterator cacao::jit::compiler2::MachineInstruction::const_operand_iterator |
Definition at line 114 of file MachineInstruction.hpp.
| typedef successor_list::const_iterator cacao::jit::compiler2::MachineInstruction::const_successor_iterator |
Definition at line 121 of file MachineInstruction.hpp.
| typedef dummy_operand_list::iterator cacao::jit::compiler2::MachineInstruction::dummy_operand_iterator |
Definition at line 116 of file MachineInstruction.hpp.
| typedef alloc::vector<MachineOperandDesc>::type cacao::jit::compiler2::MachineInstruction::dummy_operand_list |
Definition at line 115 of file MachineInstruction.hpp.
| typedef operand_list::iterator cacao::jit::compiler2::MachineInstruction::operand_iterator |
Definition at line 113 of file MachineInstruction.hpp.
| typedef alloc::vector<MachineOperandDesc>::type cacao::jit::compiler2::MachineInstruction::operand_list |
Definition at line 112 of file MachineInstruction.hpp.
| typedef alloc::unordered_map<EmbeddedMachineOperand *,int>::type cacao::jit::compiler2::MachineInstruction::RefMapTy |
Definition at line 118 of file MachineInstruction.hpp.
| typedef successor_list::iterator cacao::jit::compiler2::MachineInstruction::successor_iterator |
Definition at line 120 of file MachineInstruction.hpp.
| typedef alloc::list<MachineBasicBlock*>::type cacao::jit::compiler2::MachineInstruction::successor_list |
Definition at line 119 of file MachineInstruction.hpp.
|
inline |
Definition at line 153 of file MachineInstruction.hpp.
|
inlinevirtual |
destructor
Definition at line 356 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::x86_64::MovInst, and cacao::jit::compiler2::x86_64::ALUInstruction.
Definition at line 312 of file MachineInstruction.hpp.
|
inline |
Definition at line 226 of file MachineInstruction.hpp.
|
inline |
Definition at line 210 of file MachineInstruction.hpp.
|
inline |
Definition at line 229 of file MachineInstruction.hpp.
|
inline |
Definition at line 264 of file MachineInstruction.hpp.
|
inline |
Definition at line 248 of file MachineInstruction.hpp.
|
inline |
Definition at line 267 of file MachineInstruction.hpp.
|
inline |
Definition at line 251 of file MachineInstruction.hpp.
|
inline |
Definition at line 270 of file MachineInstruction.hpp.
|
inline |
Definition at line 261 of file MachineInstruction.hpp.
|
inline |
Definition at line 235 of file MachineInstruction.hpp.
|
virtual |
emit machine code
Reimplemented in 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::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::x86_64::MovInst, cacao::jit::compiler2::x86_64::CallInst, cacao::jit::compiler2::x86_64::NegInst, cacao::jit::compiler2::x86_64::RetInst, cacao::jit::compiler2::x86_64::CDQInst, cacao::jit::compiler2::x86_64::IDivInst, 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::MachineJumpInst, cacao::jit::compiler2::MachinePhiInst, and cacao::jit::compiler2::MachineLabelInst.
Definition at line 86 of file MachineInstruction.cpp.
|
inline |
Definition at line 213 of file MachineInstruction.hpp.
|
inline |
Definition at line 232 of file MachineInstruction.hpp.
|
inline |
has to be called after all operands with embedded operands have been added
Definition at line 179 of file MachineInstruction.hpp.
|
inline |
Definition at line 216 of file MachineInstruction.hpp.
|
inline |
Definition at line 254 of file MachineInstruction.hpp.
|
inline |
Definition at line 223 of file MachineInstruction.hpp.
|
inline |
Definition at line 200 of file MachineInstruction.hpp.
|
inline |
Definition at line 205 of file MachineInstruction.hpp.
|
inline |
Definition at line 188 of file MachineInstruction.hpp.
|
inline |
Definition at line 166 of file MachineInstruction.hpp.
|
inline |
Definition at line 238 of file MachineInstruction.hpp.
|
inline |
Definition at line 243 of file MachineInstruction.hpp.
|
inline |
Definition at line 297 of file MachineInstruction.hpp.
|
inline |
Definition at line 300 of file MachineInstruction.hpp.
|
inline |
Definition at line 303 of file MachineInstruction.hpp.
|
inline |
Definition at line 306 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::x86_64::RetInst.
Definition at line 327 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::x86_64::IndirectJumpInst, cacao::jit::compiler2::x86_64::CondJumpInst, and cacao::jit::compiler2::x86_64::JumpInst.
Definition at line 324 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::MachineLabelInst.
Definition at line 315 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::x86_64::MoveInst.
Definition at line 321 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::MachinePhiInst.
Definition at line 318 of file MachineInstruction.hpp.
|
virtual |
link machine code
Reimplemented in cacao::jit::compiler2::x86_64::MovImmSInst, cacao::jit::compiler2::x86_64::CondJumpInst, cacao::jit::compiler2::x86_64::JumpInst, cacao::jit::compiler2::x86_64::MovDSEGInst, cacao::jit::compiler2::x86_64::PatchInst, and cacao::jit::compiler2::MachineJumpInst.
Definition at line 90 of file MachineInstruction.cpp.
|
inline |
Definition at line 192 of file MachineInstruction.hpp.
|
inline |
Definition at line 195 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 185 of file MachineInstruction.hpp.
|
inline |
Definition at line 165 of file MachineInstruction.hpp.
|
inlineprivate |
Definition at line 124 of file MachineInstruction.hpp.
|
inline |
Definition at line 168 of file MachineInstruction.hpp.
|
inline |
Definition at line 309 of file MachineInstruction.hpp.
|
inline |
Definition at line 285 of file MachineInstruction.hpp.
|
inline |
Definition at line 273 of file MachineInstruction.hpp.
|
inline |
Definition at line 279 of file MachineInstruction.hpp.
|
inline |
Definition at line 294 of file MachineInstruction.hpp.
|
inline |
Definition at line 276 of file MachineInstruction.hpp.
|
inline |
Definition at line 288 of file MachineInstruction.hpp.
|
inline |
Definition at line 282 of file MachineInstruction.hpp.
|
inline |
Definition at line 291 of file MachineInstruction.hpp.
|
inlinevirtual |
Definition at line 330 of file MachineInstruction.hpp.
|
inlinevirtual |
Reimplemented in cacao::jit::compiler2::MachinePhiInst.
Definition at line 338 of file MachineInstruction.hpp.
|
protected |
Definition at line 146 of file MachineInstruction.hpp.
|
protected |
Definition at line 145 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 140 of file MachineInstruction.hpp.
|
protected |
Definition at line 133 of file MachineInstruction.hpp.
|
staticprivate |
Definition at line 123 of file MachineInstruction.hpp.
|
protected |
Definition at line 144 of file MachineInstruction.hpp.
|
protected |
Definition at line 134 of file MachineInstruction.hpp.
|
protected |
Definition at line 141 of file MachineInstruction.hpp.
|
protected |
Definition at line 143 of file MachineInstruction.hpp.
|
protected |
Definition at line 142 of file MachineInstruction.hpp.
1.8.5