CACAO
Public Types | Public Member Functions | Private Attributes | Friends
cacao::jit::compiler2::LivetimeInterval Class Reference
Inheritance diagram for cacao::jit::compiler2::LivetimeInterval:
cacao::jit::compiler2::memory::ManagerMixin< LivetimeInterval >

Public Types

enum  State { Unhandled, Active, Inactive, Handled }
 
typedef alloc::list
< LivetimeRange >::type 
IntervalListTy
 
typedef
IntervalListTy::const_iterator 
const_iterator
 
typedef IntervalListTy::iterator iterator
 
typedef std::multiset< UseDefUseListTy
 
typedef std::multiset< UseDefDefListTy
 
typedef UseListTy::const_iterator const_use_iterator
 
typedef DefListTy::const_iterator const_def_iterator
 
typedef UseListTy::iterator use_iterator
 
typedef DefListTy::iterator def_iterator
 

Public Member Functions

 LivetimeInterval (MachineOperand *)
 constructor More...
 
 LivetimeInterval (const LivetimeInterval &other)
 copy constructor More...
 
LivetimeIntervaloperator= (const LivetimeInterval &other)
 copy assignment operator More...
 
void add_range (UseDef first, UseDef last)
 A range the range [first, last] to the interval. More...
 
void set_from (UseDef from, UseDef to)
 Set from. If no interval available add range from to. More...
 
State get_State (MIIterator pos) const
 
State get_State (UseDef pos) const
 
bool is_use_at (MIIterator pos) const
 Is use position. More...
 
bool is_def_at (MIIterator pos) const
 Is def position. More...
 
MachineOperandget_operand () const
 Get the current store of the interval. More...
 
MachineOperandget_operand (MIIterator pos) const
 Get the store of the interval at position pos. More...
 
void set_operand (MachineOperand *op)
 Set the current store of the interval. More...
 
MachineOperandget_hint () const
 Get the hint for the interval. More...
 
void set_hint (MachineOperand *op)
 Set the hit for the interval. More...
 
MachineOperandget_init_operand () const
 Get the initial operand. More...
 
LivetimeInterval split_active (MIIterator pos, UseDef *current=NULL)
 Split interval at active pos. More...
 
LivetimeInterval split_inactive (UseDef pos, MachineOperand *MO)
 Split interval at inactive pos. More...
 
LivetimeInterval split_phi_active (MIIterator pos, MachineOperand *MO)
 Split a phi input operand. More...
 
UseDef next_usedef_after (UseDef pos, UseDef end) const
 get next use def after pos (if not found return end) More...
 
LivetimeInterval get_next () const
 get next split interval More...
 
bool has_next () const
 
const_iterator begin () const
 
const_iterator end () const
 
std::size_t size () const
 
bool empty () const
 
LivetimeRange front () const
 
LivetimeRange back () const
 
const_use_iterator use_begin () const
 
const_use_iterator use_end () const
 
std::size_t use_size () const
 
const_def_iterator def_begin () const
 
const_def_iterator def_end () const
 
std::size_t def_size () const
 

Private Attributes

shared_ptr< LivetimeIntervalImplpimpl
 

Friends

class LivetimeIntervalImpl
 

Additional Inherited Members

- Static Public Member Functions inherited from cacao::jit::compiler2::memory::ManagerMixin< LivetimeInterval >
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...
 

Detailed Description

Definition at line 106 of file LivetimeInterval.hpp.

Member Typedef Documentation

Definition at line 115 of file LivetimeInterval.hpp.

typedef IntervalListTy::const_iterator cacao::jit::compiler2::LivetimeInterval::const_iterator

Definition at line 109 of file LivetimeInterval.hpp.

Definition at line 114 of file LivetimeInterval.hpp.

Definition at line 117 of file LivetimeInterval.hpp.

Definition at line 113 of file LivetimeInterval.hpp.

Definition at line 108 of file LivetimeInterval.hpp.

typedef IntervalListTy::iterator cacao::jit::compiler2::LivetimeInterval::iterator

Definition at line 110 of file LivetimeInterval.hpp.

Definition at line 116 of file LivetimeInterval.hpp.

Definition at line 112 of file LivetimeInterval.hpp.

Member Enumeration Documentation

Enumerator
Unhandled 

Interval no yet started.

Active 

Interval is live.

Inactive 

Interval is inactive.

Handled 

Interval is finished.

Definition at line 119 of file LivetimeInterval.hpp.

Constructor & Destructor Documentation

cacao::jit::compiler2::LivetimeInterval::LivetimeInterval ( MachineOperand op)
inlineexplicit

constructor

Definition at line 281 of file LivetimeInterval.hpp.

cacao::jit::compiler2::LivetimeInterval::LivetimeInterval ( const LivetimeInterval other)
inline

copy constructor

Definition at line 282 of file LivetimeInterval.hpp.

Member Function Documentation

void cacao::jit::compiler2::LivetimeInterval::add_range ( UseDef  first,
UseDef  last 
)
inline

A range the range [first, last] to the interval.

Definition at line 287 of file LivetimeInterval.hpp.

LivetimeRange cacao::jit::compiler2::LivetimeInterval::back ( ) const
inline

Definition at line 321 of file LivetimeInterval.hpp.

LivetimeInterval::const_iterator cacao::jit::compiler2::LivetimeInterval::begin ( ) const
inline

Definition at line 306 of file LivetimeInterval.hpp.

LivetimeInterval::const_def_iterator cacao::jit::compiler2::LivetimeInterval::def_begin ( ) const
inline

Definition at line 372 of file LivetimeInterval.hpp.

