CACAO
Namespaces | Data Structures | Typedefs | Enumerations | Functions | Variables
cacao::jit::compiler2 Namespace Reference

Second stage compiler namespace. More...

Namespaces

 aarch64
 
 alloc
 
 memory
 
 option
 
 tree
 
 x86_64
 

Data Structures

class  Backend
 
class  BackendBase
 Machine Backend. More...
 
class  LoweringVisitorBase
 
class  BasicBlockSchedule
 BasicBlockSchedule TODO: more info. More...
 
class  LoopScheduler
 
class  BasicBlockSchedulingPass
 BasicBlockSchedulingPass TODO: more info. More...
 
class  CFGConstructionPass
 CFGConstructionPass TODO: more info. More...
 
class  CFGMetaPass
 CFGMetaPass. More...
 
struct  MBBCompare
 
class  CodeGenPass
 CodeGenPass TODO: more info. More...
 
class  CodeMemory
 CodeMemory. More...
 
class  Conditional
 Type Class. More...
 
class  ConstantPropagationPass
 ConstantPropagationPass. More...
 
class  DeadCodeEliminationPass
 DeadCodeEliminationPass. More...
 
class  DisassemblerPass
 DisassemblerPass TODO: more info. More...
 
class  DominatorTree
 
class  DominatorPass
 Calculate the Dominator Tree. More...
 
class  DomTreePrinterPass
 DomTreePrinterPass TODO: more info. More...
 
class  ExamplePass
 ExamplePass. More...
 
class  GlobalSchedule
 GlobalSchedule TODO: more info. More...
 
class  GlobalValueNumberingPass
 GlobalValueNumberingPass. More...
 
class  DFSTraversal
 This helper class creates traversal for a graph. More...
 
class  ICMDPrinterPass
 ICMDPrinterPass. More...
 
class  Instruction
 Instruction super class. More...
 
struct  InstPtrLess
 Less comparator for Instruction pointers. More...
 
class  InstructionMetaPass
 InstructionMetaPass. More...
 
class  UnaryInst
 Base type of instructions with a single operand. More...
 
class  BinaryInst
 Base type of instructions with two operands. More...
 
class  MultiOpInst
 Base type of instructions with an arbitrary number of operands. More...
 
class  CondInst
 Base type of instructions that compute a condition. More...
 
class  SourceStateInst
 Provides a mapping from HIR values to baseline IR variables. More...
 
class  SourceStateAwareInst
 Base type of instructions that can be mapped to a SourceStateInst. More...
 
class  DereferenceInst
 Base type of instructions that dereference an object reference. More...
 
class  BeginInst
 This Instruction marks the start of a basic block. More...
 
class  BeginInstRef
 This stores a reference to a BeginInst. More...
 
class  EndInst
 This Instruction marks the end of a basic block. More...
 
class  CHECKNULLInst
 Represents an explicit null-check on an object reference. More...
 
class  ARRAYLENGTHInst
 Get the length of an array. More...
 
class  NEGInst
 
class  CASTInst
 
class  ADDInst
 
class  SUBInst
 
class  MULInst
 
class  DIVInst
 
class  REMInst
 
class  SHLInst
 
class  USHRInst
 
class  ANDInst
 
class  ORInst
 
class  XORInst
 
class  CMPInst
 
class  CONSTInst
 
class  FieldAccessInst
 Base class of instructions that access a field on a class or object. More...
 
class  GETFIELDInst
 Get the value of an object's field. More...
 
class  PUTFIELDInst
 Write a value to an object's field. More...
 
class  GETSTATICInst
 Get the value of a static field. More...
 
class  PUTSTATICInst
 Write a value to a static field. More...
 
class  INCInst
 
class  AREFInst
 
class  ASTOREInst
 Store a value into an array. More...
 
class  ALOADInst
 Load a value from an array. More...
 
class  ARRAYBOUNDSCHECKInst
 Perform a bounds-check for an array-access. More...
 
class  LOADInst
 A LOADInst represents an argument that is passed to the current method. More...
 
class  NEWInst
 
class  NEWARRAYInst
 
class  ANEWARRAYInst
 
class  MULTIANEWARRAYInst
 
class  CHECKCASTInst
 
class  INSTANCEOFInst
 
class  GOTOInst
 
class  INVOKEInst
 Base type of instruction that perform a method invocation. More...
 
class  INVOKESTATICInst
 Invoke a static method. More...
 
