CACAO
|
Second stage compiler namespace. More...
Namespaces | |
alloc | |
memory | |
option | |
tree | |
x86_64 | |
Enumerations | |
enum | CodeSegmentType { LabelID } |
enum | DataSegmentType { DoubleID, LongID, FloatID, IntID, FMIRefID } |
Functions | |
MachineCode * | compile (methodinfo *m) |
OStream & | operator<< (OStream &OS, const Conditional::CondID &cond) |
OStream & | operator<< (OStream &OS, const Instruction *I) |
OStream & | operator<< (OStream &OS, const Instruction &I) |
OStream & | operator<< (OStream &OS, const BeginInstRef &BIR) |
bool | operator< (const Edge &lhs, const Edge &rhs) |
UseDef | next_intersection (const LivetimeInterval &a, const LivetimeInterval &b, UseDef pos, UseDef end) |
OStream & | operator<< (OStream &OS, const LivetimeIntervalImpl <i) |
OStream & | operator<< (OStream &OS, const LivetimeInterval <i) |
OStream & | operator<< (OStream &OS, const LivetimeInterval *lti) |
OStream & | operator<< (OStream &OS, const UseDef &usedef) |
OStream & | operator<< (OStream &OS, const LivetimeRange &range) |
bool | operator< (const UseDef &lhs, const UseDef &rhs) |
less then operator More... | |
bool | operator!= (const UseDef &lhs, const UseDef &rhs) |
bool | operator== (const UseDef &lhs, const UseDef &rhs) |
bool | operator<= (const UseDef &lhs, const UseDef &rhs) |
OStream & | operator<< (OStream &OS, const Loop &L) |
OStream & | operator<< (OStream &OS, const Loop *L) |
bool | check_is_phi (MachineInstruction *value) |
OStream & | operator<< (OStream &OS, const MIIterator &it) |
MachinePhiInst * | get_phi_from_operand (MachineBasicBlock *MBB, MachineOperand *op) |
MachineBasicBlock * | get_edge_block (MachineBasicBlock *from, MachineBasicBlock *to, Backend *backend) |
get a new basic block for a given edge More... | |
MIIterator | get_edge_iterator (MachineBasicBlock *from, MachineBasicBlock *to, Backend *backend) |
MIIterator | insert_before (MIIterator pos, MachineInstruction *value) |
Get an edge inserter. More... | |
MIIterator | insert_after (MIIterator pos, MachineInstruction *value) |
bool | operator<= (const MIIterator &lhs, const MIIterator &rhs) |
bool | operator> (const MIIterator &lhs, const MIIterator &rhs) |
bool | operator>= (const MIIterator &lhs, const MIIterator &rhs) |
OStream & | operator<< (OStream &OS, MachineBasicBlock &MBB) |
template<class InputIterator > | |
void | move_instructions (InputIterator first, InputIterator last, MachineBasicBlock &from, MachineBasicBlock &to) |
Move instructions to another basic block. More... | |
OStream & | operator<< (OStream &OS, const MachineInstruction *MI) |
OStream & | operator<< (OStream &OS, const MachineInstruction &MI) |
OStream & | operator<< (OStream &OS, const MachineOperandDesc *MOD) |
OStream & | operator<< (OStream &OS, const MachineOperandDesc &MOD) |
OStream & | operator<< (OStream &OS, const MachineLoop &L) |
OStream & | operator<< (OStream &OS, const MachineLoop *L) |
OStream & | operator<< (OStream &OS, const MachineOperand &MO) |
OStream & | operator<< (OStream &OS, const MachineOperand *MO) |
OStream & | operator<< (OStream &OS, const Method &M) |
template<typename _NodeType > | |
edge< _NodeType > | make_edge (_NodeType x, _NodeType y) |
OStream & | operator<< (OStream &OS, const MethodDescriptor &MD) |
void | print_PassDependencyGraph (PassManager &PM) |
template<class _PassClass > | |
Pass * | call_ctor () |
template<typename Tag , typename RefCategory > | |
u1 & | doAccess (SegRef< Tag, RefCategory > &ref, std::size_t i, NormalRefCategory) |
access data More... | |
template<typename Tag , typename RefCategory > | |
u1 & | doAccess (SegRef< Tag, RefCategory > &ref, std::size_t i, ReverseRefCategory) |
access data More... | |
template<typename Tag , typename RefCategory > | |
SegRef< Tag, RefCategory >::IdxTy | getAddStartIndex (SegRef< Tag, RefCategory > &ref, std::size_t v, NormalRefCategory) |
get subreference More... | |
template<typename Tag , typename RefCategory > | |
SegRef< Tag, RefCategory >::IdxTy | getAddStartIndex (SegRef< Tag, RefCategory > &ref, std::size_t v, ReverseRefCategory) |
get subreference More... | |
template<typename Tag , typename RefCategory > | |
SegRef< Tag, RefCategory >::IdxTy | getBegin (const SegRef< Tag, RefCategory > &ref, NormalRefCategory) |
get first index More... | |
template<typename Tag , typename RefCategory > | |
SegRef< Tag, RefCategory >::IdxTy | getBegin (const SegRef< Tag, RefCategory > &ref, ReverseRefCategory) |
get first index More... | |
template<typename Tag , typename RefCategory > | |
SegRef< Tag, RefCategory >::IdxTy | getEnd (const SegRef< Tag, RefCategory > &ref, NormalRefCategory) |
get last but one index More... | |
template<typename Tag , typename RefCategory > | |
SegRef< Tag, RefCategory >::IdxTy | getEnd (const SegRef< Tag, RefCategory > &ref, ReverseRefCategory) |
get last but one index More... | |
template<typename Tag , typename RefCategory > | |
Segment< Tag, RefCategory >::IdxTy | getFollowingIndex (const Segment< Tag, RefCategory > &ref, NormalRefCategory) |
template<typename Tag , typename RefCategory > | |
Segment< Tag, RefCategory >::IdxTy | getFollowingIndex (const Segment< Tag, RefCategory > &ref, ReverseRefCategory) |
template<class Type > | |
OStream & | operator<< (OStream &OS, SegmentTag< Type > &tag) |
template<class Type > | |
OStream & | operator<< (OStream &OS, SegmentTag< Type > *tag) |
const char * | get_var_type (int type) |
Type::TypeID | convert_var_type (int type) |
OStream & | operator<< (OStream &OS, const Type::TypeID &type) |
const char * | get_type_name (const Type::TypeID &type) |
OStream & | operator<< (OStream &OS, const Value *V) |
OStream & | operator<< (OStream &OS, const Value &V) |
Variables | |
static PassRegistry < BasicBlockSchedulingPass > | X ("BasicBlockSchedulingPass") |
static PassRegistry < CFGConstructionPass > | X ("CFGConstructionPass") |
static PassRegistry< CFGMetaPass > | X ("CFGMetaPass") |
static PassRegistry< CodeGenPass > | X ("CodeGenPass") |
Option< bool > | enabled ("DebugCompiler2","compiler with compiler2", false, option::xx_root()) |
static PassRegistry < DisassemblerPass > | X ("DisassemblerPass") |
static PassRegistry < DominatorPass > | X ("DominatorPass") |
static PassRegistry < DomTreePrinterPass > | X ("DomTreePrinterPass") |
static PassRegistry< ExamplePass > | X ("ExamplePass") |
static PassRegistry < ICMDPrinterPass > | X ("ICMDPrinterPass") |
static PassRegistry < InstructionMetaPass > | X ("InstructionMetaPass") |
static PassRegistry < LivetimeAnalysisPass > | X ("LivetimeAnalysisPass") |
static PassRegistry< LoopPass > | X ("LoopPass") |
static PassRegistry < LoopTreePrinterPass > | X ("LoopTreePrinterPass") |
static PassRegistry < MachineInstructionPrinterPass > | X ("MachineInstructionPrinterPass") |
static PassRegistry < MachineInstructionSchedulingPass > | X ("MachineInstructionSchedulingPass") |
static PassRegistry < MachineLoopPass > | X ("MachineLoopPass") |
VoidOperand | NoOperand |
Instruction::InstID | tmp [] |
static PassRegistry < ObjectFileWriterPass > | X ("ObjectFileWriterPass") |
static PassRegistry< ParserPass > | X ("ParserPass") |
static PassRegistry < RegisterAllocatorPass > | X ("RegisterAllocatorPass") |
static PassRegistry < ScheduleClickPass > | X ("ScheduleClickPass") |
static PassRegistry < ScheduleEarlyPass > | X ("ScheduleEarlyPass") |
static PassRegistry < ScheduleLatePass > | X ("ScheduleLatePass") |
static PassRegistry < SSAPrinterPass > | X ("SSAPrinterPass") |
static PassRegistry < BasicBlockPrinterPass > | Z ("BasicBlockPrinterPass") |
Option< bool > | schedule_printer_enabled ("GlobalSchedulePrinterPass","compiler2: enable GlobalSchedulePrinterPass", false,::cacao::option::xx_root()) |
static PassRegistry < GlobalSchedulePrinterPass < ScheduleLatePass > > | X_late ("GlobalSchedulePrinterPass(late)") |
static PassRegistry < GlobalSchedulePrinterPass < ScheduleEarlyPass > > | X_early ("GlobalSchedulePrinterPass(early)") |
static PassRegistry < GlobalSchedulePrinterPass < ScheduleClickPass > > | X_click ("GlobalSchedulePrinterPass(click)") |
static PassRegistry < StackAnalysisPass > | X ("StackAnalysisPass") |
static PassRegistry< VerifierPass > | X ("VerifierPass") |
Second stage compiler namespace.
All parts specific to the second stage compiler are contained in this namespace.
typedef alloc::map<MachineBasicBlock*, alloc::list<LivetimeInterval>::type >::type cacao::jit::compiler2::BBtoLTI_Map |
Definition at line 68 of file LinearScanAllocatorPass.hpp.
Definition at line 52 of file CodeSegment.hpp.
Definition at line 51 of file CodeSegment.hpp.
Definition at line 42 of file CodeSegment.hpp.
Definition at line 52 of file DataSegment.hpp.
Definition at line 51 of file DataSegment.hpp.
typedef ConstTag<DataSegmentType,double,DoubleID> cacao::jit::compiler2::DSDouble |
Definition at line 45 of file DataSegment.hpp.
typedef ConstTag<DataSegmentType,float,FloatID> cacao::jit::compiler2::DSFloat |
Definition at line 47 of file DataSegment.hpp.
Definition at line 49 of file DataSegment.hpp.
typedef ConstTag<DataSegmentType,int32_t,IntID> cacao::jit::compiler2::DSInt |
Definition at line 48 of file DataSegment.hpp.
typedef ConstTag<DataSegmentType,int64_t,LongID> cacao::jit::compiler2::DSLong |
Definition at line 46 of file DataSegment.hpp.
typedef alloc::map<Edge,MoveMapTy>::type cacao::jit::compiler2::EdgeMoveMapTy |
Definition at line 67 of file LinearScanAllocatorPass.hpp.
typedef LoopBase<BeginInst> cacao::jit::compiler2::Loop |
Definition at line 35 of file LoopPass.hpp.
Definition at line 48 of file Target.hpp.
typedef u1 cacao::jit::compiler2::MachineCode |
Definition at line 114 of file Compiler.hpp.
Definition at line 35 of file MachineLoop.hpp.
Definition at line 35 of file MachineLoopPass.hpp.
Definition at line 38 of file MachineLoop.hpp.
typedef alloc::list<Move>::type cacao::jit::compiler2::MoveMapTy |
Definition at line 66 of file LinearScanAllocatorPass.hpp.
Definition at line 47 of file Target.hpp.
Definition at line 46 of file Target.hpp.
Definition at line 48 of file Matcher.hpp.
typedef alloc::list<MachineOperand*>::type cacao::jit::compiler2::OperandFile |
Definition at line 436 of file MachineOperand.hpp.
typedef struct burm_state cacao::jit::compiler2::STATE_TYPE |
Definition at line 49 of file Matcher.hpp.
Definition at line 45 of file Target.hpp.
Enumerator | |
---|---|
LabelID |
Definition at line 38 of file CodeSegment.hpp.
Enumerator | |
---|---|
DoubleID | |
LongID | |
FloatID | |
IntID | |
FMIRefID |
Definition at line 37 of file DataSegment.hpp.
Pass* cacao::jit::compiler2::call_ctor | ( | ) |
Definition at line 172 of file PassManager.hpp.
bool cacao::jit::compiler2::check_is_phi | ( | MachineInstruction * | value | ) |
Definition at line 69 of file MachineBasicBlock.cpp.
MachineCode * cacao::jit::compiler2::compile | ( | methodinfo * | m | ) |
prolog start jit_compile
prolog end jit_compile
prolog start jit_compile_intern
prolog end jit_compile_intern
epilog start jit_compile
epilog end jit_compile
Definition at line 123 of file Compiler.cpp.
Type::TypeID cacao::jit::compiler2::convert_var_type | ( | int | type | ) |
|
inline |
access data
Definition at line 415 of file Segment.hpp.
|
inline |
access data
Definition at line 422 of file Segment.hpp.
MachineBasicBlock * cacao::jit::compiler2::get_edge_block | ( | MachineBasicBlock * | from, |
MachineBasicBlock * | to, | ||
Backend * | backend | ||
) |
get a new basic block for a given edge
Definition at line 103 of file MachineBasicBlock.cpp.
MIIterator cacao::jit::compiler2::get_edge_iterator | ( | MachineBasicBlock * | from, |
MachineBasicBlock * | to, | ||
Backend * | backend | ||
) |
Definition at line 129 of file MachineBasicBlock.cpp.
MachinePhiInst * cacao::jit::compiler2::get_phi_from_operand | ( | MachineBasicBlock * | MBB, |
MachineOperand * | op | ||
) |
Definition at line 94 of file MachineBasicBlock.cpp.
const char * cacao::jit::compiler2::get_type_name | ( | const Type::TypeID & | type | ) |
const char * cacao::jit::compiler2::get_var_type | ( | int | type | ) |
|
inline |
get subreference
Definition at line 430 of file Segment.hpp.
|
inline |
get subreference
Definition at line 436 of file Segment.hpp.
|
inline |
get first index
Definition at line 443 of file Segment.hpp.
|
inline |
get first index
Definition at line 449 of file Segment.hpp.
|
inline |
get last but one index
Definition at line 456 of file Segment.hpp.
|
inline |
get last but one index
Definition at line 462 of file Segment.hpp.
|
inline |
Definition at line 469 of file Segment.hpp.
|
inline |
Definition at line 475 of file Segment.hpp.
MIIterator cacao::jit::compiler2::insert_after | ( | MIIterator | pos, |
MachineInstruction * | value | ||
) |
Definition at line 155 of file MachineBasicBlock.cpp.
MIIterator cacao::jit::compiler2::insert_before | ( | MIIterator | pos, |
MachineInstruction * | value | ||
) |
Get an edge inserter.
This may return an iterator to the end of predecessor block, if the predecessor has only one successor, an iterator to the beginning of the successor block, if the successor has only one predecessor, or else an iterator to a newly allocated block.
Definition at line 151 of file MachineBasicBlock.cpp.
edge<_NodeType> cacao::jit::compiler2::make_edge | ( | _NodeType | x, |
_NodeType | y | ||
) |
Definition at line 58 of file MethodC2.hpp.
|
inline |
Move instructions to another basic block.
Definition at line 523 of file MachineBasicBlock.hpp.
UseDef cacao::jit::compiler2::next_intersection | ( | const LivetimeInterval & | a, |
const LivetimeInterval & | b, | ||
UseDef | pos, | ||
UseDef | end | ||
) |
Definition at line 118 of file LivetimeInterval.cpp.
|
inline |
Definition at line 397 of file LivetimeInterval.hpp.
Definition at line 60 of file LinearScanAllocatorPass.hpp.
|
inline |
less then operator
Definition at line 386 of file LivetimeInterval.hpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const MethodDescriptor & | MD | ||
) |
Definition at line 31 of file MethodDescriptor.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const Conditional::CondID & | cond | ||
) |
Definition at line 34 of file Conditional.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const Loop & | L | ||
) |
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const MachineLoop & | L | ||
) |
Definition at line 35 of file MachineLoop.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const Loop * | L | ||
) |
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const Instruction * | I | ||
) |
Definition at line 38 of file Instruction.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const MachineLoop * | L | ||
) |
Definition at line 39 of file MachineLoop.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const Type::TypeID & | type | ||
) |
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const MIIterator & | it | ||
) |
Definition at line 73 of file MachineBasicBlock.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const MachineInstruction * | MI | ||
) |
Definition at line 95 of file MachineInstruction.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const MachineInstruction & | MI | ||
) |
Definition at line 101 of file MachineInstruction.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const MachineOperandDesc * | MOD | ||
) |
Definition at line 105 of file MachineInstruction.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const MachineOperandDesc & | MOD | ||
) |
Definition at line 111 of file MachineInstruction.cpp.
OStream& cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const LivetimeIntervalImpl & | lti | ||
) |
Definition at line 136 of file LivetimeInterval.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const Method & | M | ||
) |
Definition at line 139 of file MethodC2.cpp.
|
inline |
Definition at line 190 of file Instructions.hpp.
|
inline |
Definition at line 245 of file Instruction.hpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const LivetimeInterval & | lti | ||
) |
Definition at line 356 of file LivetimeInterval.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const LivetimeInterval * | lti | ||
) |
Definition at line 364 of file LivetimeInterval.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const UseDef & | usedef | ||
) |
Definition at line 371 of file LivetimeInterval.cpp.
OStream & cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
const LivetimeRange & | range | ||
) |
Definition at line 377 of file LivetimeInterval.cpp.
|
inline |
Definition at line 420 of file MachineOperand.hpp.
|
inline |
Definition at line 423 of file MachineOperand.hpp.
|
inline |
Definition at line 449 of file MachineBasicBlock.hpp.
OStream& cacao::jit::compiler2::operator<< | ( | OStream & | OS, |
SegmentTag< Type > & | tag | ||
) |
Definition at line 500 of file Segment.hpp.
|
inline |
Definition at line 504 of file Segment.hpp.
|
inline |
Definition at line 120 of file MachineBasicBlock.hpp.
|
inline |
Definition at line 403 of file LivetimeInterval.hpp.
|
inline |
Definition at line 400 of file LivetimeInterval.hpp.
|
inline |
Definition at line 123 of file MachineBasicBlock.hpp.
|
inline |
Definition at line 126 of file MachineBasicBlock.hpp.
void cacao::jit::compiler2::print_PassDependencyGraph | ( | PassManager & | PM | ) |
Definition at line 127 of file PassDependencyGraphPrinter.cpp.
Option< bool > cacao::jit::compiler2::enabled |
Definition at line 112 of file Compiler.hpp.
VoidOperand cacao::jit::compiler2::NoOperand |
Definition at line 36 of file MachineOperand.cpp.
Option< bool > cacao::jit::compiler2::schedule_printer_enabled |
Definition at line 80 of file SSAPrinterPass.hpp.
Instruction::InstID cacao::jit::compiler2::tmp[] |
Definition at line 55 of file Matcher.cpp.
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |