CACAO
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
cacao::jit::compiler2::LoopTreeBase< _T > Class Template Reference
Inheritance diagram for cacao::jit::compiler2::LoopTreeBase< _T >:
cacao::jit::compiler2::LoopPassBase< _T >

Public Types

typedef _T NodeType
 
typedef LoopBase< NodeTypeLoopType
 
typedef LoopType::LoopSetTy LoopSetTy
 
typedef LoopSetTy::iterator loop_iterator
 
typedef LoopSetTy::const_iterator const_loop_iterator
 
typedef std::pair
< const_loop_iterator,
const_loop_iterator
ConstLoopIteratorPair
 
typedef alloc::vector
< LoopType * >::type 
LoopListTy
 
typedef LoopListTy::iterator iterator
 
typedef
LoopListTy::reverse_iterator 
reverse_iterator
 

Public Member Functions

 LoopTreeBase ()
 
bool is_reducible () const
 
LoopTypeadd_loop (NodeType *header, NodeType *exit)
 
void add_top_loop (LoopType *loop)
 
loop_iterator loop_begin ()
 
loop_iterator loop_end ()
 
LoopTypeget_Loop (NodeType *BI) const
 Get the inner most loop which contains BI or NULL if not contained in any loop. More...
 
bool is_loop_header (NodeType *BI) const
 
ConstLoopIteratorPair get_Loops_from_header (NodeType *BI) const
 
bool is_backedge (NodeType *src, NodeType *header) const
 
bool is_inner_loop (LoopType *inner, LoopType *outer) const
 Test if a loop is a strictly inner loop of another loop. More...
 
int loop_nest (LoopType *loop) const
 TODO: cache? More...
 
virtual ~LoopTreeBase ()
 

Protected Member Functions

void set_loop (NodeType *node, LoopType *loop)
 
void insert_loop_header (NodeType *node, LoopType *loop)
 
iterator begin ()
 
iterator end ()
 
reverse_iterator rbegin ()
 
reverse_iterator rend ()
 

Protected Attributes

bool reducible
 
LoopListTy loops
 
LoopSetTy top_loops
 
alloc::map< NodeType
*, LoopType * >::type 
loop_map
 
alloc::map< NodeType
*, LoopSetTy >::type 
loop_header_map
 

Detailed Description

template<class _T>
class cacao::jit::compiler2::LoopTreeBase< _T >

Definition at line 85 of file LoopBase.hpp.

Member Typedef Documentation

Definition at line 92 of file LoopBase.hpp.

Definition at line 93 of file LoopBase.hpp.

template<class _T >
typedef LoopListTy::iterator cacao::jit::compiler2::LoopTreeBase< _T >::iterator

Definition at line 96 of file LoopBase.hpp.

Definition at line 91 of file LoopBase.hpp.

template<class _T >
typedef alloc::vector<LoopType*>::type cacao::jit::compiler2::LoopTreeBase< _T >::LoopListTy

Definition at line 95 of file LoopBase.hpp.

Definition at line 90 of file LoopBase.hpp.

template<class _T >
typedef LoopBase<NodeType> cacao::jit::compiler2::LoopTreeBase< _T >::LoopType

Definition at line 88 of file LoopBase.hpp.

template<class _T >
typedef _T cacao::jit::compiler2::LoopTreeBase< _T >::NodeType

Definition at line 87 of file LoopBase.hpp.

template<class _T >
typedef LoopListTy::reverse_iterator cacao::jit::compiler2::LoopTreeBase< _T >::reverse_iterator

Definition at line 97 of file LoopBase.hpp.

Constructor & Destructor Documentation

template<class _T >
cacao::jit::compiler2::LoopTreeBase< _T >::LoopTreeBase ( )
inline

Definition at line 124 of file LoopBase.hpp.

template<class _T >
virtual cacao::jit::compiler2::LoopTreeBase< _T >::~LoopTreeBase ( )
inlinevirtual

Definition at line 214 of file LoopBase.hpp.

Member Function Documentation

template<class _T >
LoopType* cacao::jit::compiler2::LoopTreeBase< _T >::add_loop ( NodeType header,
NodeType exit 
)
inline

Definition at line 129 of file LoopBase.hpp.