class  INVOKEVIRTUALInst
 Invoke an instance method. More...
 
class  INVOKESPECIALInst
 Invoke an instance method with special handling. More...
 
class  INVOKEINTERFACEInst
 Invoke an interface method. More...
 
class  BUILTINInst
 Invoke a builtin. More...
 
class  IFInst
 
class  IF_CMPInst
 
class  TABLESWITCHInst
 
class  LOOKUPSWITCHInst
 
class  RETURNInst
 Return from the current method. More...
 
class  THROWInst
 
class  PHIInst
 
class  ReplacementEntryInst
 A point where the method can be entered through on-stack replacement. More...
 
class  AssumptionInst
 Represents a speculative assumption that has to be checked at run-time. More...
 
class  DeoptimizeInst
 Transfers execution back to an unoptimized version of the method. More...
 
class  InstructionSchedule
 InstructionSchedule TODO: more info. More...
 
class  InstructionVisitor
 
class  JITData
 
struct  Move
 
struct  Edge
 
class  LinearScanAllocatorPass
 Linear Scan Allocator. More...
 
class  ListSchedulingPass
 ListSchedulingPass. More...
 
class  LivetimeAnalysisPass
 LivetimeAnalysisPass. More...
 
class  UseDef
 
struct  LivetimeRange
 
class  LivetimeInterval
 
class  LivetimeIntervalImpl
 
class  LoopBase
 
class  LoopTreeBase
 
class  LoopPassBase
 Calculate the Loop Tree. More...
 
class  LoopComparator
 
class  LoopTreePrinterPass
 LoopTreePrinterPass TODO: more info. More...
 
class  MachineAddress
 
class  MIIterator
 
class  MachineBasicBlock
 A basic block of (scheduled) machine instructions. More...
 
struct  MoveEdgeFunctor
 
class  MachineOperandDesc
 Descriptor of a MachineOperand. More...
 
class  MachineInstruction
 Proxy to encode explicit and implicit successors. More...
 
class  MachineInstructionPrinterPass
 MachineInstructionPrinterPass TODO: more info. More...
 
class  MachineLabelInst
 
class  MachinePhiInst
 
class  MachineJumpInst
 
class  MachineReplacementPointInst
 Represents a point in the program, where it is possible to recover the source state to perform on-stack replacement. More...
 
class  MachineReplacementEntryInst
 
class  MachineReplacementPointCallSiteInst
 Represents a replacement point at a call site (INVOKE* ICMDs) The reference to the corresponding call MachineInstruction is needed since the replacement point needs to know the size of the callsite (in bytes) More...
 
class  MachineReplacementPointStaticSpecialInst
 Specialication for INVOKESpecial and INVOKEStatic. More...
 
class  MachineDeoptInst
 
class  MBBIterator
 
class  const_MBBIterator
 
class  MBBBuilder
 
class  MachineInstructionSchedule
 
class  MachineInstructionSchedulingPass
 MachineInstructionSchedulingPass TODO: more info. More...
 
class  EmbeddedMachineOperand
 
class  MachineOperand
 Operands that can be directly used by the machine (register, memory, stackslot) More...
 
class  VoidOperand
 
class  Register
 
class  UnassignedReg
 
class  VirtualRegister
 
class  StackSlot
 
class  ManagedStackSlot
 A "virtual" slot that will eventually be mapped to a machine-level slot. More...
 
class  Immediate
 
class  Address
 
struct  MachineOperandComp
 
class  MachineRegister
 
class  NoInst
 
class  Matcher
 
struct  edge
 
class  Method
 
class  MethodDescriptor
 MethodDescriptor TODO: more info. More...
 
class  NullCheckEliminationPass
 NullCheckEliminationPass. More...
 
class  ObjectFileWriterPass
 ObjectFileWriterPass TODO: more info. More...
 
class  ParserPass
 ParserPass TODO: more info. More...
 
class  Pass
 Pass superclass All compiler passes should inheritate this class. More...
 
class  PassInfo
 
class  PassManager
 Manages pass registry and scheduling. More...
 
class  PassRunner
 Each instance of PassRunner represents a single run of the compiler2. More...
 
struct  PassRegistry
 
class  PassUsage
 Stores the interdependencies of a pass. More...
 
class  RegisterAllocatorPass
 RegisterAllocatorPass. More...
 
class  ScheduleClickPass
 ScheduleClickPass. More...
 
