CACAO
Public Member Functions | Private Attributes
cacao::jit::compiler2::ScheduleLatePass Class Reference

ScheduleLatePass. More...

Inheritance diagram for cacao::jit::compiler2::ScheduleLatePass:
cacao::jit::compiler2::Pass cacao::jit::compiler2::memory::ManagerMixin< ScheduleLatePass > cacao::jit::compiler2::GlobalSchedule

Public Member Functions

void schedule_late (Instruction *I)
 
 ScheduleLatePass ()
 
virtual bool run (JITData &JD)
 Run the Pass. More...
 
virtual PassUsageget_PassUsage (PassUsage &PU) const
 Set the requirements for the pass. More...
 
- Public Member Functions inherited from cacao::jit::compiler2::Pass
 Pass ()
 
void set_PassRunner (PassRunner *pr)
 
template<class _PassClass >
_PassClass * get_Pass () const
 Get the result of a previous compiler pass. More...
 
template<class _PassClass >
_PassClass * get_Pass_if_available () const
 Get the result of a previous compiler pass. More...
 
virtual bool is_enabled () const
 Allows concrete passes to enable/disable themselves the way they like. More...
 
virtual void initialize ()
 Initialize the Pass. More...
 
virtual void finalize ()
 Finalize the Pass. More...
 
virtual bool verify () const
 Verify the Result. More...
 
virtual ~Pass ()
 Destructor. More...
 
- Public Member Functions inherited from cacao::jit::compiler2::GlobalSchedule
 GlobalSchedule ()
 
void add_Instruction (Instruction *I, BeginInst *BI)
 
BeginInstoperator[] (const Instruction *I) const
 
BeginInstget (const Instruction *I) const
 
const_inst_iterator inst_begin (const BeginInst *BI) const
 
const_inst_iterator inst_end (const BeginInst *BI) const
 

Private Attributes

DominatorTreeDT
 
LoopTreeLT
 
GlobalScheduleearly
 
MethodM
 

Additional Inherited Members

- Public Types inherited from cacao::jit::compiler2::GlobalSchedule
typedef alloc::unordered_set
< Instruction * >
::type::const_iterator 
const_inst_iterator
 
- Static Public Member Functions inherited from cacao::jit::compiler2::Pass
template<class T >
static PassInfo::IDTy ID ()
 This template will return a unique ID for each type that it is called with. More...
 
- Static Public Member Functions inherited from cacao::jit::compiler2::memory::ManagerMixin< ScheduleLatePass >
static voidoperator new (std::size_t size) throw (std::bad_alloc)
 normal new More...
 
static voidoperator new (std::size_t size, void *ptr) throw ()
 placement new More...
 
static voidoperator 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 voidoperator new[] (std::size_t size) throw (std::bad_alloc)
 normal new[] More...
 
static voidoperator new[] (std::size_t size, void *ptr) throw ()
 placement new[] More...
 
static voidoperator 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...
 
- Protected Member Functions inherited from cacao::jit::compiler2::GlobalSchedule
void set_schedule (const Method *M)
 
- Protected Attributes inherited from cacao::jit::compiler2::GlobalSchedule
alloc::unordered_map< const
Instruction *, BeginInst * >
::type 
map
 
alloc::unordered_map< const
BeginInst
*, alloc::unordered_set
< Instruction * >::type >
::type 
bb_map
 

Detailed Description

ScheduleLatePass.

Based on the algorithm in Click's Phd Thesis, Chapter 6 [2].

Definition at line 48 of file ScheduleLatePass.hpp.

Constructor & Destructor Documentation

cacao::jit::compiler2::ScheduleLatePass::ScheduleLatePass ( )
inline

Definition at line 56 of file ScheduleLatePass.hpp.

Member Function Documentation

PassUsage & cacao::jit::compiler2::ScheduleLatePass::get_PassUsage ( PassUsage PU) const
virtual

Set the requirements for the pass.

Reimplemented from cacao::jit::compiler2::Pass.

Definition at line 159 of file ScheduleLatePass.cpp.

bool cacao::jit::compiler2::ScheduleLatePass::run ( JITData JD)
virtual

Run the Pass.

This method implements the compiler pass.

Returns
false if a problem occurred, true otherwise

Implements cacao::jit::compiler2::Pass.

Definition at line 138 of file ScheduleLatePass.cpp.

void cacao::jit::compiler2::ScheduleLatePass::schedule_late ( Instruction I)

We want to schedule a block as late as possible, but outside of loop bodies (except for constants) In most cases constants can be encoded in the instructions.

Todo:
register pressure
Todo:
evaluate this!

Definition at line 83 of file ScheduleLatePass.cpp.

Field Documentation

DominatorTree* cacao::jit::compiler2::ScheduleLatePass::DT
private

Definition at line 50 of file ScheduleLatePass.hpp.

GlobalSchedule* cacao::jit::compiler2::ScheduleLatePass::early
private

Definition at line 52 of file ScheduleLatePass.hpp.

LoopTree* cacao::jit::compiler2::ScheduleLatePass::LT
private

Definition at line 51 of file ScheduleLatePass.hpp.

Method* cacao::jit::compiler2::ScheduleLatePass::M
private

Definition at line 53 of file ScheduleLatePass.hpp.


The documentation for this class was generated from the following files: