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

std::shared_ptr
< LivetimeIntervalImpl
pimpl
 

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 105 of file LivetimeInterval.hpp.

Member Typedef Documentation

Definition at line 114 of file LivetimeInterval.hpp.

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

Definition at line 108 of file LivetimeInterval.hpp.

Definition at line 113 of file LivetimeInterval.hpp.

Definition at line 116 of file LivetimeInterval.hpp.

Definition at line 112 of file LivetimeInterval.hpp.

Definition at line 107 of file LivetimeInterval.hpp.

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

Definition at line 109 of file LivetimeInterval.hpp.

Definition at line 115 of file LivetimeInterval.hpp.

Definition at line 111 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 118 of file LivetimeInterval.hpp.

Constructor & Destructor Documentation

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

constructor

Definition at line 280 of file LivetimeInterval.hpp.

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

copy constructor

Definition at line 281 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 286 of file LivetimeInterval.hpp.

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

Definition at line 320 of file LivetimeInterval.hpp.

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

Definition at line 305 of file LivetimeInterval.hpp.

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

Definition at line 371 of file LivetimeInterval.hpp.

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

Definition at line 374 of file LivetimeInterval.hpp.

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

Definition at line 377 of file LivetimeInterval.hpp.

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

Definition at line 314 of file LivetimeInterval.hpp.

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

Definition at line 308 of file LivetimeInterval.hpp.

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

Definition at line 317 of file LivetimeInterval.hpp.

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

Get the hint for the interval.

Definition at line 335 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 329 of file LivetimeInterval.hpp.

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

get next split interval

Definition at line 353 of file LivetimeInterval.hpp.

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

Get the current store of the interval.

Definition at line 323 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 326 of file LivetimeInterval.hpp.

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

Definition at line 292 of file LivetimeInterval.hpp.

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

Definition at line 295 of file LivetimeInterval.hpp.

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

Definition at line 356 of file LivetimeInterval.hpp.

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

Is def position.

Definition at line 301 of file LivetimeInterval.hpp.

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

Is use position.

Definition at line 298 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 341 of file LivetimeInterval.hpp.

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

copy assignment operator

Definition at line 282 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 289 of file LivetimeInterval.hpp.

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

Set the hit for the interval.

Definition at line 338 of file LivetimeInterval.hpp.

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

Set the current store of the interval.

Definition at line 332 of file LivetimeInterval.hpp.

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

Definition at line 311 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 344 of file LivetimeInterval.hpp.

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

Split interval at inactive pos.

Definition at line 347 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 350 of file LivetimeInterval.hpp.

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

Definition at line 361 of file LivetimeInterval.hpp.

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

Definition at line 364 of file LivetimeInterval.hpp.

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

Definition at line 367 of file LivetimeInterval.hpp.

Friends And Related Function Documentation

friend class LivetimeIntervalImpl
friend

Definition at line 196 of file LivetimeInterval.hpp.

Field Documentation

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

Definition at line 195 of file LivetimeInterval.hpp.


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