class  ScheduleEarlyPass
 ScheduleEarlyPass. More...
 
class  ScheduleLatePass
 ScheduleLatePass. More...
 
class  SegRef
 Segment reference. More...
 
class  SegmentTag
 
struct  classcomp
 
struct  NormalRefCategory
 
struct  ReverseRefCategory
 
class  Segment
 A segment of the code memory. More...
 
class  ConstTag
 
class  PointerTag
 
class  SourceStateAttachmentPass
 SourceStateAttachmentPass. More...
 
class  SSAConstructionPass
 SSAConstructionPass. More...
 
class  SSAPrinterPass
 SSAPrinterPass TODO: more info. More...
 
class  BasicBlockPrinterPass
 BasicBlockPrinterPass TODO: more info. More...
 
class  GlobalSchedulePrinterPass
 GlobalSchedulePrinterPass TODO: more info. More...
 
class  StackAnalysisPass
 StackAnalysisPass TODO: more info. More...
 
class  StackSlotManager
 StackSlotManager. More...
 
class  Type
 Type Class. More...
 
class  Value
 
class  VerifierPass
 VerifierPass TODO: more info. More...
 

Typedefs

typedef aarch64::Aarch64 Target
 
typedef aarch64::NativeRegister NativeRegister
 
typedef
aarch64::Aarch64LoweringVisitor 
LoweringVisitor
 
typedef PointerTag
< CodeSegmentType, const
MachineBasicBlock, LabelID
CSLabel
 
typedef Segment
< CodeSegmentType,
ReverseRefCategory
CodeSegment
 
typedef SegRef
< CodeSegmentType,
ReverseRefCategory
CodeFragment
 
typedef u1 MachineCode
 
typedef ConstTag
< DataSegmentType, double,
DoubleID
DSDouble
 
typedef ConstTag
< DataSegmentType, int64_t,
LongID
DSLong
 
typedef ConstTag
< DataSegmentType, float,
FloatID
DSFloat
 
typedef ConstTag
< DataSegmentType, int32_t,
IntID
DSInt
 
typedef PointerTag
< DataSegmentType,
constant_FMIref, FMIRefID
DSFMIRef
 
typedef Segment
< DataSegmentType,
NormalRefCategory
DataSegment
 
typedef SegRef
< DataSegmentType,
NormalRefCategory
DataFragment
 
typedef alloc::list< Move >::type MoveMapTy
 
typedef alloc::map< Edge,
MoveMapTy >::type 
EdgeMoveMapTy
 
typedef alloc::map
< MachineBasicBlock
*, alloc::list
< LivetimeInterval >::type >
::type 
BBtoLTI_Map
 
typedef LoopBase< BeginInstLoop
 
typedef LoopTreeBase< BeginInstLoopTree
 
typedef LoopPassBase< BeginInstLoopPass
 
typedef LoopBase
< MachineBasicBlock
MachineLoop
 
typedef LoopTreeBase
< MachineBasicBlock
MachineLoopTree
 
typedef LoopPassBase
< MachineBasicBlock
MachineLoopPass
 
typedef alloc::list
< MachineOperand * >::type 
OperandFile
 
typedef InstructionNODEPTR_TYPE
 
typedef struct burm_state STATE_TYPE
 
using PassUPtrTy = std::unique_ptr< Pass >
 
typedef x86_64::NativeAddress NativeAddress
 

Enumerations

enum  CodeSegmentType { LabelID }
 
enum  DataSegmentType {
  DoubleID, LongID, FloatID, IntID,
  FMIRefID
}
 

Functions

MachineCodecompile (methodinfo *m)
 
OStreamoperator<< (OStream &OS, const Conditional::CondID &cond)
 
OStreamoperator<< (OStream &OS, const Instruction *I)
 
OStreamoperator<< (OStream &OS, const Instruction &I)
 
OStreamoperator<< (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)
 
OStreamoperator<< (OStream &OS, const LivetimeIntervalImpl &lti)
 
OStreamoperator<< (OStream &OS, const LivetimeInterval &lti)
 
OStreamoperator<< (OStream &OS, const LivetimeInterval *lti)
 
OStreamoperator<< (OStream &OS, const UseDef &usedef)
 
OStreamoperator<< (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)
 
OStreamoperator<< (OStream &OS, const Loop &L)
 
OStreamoperator<< (OStream &OS, const Loop *L)
 
bool check_is_phi (MachineInstruction *value)
 