LivetimeInterval::const_def_iterator cacao::jit::compiler2::LivetimeInterval::def_end ( ) const
inline

Definition at line 375 of file LivetimeInterval.hpp.

std::size_t cacao::jit::compiler2::LivetimeInterval::def_size ( ) const
inline

Definition at line 378 of file LivetimeInterval.hpp.

bool cacao::jit::compiler2::LivetimeInterval::empty ( ) const
inline

Definition at line 315 of file LivetimeInterval.hpp.

LivetimeInterval::const_iterator cacao::jit::compiler2::LivetimeInterval::end ( ) const
inline

Definition at line 309 of file LivetimeInterval.hpp.

LivetimeRange cacao::jit::compiler2::LivetimeInterval::front ( ) const
inline

Definition at line 318 of file LivetimeInterval.hpp.

MachineOperand * cacao::jit::compiler2::LivetimeInterval::get_hint ( ) const
inline

Get the hint for the interval.

Definition at line 336 of file LivetimeInterval.hpp.

MachineOperand * cacao::jit::compiler2::LivetimeInterval::get_init_operand ( ) const
inline

Get the initial operand.

This is needed to identify phi instructions as they do not have an MIIterator associated with them.

Definition at line 330 of file LivetimeInterval.hpp.

LivetimeInterval cacao::jit::compiler2::LivetimeInterval::get_next ( ) const
inline

get next split interval

Definition at line 354 of file LivetimeInterval.hpp.

MachineOperand * cacao::jit::compiler2::LivetimeInterval::get_operand ( ) const
inline

Get the current store of the interval.

Definition at line 324 of file LivetimeInterval.hpp.

MachineOperand * cacao::jit::compiler2::LivetimeInterval::get_operand ( MIIterator  pos) const
inline

Get the store of the interval at position pos.

Definition at line 327 of file LivetimeInterval.hpp.

LivetimeInterval::State cacao::jit::compiler2::LivetimeInterval::get_State ( MIIterator  pos) const
inline

Definition at line 293 of file LivetimeInterval.hpp.

LivetimeInterval::State cacao::jit::compiler2::LivetimeInterval::get_State ( UseDef  pos) const
inline

Definition at line 296 of file LivetimeInterval.hpp.

bool cacao::jit::compiler2::LivetimeInterval::has_next ( ) const
inline

Definition at line 357 of file LivetimeInterval.hpp.

bool cacao::jit::compiler2::LivetimeInterval::is_def_at ( MIIterator  pos) const
inline

Is def position.

Definition at line 302 of file LivetimeInterval.hpp.

bool cacao::jit::compiler2::LivetimeInterval::is_use_at ( MIIterator  pos) const
inline

Is use position.

Definition at line 299 of file LivetimeInterval.hpp.

UseDef cacao::jit::compiler2::LivetimeInterval::next_usedef_after ( UseDef  pos,
UseDef  end 
) const
inline

get next use def after pos (if not found return end)

Definition at line 342 of file LivetimeInterval.hpp.

LivetimeInterval & cacao::jit::compiler2::LivetimeInterval::operator= ( const LivetimeInterval other)
inline

copy assignment operator

Definition at line 283 of file LivetimeInterval.hpp.

void cacao::jit::compiler2::LivetimeInterval::set_from ( UseDef  from,
UseDef  to 
)
inline

Set from. If no interval available add range from to.

Definition at line 290 of file LivetimeInterval.hpp.

void cacao::jit::compiler2::LivetimeInterval::set_hint ( MachineOperand op)
inline

Set the hit for the interval.

Definition at line 339 of file LivetimeInterval.hpp.

void cacao::jit::compiler2::LivetimeInterval::set_operand ( MachineOperand op)
inline

Set the current store of the interval.

Definition at line 333 of file LivetimeInterval.hpp.

std::size_t cacao::jit::compiler2::LivetimeInterval::size ( ) const
inline

Definition at line 312 of file LivetimeInterval.hpp.

LivetimeInterval cacao::jit::compiler2::LivetimeInterval::split_active ( MIIterator  pos,
UseDef current = NULL 
)
inline

Split interval at active pos.

Parameters
posMust be a move/copy instruction with one input and one output
currentmove UseDef's after current. If NULL, move UseDef's after pos

Definition at line 345 of file LivetimeInterval.hpp.

LivetimeInterval cacao::jit::compiler2::LivetimeInterval::split_inactive ( UseDef  pos,
MachineOperand MO 
)
inline

Split interval at inactive pos.

Definition at line 348 of file LivetimeInterval.hpp.

LivetimeInterval cacao::jit::compiler2::LivetimeInterval::split_phi_active ( MIIterator  pos,
MachineOperand MO 
)
inline

Split a phi input operand.

Definition at line 351 of file LivetimeInterval.hpp.

LivetimeInterval::const_use_iterator cacao::jit::compiler2::LivetimeInterval::use_begin ( ) const
inline

Definition at line 362 of file LivetimeInterval.hpp.

LivetimeInterval::const_use_iterator cacao::jit::compiler2::LivetimeInterval::use_end ( ) const
inline

Definition at line 365 of file LivetimeInterval.hpp.

std::size_t cacao::jit::compiler2::LivetimeInterval::use_size ( ) const
inline

Definition at line 368 of file LivetimeInterval.hpp.

Friends And Related Function Documentation

friend class LivetimeIntervalImpl
friend

Definition at line 197 of file LivetimeInterval.hpp.

Field Documentation

shared_ptr<LivetimeIntervalImpl> cacao::jit::compiler2::LivetimeInterval::pimpl
private

Definition at line 196 of file LivetimeInterval.hpp.


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