template<class _T >
void cacao::jit::compiler2::LoopTreeBase< _T >::add_top_loop ( LoopType loop)
inline

Definition at line 134 of file LoopBase.hpp.

template<class _T >
iterator cacao::jit::compiler2::LoopTreeBase< _T >::begin ( )
inlineprotected

Definition at line 111 of file LoopBase.hpp.

template<class _T >
iterator cacao::jit::compiler2::LoopTreeBase< _T >::end ( )
inlineprotected

Definition at line 114 of file LoopBase.hpp.

template<class _T >
LoopType* cacao::jit::compiler2::LoopTreeBase< _T >::get_Loop ( NodeType BI) const
inline

Get the inner most loop which contains BI or NULL if not contained in any loop.

Definition at line 148 of file LoopBase.hpp.

template<class _T >
ConstLoopIteratorPair cacao::jit::compiler2::LoopTreeBase< _T >::get_Loops_from_header ( NodeType BI) const
inline

Definition at line 162 of file LoopBase.hpp.

template<class _T >
void cacao::jit::compiler2::LoopTreeBase< _T >::insert_loop_header ( NodeType node,
LoopType loop 
)
inlineprotected

Definition at line 108 of file LoopBase.hpp.

template<class _T >
bool cacao::jit::compiler2::LoopTreeBase< _T >::is_backedge ( NodeType src,
NodeType header 
) const
inline

Definition at line 171 of file LoopBase.hpp.

template<class _T >
bool cacao::jit::compiler2::LoopTreeBase< _T >::is_inner_loop ( LoopType inner,
LoopType outer 
) const
inline

Test if a loop is a strictly inner loop of another loop.

Note that a loop is not an inner loop of itself!

Definition at line 187 of file LoopBase.hpp.

template<class _T >
bool cacao::jit::compiler2::LoopTreeBase< _T >::is_loop_header ( NodeType BI) const
inline

Definition at line 155 of file LoopBase.hpp.

template<class _T >
bool cacao::jit::compiler2::LoopTreeBase< _T >::is_reducible ( ) const
inline

Definition at line 126 of file LoopBase.hpp.

template<class _T >
loop_iterator cacao::jit::compiler2::LoopTreeBase< _T >::loop_begin ( )
inline

Definition at line 139 of file LoopBase.hpp.

template<class _T >
loop_iterator cacao::jit::compiler2::LoopTreeBase< _T >::loop_end ( )
inline

Definition at line 142 of file LoopBase.hpp.

template<class _T >
int cacao::jit::compiler2::LoopTreeBase< _T >::loop_nest ( LoopType loop) const
inline

TODO: cache?

Definition at line 205 of file LoopBase.hpp.

template<class _T >
reverse_iterator cacao::jit::compiler2::LoopTreeBase< _T >::rbegin ( )
inlineprotected

Definition at line 117 of file LoopBase.hpp.

template<class _T >
reverse_iterator cacao::jit::compiler2::LoopTreeBase< _T >::rend ( )
inlineprotected

Definition at line 120 of file LoopBase.hpp.

template<class _T >
void cacao::jit::compiler2::LoopTreeBase< _T >::set_loop ( NodeType node,
LoopType loop 
)
inlineprotected

Definition at line 105 of file LoopBase.hpp.

Field Documentation

template<class _T >
alloc::map<NodeType*,LoopSetTy>::type cacao::jit::compiler2::LoopTreeBase< _T >::loop_header_map
protected

Definition at line 103 of file LoopBase.hpp.

template<class _T >
alloc::map<NodeType*,LoopType*>::type cacao::jit::compiler2::LoopTreeBase< _T >::loop_map
protected

Definition at line 102 of file LoopBase.hpp.

template<class _T >
LoopListTy cacao::jit::compiler2::LoopTreeBase< _T >::loops
protected

Definition at line 100 of file LoopBase.hpp.

template<class _T >
bool cacao::jit::compiler2::LoopTreeBase< _T >::reducible
protected

Definition at line 99 of file LoopBase.hpp.

template<class _T >
LoopSetTy cacao::jit::compiler2::LoopTreeBase< _T >::top_loops
protected

Definition at line 101 of file LoopBase.hpp.


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