OStreamoperator<< (OStream &OS, const MIIterator &it)
 
MachinePhiInstget_phi_from_operand (MachineBasicBlock *MBB, MachineOperand *op)
 
MachineBasicBlockget_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)
 
OStreamoperator<< (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...
 
OStreamoperator<< (OStream &OS, const MachineInstruction *MI)
 
OStreamoperator<< (OStream &OS, const MachineInstruction &MI)
 
OStreamoperator<< (OStream &OS, const MachineOperandDesc *MOD)
 
OStreamoperator<< (OStream &OS, const MachineOperandDesc &MOD)
 
OStreamoperator<< (OStream &OS, const MachineLoop &L)
 
OStreamoperator<< (OStream &OS, const MachineLoop *L)
 
OStreamoperator<< (OStream &OS, const MachineOperand &MO)
 
OStreamoperator<< (OStream &OS, const MachineOperand *MO)
 
OStreamoperator<< (OStream &OS, const Method &M)
 
template<typename _NodeType >
edge< _NodeType > make_edge (_NodeType x, _NodeType y)
 
OStreamoperator<< (OStream &OS, const MethodDescriptor &MD)
 
void print_PassDependencyGraph ()
 
template<class _PassClass >
Passcall_ctor ()
 
template<typename Tag , typename RefCategory >
u1doAccess (SegRef< Tag, RefCategory > &ref, std::size_t i, NormalRefCategory)
 access data More...
 
template<typename Tag , typename RefCategory >
u1doAccess (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 >
OStreamoperator<< (OStream &OS, SegmentTag< Type > &tag)
 
template<class Type >
OStreamoperator<< (OStream &OS, SegmentTag< Type > *tag)
 
const char * get_type_name (int type)
 Get the printable name of the type. More...
 
Type::TypeID convert_to_typeid (int type)
 Convert a Type to a Type::TypeID. More...
 
int convert_to_type (Type::TypeID id)
 Convert a Type::TypeID to a Type. More...
 
OStreamoperator<< (OStream &OS, const Type::TypeID &type)
 
const char * get_type_name (const Type::TypeID &type)
 
OStreamoperator<< (OStream &OS, const Value *V)
 
OStreamoperator<< (OStream &OS, const Value &V)
 

Variables

static PassRegistry
< BasicBlockSchedulingPass
X ("BasicBlockSchedulingPass")
 
static PassRegistry
< CFGConstructionPass
X ("CFGConstructionPass")
 
static PassRegistry< CFGMetaPassX ("CFGMetaPass")
 
static PassRegistry< CodeGenPassX ("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< ExamplePassX ("ExamplePass")
 
static PassRegistry
< ICMDPrinterPass
X ("ICMDPrinterPass")
 
static PassRegistry
< InstructionMetaPass
X ("InstructionMetaPass")
 
static PassRegistry
< ListSchedulingPass
X ("ListSchedulingPass")
 
static PassRegistry
< LivetimeAnalysisPass
X ("LivetimeAnalysisPass")
 
static PassRegistry< LoopPassX ("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
< NullCheckEliminationPass
X ("NullCheckEliminationPass")
 
static PassRegistry
< ObjectFileWriterPass
X ("ObjectFileWriterPass")
 
static PassRegistry< ParserPassX ("ParserPass")
 
static PassRegistry
< RegisterAllocatorPass
X ("RegisterAllocatorPass")
 
static PassRegistry
< ScheduleClickPass
X ("ScheduleClickPass")
 
static PassRegistry
< ScheduleEarlyPass
X ("ScheduleEarlyPass")
 
static PassRegistry
< ScheduleLatePass
X ("ScheduleLatePass")
 
static PassRegistry
< SourceStateAttachmentPass
X ("SourceStateAttachmentPass")
 
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< VerifierPassX ("VerifierPass")
 

Detailed Description

Second stage compiler namespace.

All parts specific to the second stage compiler are contained in this namespace.

Typedef Documentation

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.

Definition at line 45 of file DataSegment.hpp.

Definition at line 47 of file DataSegment.hpp.

Definition at line 49 of file DataSegment.hpp.

Definition at line 48 of file DataSegment.hpp.

Definition at line 46 of file DataSegment.hpp.

Definition at line 67 of file LinearScanAllocatorPass.hpp.

Definition at line 35 of file Loop.hpp.

Definition at line 35 of file LoopPass.hpp.

Definition at line 38 of file Loop.hpp.

Definition at line 43 of file Target.hpp.

Definition at line 117 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.

Definition at line 66 of file LinearScanAllocatorPass.hpp.

Definition at line 47 of file Target.hpp.

Definition at line 42 of file Target.hpp.

Definition at line 48 of file Matcher.hpp.

Definition at line 507 of file MachineOperand.hpp.

using cacao::jit::compiler2::PassUPtrTy = typedef std::unique_ptr<Pass>

Definition at line 53 of file PassManager.hpp.

typedef struct burm_state cacao::jit::compiler2::STATE_TYPE

Definition at line 49 of file Matcher.hpp.

Definition at line 41 of file Target.hpp.

Enumeration Type Documentation

Enumerator
LabelID 

Definition at line 38 of file CodeSegment.hpp.

Enumerator
DoubleID 
LongID 
FloatID 
IntID 
FMIRefID 

Definition at line 37 of file DataSegment.hpp.

Function Documentation

template<class _PassClass >
Pass* cacao::jit::compiler2::call_ctor ( )

Definition at line 188 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_intern

prolog end jit_compile_intern

epilog start jit_compile

Definition at line 123 of file Compiler.cpp.

int cacao::jit::compiler2::convert_to_type ( Type::TypeID  id)

Convert a Type::TypeID to a Type.

Parameters
idThe Type::TypeID to convert.
Returns
The Type enum value (as defined in vm/global.hpp) that corresponds to id.

Definition at line 69 of file Type.cpp.

Type::TypeID cacao::jit::compiler2::convert_to_typeid ( int  type)

Convert a Type to a Type::TypeID.

Parameters
typeOne of the Type enum values (as defined in vm/global.hpp).
Returns
The Type::TypeID that corresponds to type.

Definition at line 51 of file Type.cpp.

template<typename Tag , typename RefCategory >
u1& cacao::jit::compiler2::doAccess ( SegRef< Tag, RefCategory > &  ref,
std::size_t  i,
NormalRefCategory   
)
inline

access data

Definition at line 415 of file Segment.hpp.

template<typename Tag , typename RefCategory >
u1& cacao::jit::compiler2::doAccess ( SegRef< Tag, RefCategory > &  ref,
std::size_t  i,
ReverseRefCategory   
)
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 ( int  type)

Get the printable name of the type.

Parameters
typeOne of the Type enum values (as defined in vm/global.hpp).
Returns
The printable name of type

Definition at line 37 of file Type.cpp.

const char* cacao::jit::compiler2::get_type_name ( const Type::TypeID &  type)

Definition at line 106 of file Type.cpp.

template<typename Tag , typename RefCategory >
SegRef<Tag,RefCategory>::IdxTy cacao::jit::compiler2::getAddStartIndex ( SegRef< Tag, RefCategory > &  ref,
std::size_t  v,
NormalRefCategory   
)
inline

get subreference

Definition at line 430 of file Segment.hpp.

template<typename Tag , typename RefCategory >
SegRef<Tag,RefCategory>::IdxTy cacao::jit::compiler2::getAddStartIndex ( SegRef< Tag, RefCategory > &  ref,
std::size_t  v,
ReverseRefCategory   
)
inline

get subreference

Definition at line 436 of file Segment.hpp.

template<typename Tag , typename RefCategory >
SegRef<Tag,RefCategory>::IdxTy cacao::jit::compiler2::getBegin ( const SegRef< Tag, RefCategory > &  ref,
NormalRefCategory   
)
inline

get first index

Definition at line 443 of file Segment.hpp.

template<typename Tag , typename RefCategory >
SegRef<Tag,RefCategory>::IdxTy cacao::jit::compiler2::getBegin ( const SegRef< Tag, RefCategory > &  ref,
ReverseRefCategory   
)
inline

get first index

Definition at line 449 of file Segment.hpp.

template<typename Tag , typename RefCategory >
SegRef<Tag,RefCategory>::IdxTy cacao::jit::compiler2::getEnd ( const SegRef< Tag, RefCategory > &  ref,
NormalRefCategory   
)
inline

get last but one index

Definition at line 456 of file Segment.hpp.

template<typename Tag , typename RefCategory >
SegRef<Tag,RefCategory>::IdxTy cacao::jit::compiler2::getEnd ( const SegRef< Tag, RefCategory > &  ref,
ReverseRefCategory   
)
inline

get last but one index

Definition at line 462 of file Segment.hpp.

template<typename Tag , typename RefCategory >
Segment<Tag,RefCategory>::IdxTy cacao::jit::compiler2::getFollowingIndex ( const Segment< Tag, RefCategory > &  ref,
NormalRefCategory   
)
inline

Definition at line 469 of file Segment.hpp.

template<typename Tag , typename RefCategory >
Segment<Tag,RefCategory>::IdxTy cacao::jit::compiler2::getFollowingIndex ( const Segment< Tag, RefCategory > &  ref,
ReverseRefCategory   
)
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.

template<typename _NodeType >
edge<_NodeType> cacao::jit::compiler2::make_edge ( _NodeType  x,
_NodeType  y 
)

Definition at line 60 of file MethodC2.hpp.

template<class InputIterator >
void cacao::jit::compiler2::move_instructions ( InputIterator  first,
InputIterator  last,
MachineBasicBlock &  from,
MachineBasicBlock &  to 
)
inline

Move instructions to another basic block.

Note
this also updates the predecessor list for the target basic blocks of jump instructions. Example if a JUMP to BB_target is moved from BB_from to BB_to than all occurrences of BB_from in BB_targets predecessor list are replaced with BB_to.

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.

bool cacao::jit::compiler2::operator!= ( const UseDef &  lhs,
const UseDef &  rhs 
)
inline

Definition at line 396 of file LivetimeInterval.hpp.

bool cacao::jit::compiler2::operator< ( const Edge lhs,
const Edge rhs 
)
inline

Definition at line 60 of file LinearScanAllocatorPass.hpp.

bool cacao::jit::compiler2::operator< ( const UseDef &  lhs,
const UseDef &  rhs 
)
inline

less then operator

Definition at line 385 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 
)

Definition at line 34 of file Loop.cpp.

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 Value V 
)

Definition at line 35 of file Value.cpp.

OStream & cacao::jit::compiler2::operator<< ( OStream &  OS,
const Loop *  L 
)

Definition at line 38 of file Loop.cpp.

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 MIIterator &  it 
)

Definition at line 73 of file MachineBasicBlock.cpp.

OStream & cacao::jit::compiler2::operator<< ( OStream &  OS,
const Type::TypeID &  type 
)

Definition at line 84 of file Type.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 Value V 
)
inline

Definition at line 97 of file Value.hpp.

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.

OStream& cacao::jit::compiler2::operator<< ( OStream &  OS,
const Instruction &  I 
)
inline

Definition at line 267 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.

OStream& cacao::jit::compiler2::operator<< ( OStream &  OS,
MachineBasicBlock &  MBB 
)
inline

Definition at line 449 of file MachineBasicBlock.hpp.

OStream& cacao::jit::compiler2::operator<< ( OStream &  OS,
const MachineOperand &  MO 
)
inline

Definition at line 491 of file MachineOperand.hpp.

OStream& cacao::jit::compiler2::operator<< ( OStream &  OS,
const MachineOperand *  MO 
)
inline

Definition at line 494 of file MachineOperand.hpp.

template<class Type >
OStream& cacao::jit::compiler2::operator<< ( OStream &  OS,
SegmentTag< Type > &  tag 
)

Definition at line 500 of file Segment.hpp.

template<class Type >
OStream& cacao::jit::compiler2::operator<< ( OStream &  OS,
SegmentTag< Type > *  tag 
)
inline

Definition at line 504 of file Segment.hpp.

OStream& cacao::jit::compiler2::operator<< ( OStream &  OS,
const BeginInstRef &  BIR 
)
inline

Definition at line 532 of file Instructions.hpp.

