25 #ifndef _JIT_COMPILER2_LINEARSCANALLOCATORPASS
26 #define _JIT_COMPILER2_LINEARSCANALLOCATORPASS
41 class MachineInstructionSchedule;
42 class MachineInstruction;
57 predecessor(predecessor), successor(successor) {}
109 bool allocate_unhandled();
112 bool order_and_insert_move(EdgeMoveMapTy::value_type &entry,
BBtoLTI_Map &bb2lti_map);
118 virtual void initialize();
121 virtual bool verify()
const;
Pass superclass All compiler passes should inheritate this class.
MachineInstructionSchedule * MIS
Edge(MachineBasicBlock *predecessor, MachineBasicBlock *successor)
Move(MachineOperand *from, MachineOperand *to)
alloc::map< Edge, MoveMapTy >::type EdgeMoveMapTy
alloc::priority_queue< LivetimeInterval, alloc::deque< LivetimeInterval >::type, StartComparator >::type UnhandledSetTy
Custom new/delete handler mixin.
A basic block of (scheduled) machine instructions.
bool operator<(const NativeMethod &first, const NativeMethod &second)
alloc::map< MachineBasicBlock *, alloc::list< LivetimeInterval >::type >::type BBtoLTI_Map
alloc::list< MachineInstruction * >::type MoveListTy
MachineBasicBlock * current
std::list< T, Allocator< T > > type
alloc::list< LivetimeInterval >::type ActiveSetTy
MachineBasicBlock * predecessor
alloc::list< Move >::type MoveMapTy
Stores the interdependencies of a pass.
alloc::list< LivetimeInterval >::type InactiveSetTy
bool is_scheduled() const
LinearScanAllocatorPass()
LivetimeAnalysisPass * LA
Operands that can be directly used by the machine (register, memory, stackslot)
alloc::list< LivetimeInterval >::type HandledSetTy
alloc::set< Instruction * >::type & scheduled
MachineBasicBlock * successor