bool cacao::jit::compiler2::operator<= ( const MIIterator &  lhs,
const MIIterator &  rhs 
)
inline

Definition at line 120 of file MachineBasicBlock.hpp.

bool cacao::jit::compiler2::operator<= ( const UseDef &  lhs,
const UseDef &  rhs 
)
inline

Definition at line 402 of file LivetimeInterval.hpp.

bool cacao::jit::compiler2::operator== ( const UseDef &  lhs,
const UseDef &  rhs 
)
inline

Definition at line 399 of file LivetimeInterval.hpp.

bool cacao::jit::compiler2::operator> ( const MIIterator &  lhs,
const MIIterator &  rhs 
)
inline

Definition at line 123 of file MachineBasicBlock.hpp.

bool cacao::jit::compiler2::operator>= ( const MIIterator &  lhs,
const MIIterator &  rhs 
)
inline

Definition at line 126 of file MachineBasicBlock.hpp.

void cacao::jit::compiler2::print_PassDependencyGraph ( )

Definition at line 127 of file PassDependencyGraphPrinter.cpp.

Variable Documentation

Option< bool > cacao::jit::compiler2::enabled

Definition at line 115 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 71 of file SSAPrinterPass.hpp.

Instruction::InstID cacao::jit::compiler2::tmp[]

Definition at line 55 of file Matcher.cpp.

PassRegistry<CFGMetaPass> cacao::jit::compiler2::X("CFGMetaPass")
static
PassRegistry<InstructionMetaPass> cacao::jit::compiler2::X("InstructionMetaPass")
static
PassRegistry<MachineLoopPass> cacao::jit::compiler2::X("MachineLoopPass")
static
PassRegistry<RegisterAllocatorPass> cacao::jit::compiler2::X("RegisterAllocatorPass")
static
PassRegistry<LoopPass> cacao::jit::compiler2::X("LoopPass")
static
PassRegistry<ParserPass> cacao::jit::compiler2::X("ParserPass")
static
PassRegistry<StackAnalysisPass> cacao::jit::compiler2::X("StackAnalysisPass")
static
PassRegistry<ICMDPrinterPass> cacao::jit::compiler2::X("ICMDPrinterPass")
static
PassRegistry<CFGConstructionPass> cacao::jit::compiler2::X("CFGConstructionPass")
static
PassRegistry<VerifierPass> cacao::jit::compiler2::X("VerifierPass")
static
PassRegistry<ExamplePass> cacao::jit::compiler2::X("ExamplePass")
static
PassRegistry<MachineInstructionPrinterPass> cacao::jit::compiler2::X("MachineInstructionPrinterPass")
static
PassRegistry<ScheduleClickPass> cacao::jit::compiler2::X("ScheduleClickPass")
static
PassRegistry<DisassemblerPass> cacao::jit::compiler2::X("DisassemblerPass")
static
PassRegistry<DomTreePrinterPass> cacao::jit::compiler2::X("DomTreePrinterPass")
static
PassRegistry<LoopTreePrinterPass> cacao::jit::compiler2::X("LoopTreePrinterPass")
static
PassRegistry<ScheduleEarlyPass> cacao::jit::compiler2::X("ScheduleEarlyPass")
static
PassRegistry<SourceStateAttachmentPass> cacao::jit::compiler2::X("SourceStateAttachmentPass")
static
PassRegistry<ScheduleLatePass> cacao::jit::compiler2::X("ScheduleLatePass")
static
PassRegistry<MachineInstructionSchedulingPass> cacao::jit::compiler2::X("MachineInstructionSchedulingPass")
static
PassRegistry<DominatorPass> cacao::jit::compiler2::X("DominatorPass")
static
PassRegistry<NullCheckEliminationPass> cacao::jit::compiler2::X("NullCheckEliminationPass")
static
PassRegistry<ListSchedulingPass> cacao::jit::compiler2::X("ListSchedulingPass")
static
PassRegistry<ObjectFileWriterPass> cacao::jit::compiler2::X("ObjectFileWriterPass")
static
PassRegistry<SSAPrinterPass> cacao::jit::compiler2::X("SSAPrinterPass")
static
PassRegistry<BasicBlockSchedulingPass> cacao::jit::compiler2::X("BasicBlockSchedulingPass")
static
PassRegistry<LivetimeAnalysisPass> cacao::jit::compiler2::X("LivetimeAnalysisPass")
static
PassRegistry<CodeGenPass> cacao::jit::compiler2::X("CodeGenPass")
static
PassRegistry<GlobalSchedulePrinterPass<ScheduleClickPass> > cacao::jit::compiler2::X_click("GlobalSchedulePrinterPass(click)")
static
PassRegistry<GlobalSchedulePrinterPass<ScheduleEarlyPass> > cacao::jit::compiler2::X_early("GlobalSchedulePrinterPass(early)")
static
PassRegistry<GlobalSchedulePrinterPass<ScheduleLatePass> > cacao::jit::compiler2::X_late("GlobalSchedulePrinterPass(late)")
static
PassRegistry<BasicBlockPrinterPass> cacao::jit::compiler2::Z("BasicBlockPrinterPass")
static