lestes::backend_v2::workers::order_governor Class Reference

Linearizes pseudopinstructions within function's body. More...

#include <order_governor.g.hh>

Inheritance diagram for lestes::backend_v2::workers::order_governor:

Inheritance graph
[legend]
List of all members.

Public Types

typedef ulint level_t

Public Member Functions

ptr< ::lestes::std::list<
srp< ::lestes::backend_v2::intercode::pi_pi > > > 
pis_ordered_get () const
 The method pis_ordered_get returns the value of the field order_governor::pis_ordered.
void pis_ordered_set (const ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > &)
 The method pis_ordered_set sets the field order_governor::pis_ordered to the given value.
ptr< ::lestes::std::list<
srp< ::lestes::backend_v2::intercode::pi_pi > > > 
pis_unordered_get () const
 The method pis_unordered_get returns the value of the field order_governor::pis_unordered.
void pis_unordered_set (const ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > &)
 The method pis_unordered_set sets the field order_governor::pis_unordered to the given value.
ptr< ::lestes::std::map< srp<
::lestes::backend_v2::intercode::pi_pi >,
bool > > 
is_ordered_get () const
 The method is_ordered_get returns the value of the field order_governor::is_ordered.
void is_ordered_set (const ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_pi >, bool > > &)
 The method is_ordered_set sets the field order_governor::is_ordered to the given value.
void process ()
 Manages linearization.
ptr< ::lestes::backend_v2::structs::func_dataget_result ()
 Returns func_data with linearized pseudoinstructions.
void merge_ordered_with_unordered_level_X (level_t level_to_merge)
 Merges unordered pseudoinstructions of given level with ordered pseudoinstructions.
void torder_ordered ()
 Linearizes pis_ordered list.
bool pi_operands_origins_ordered (ptr< vector< srp< ::lestes::backend_v2::intercode::pi_operand > > > operand_list)
 Tells whether origin of each operand in list is ordered.
void renumber_levels (ptr< list< srp< ::lestes::backend_v2::intercode::pi_pi > > > pi_list)
 Decrease by 1 level of pseudoinstructions in a list.
bool nsp_for_any (ptr< ::lestes::backend_v2::intercode::pi_pi > sp, ptr< list< srp< ::lestes::backend_v2::intercode::pi_pi > > > list)
 Tells whether a sequencepoint is psp for any of pseudoinstructions in a list.
void identify_level_0 ()
 Moves pseudoinstructions of level 0 from pis_unordered to pis_ordered list.
void linearize_ordered_sps ()
 Linearizes sequencepoints in pis_ordered list.
void shift_unordered_nsp_psp ()
 Shifts psp and nsp of pis_unordered pseudoinstructions.
lint get_pi_level (ptr< ::lestes::backend_v2::intercode::pi_pi > pi)
 Returns level of a pi_pi pseudoinstruction.
ptr< ::lestes::backend_v2::intercode::pi_piconjugated_chain_end_find (ptr< ::lestes::backend_v2::intercode::pi_pi > pi)
 Gets last pi_pi pseudoinstruction of chain where two consequent pi_pi point with psp and nsp to each other.
ptr< ::lestes::backend_v2::intercode::pi_piconjugated_chain_start_find (ptr< ::lestes::backend_v2::intercode::pi_pi > pi)
 Gets first pi_pi pseudoinstruction of chain where two consequent pi_pi point with psp and nsp to each other.
virtual ptr< reflection_listreflection_get () const
 for purposes of dumping
virtual ptr< field_list_listfield_values_get () const
 for purposes of dumping

Static Public Member Functions

static ptr< order_governorcreate (ptr< ::lestes::backend_v2::structs::func_data > a__worker_base__data, ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > a__order_governor__pis_ordered, ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > a__order_governor__pis_unordered, ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_pi >, bool > > a__order_governor__is_ordered)
 First generated factory method for class order_governor.
static ptr< order_governorcreate (ptr< ::lestes::backend_v2::structs::func_data > a__worker_base__data)
 Second generated factory method for class order_governor.

Protected Member Functions

 order_governor (ptr< ::lestes::backend_v2::structs::func_data > a__worker_base__data, ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > a__order_governor__pis_ordered, ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > a__order_governor__pis_unordered, ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_pi >, bool > > a__order_governor__is_ordered)
 Generated constructor for class order_governor.
virtual void gc_mark ()
 Marking routine for class order_governor.

Private Attributes

srp< ::lestes::std::list<
srp< ::lestes::backend_v2::intercode::pi_pi > > > 
pis_ordered
 List of already linearized pseudoinstructions.
srp< ::lestes::std::list<
srp< ::lestes::backend_v2::intercode::pi_pi > > > 
pis_unordered
 List of not yet linerized pseudoinstructions.
srp< ::lestes::std::map< srp<
::lestes::backend_v2::intercode::pi_pi >,
bool > > 
is_ordered
 Map that tells whether a pseudoinstruction is already in ordered list.

Static Private Attributes

static ptr< reflection_listreflection = reflection

Detailed Description

Linearizes pseudopinstructions within function's body.

Result of linearization is order where every pseudoinstruction is positioned between its psp and nsp sequencepoints and after origins of its operands. It means that pseudoinstruction is executed after all its origins are ready.


Member Typedef Documentation

typedef ulint lestes::backend_v2::workers::order_governor::level_t


Constructor & Destructor Documentation

lestes::backend_v2::workers::order_governor::order_governor ( ptr< ::lestes::backend_v2::structs::func_data a__worker_base__data,
ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > >  a__order_governor__pis_ordered,
ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > >  a__order_governor__pis_unordered,
ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_pi >, bool > >  a__order_governor__is_ordered 
) [protected]

Generated constructor for class order_governor.

Generated constructor for class order_governor.

Author:
lsg


Member Function Documentation

ptr<::lestes::std::list< srp<::lestes::backend_v2::intercode::pi_pi > > > lestes::backend_v2::workers::order_governor::pis_ordered_get (  )  const

The method pis_ordered_get returns the value of the field order_governor::pis_ordered.

Returns:
The value of order_governor::pis_ordered.
Author:
lsg

void lestes::backend_v2::workers::order_governor::pis_ordered_set ( const ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > &  x  ) 

The method pis_ordered_set sets the field order_governor::pis_ordered to the given value.

Parameters:
[in] x The new value to set order_governor::pis_ordered to.
Author:
lsg

ptr<::lestes::std::list< srp<::lestes::backend_v2::intercode::pi_pi > > > lestes::backend_v2::workers::order_governor::pis_unordered_get (  )  const

The method pis_unordered_get returns the value of the field order_governor::pis_unordered.

Returns:
The value of order_governor::pis_unordered.
Author:
lsg

void lestes::backend_v2::workers::order_governor::pis_unordered_set ( const ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > &  x  ) 

The method pis_unordered_set sets the field order_governor::pis_unordered to the given value.

Parameters:
[in] x The new value to set order_governor::pis_unordered to.
Author:
lsg

ptr<::lestes::std::map< srp<::lestes::backend_v2::intercode::pi_pi >, bool > > lestes::backend_v2::workers::order_governor::is_ordered_get (  )  const

The method is_ordered_get returns the value of the field order_governor::is_ordered.

Returns:
The value of order_governor::is_ordered.
Author:
lsg

void lestes::backend_v2::workers::order_governor::is_ordered_set ( const ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_pi >, bool > > &  x  ) 

The method is_ordered_set sets the field order_governor::is_ordered to the given value.

Parameters:
[in] x The new value to set order_governor::is_ordered to.
Author:
lsg

void lestes::backend_v2::workers::order_governor::process (  )  [virtual]

Manages linearization.

Implements lestes::backend_v2::workers::worker_base.

ptr< func_data > lestes::backend_v2::workers::order_governor::get_result (  )  [virtual]

Returns func_data with linearized pseudoinstructions.

Implements lestes::backend_v2::workers::worker_base.

void lestes::backend_v2::workers::order_governor::merge_ordered_with_unordered_level_X ( level_t  level_to_merge  ) 

Merges unordered pseudoinstructions of given level with ordered pseudoinstructions.

Parameters:
level_to_merge The level to be merged.

void lestes::backend_v2::workers::order_governor::torder_ordered (  ) 

Linearizes pis_ordered list.

Performs topological ordering in directed acyclic graph. Vertices are pseudoinstructions from pis_ordered list. Incoming edges for pseudoinstruction pi are psp->pi and origin->pi for each pi's operand. Outcoming edge is pi->nsp.

bool lestes::backend_v2::workers::order_governor::pi_operands_origins_ordered ( ptr< vector< srp< ::lestes::backend_v2::intercode::pi_operand > > >  operand_list  ) 

Tells whether origin of each operand in list is ordered.

void lestes::backend_v2::workers::order_governor::renumber_levels ( ptr< list< srp< ::lestes::backend_v2::intercode::pi_pi > > >  pi_list  ) 

Decrease by 1 level of pseudoinstructions in a list.

bool lestes::backend_v2::workers::order_governor::nsp_for_any ( ptr< ::lestes::backend_v2::intercode::pi_pi sp,
ptr< list< srp< ::lestes::backend_v2::intercode::pi_pi > > >  list 
)

Tells whether a sequencepoint is psp for any of pseudoinstructions in a list.

void lestes::backend_v2::workers::order_governor::identify_level_0 (  ) 

Moves pseudoinstructions of level 0 from pis_unordered to pis_ordered list.

void lestes::backend_v2::workers::order_governor::linearize_ordered_sps (  ) 

Linearizes sequencepoints in pis_ordered list.

void lestes::backend_v2::workers::order_governor::shift_unordered_nsp_psp (  ) 

Shifts psp and nsp of pis_unordered pseudoinstructions.

lint lestes::backend_v2::workers::order_governor::get_pi_level ( ptr< ::lestes::backend_v2::intercode::pi_pi pi  ) 

Returns level of a pi_pi pseudoinstruction.

ptr< ::lestes::backend_v2::intercode::pi_pi > lestes::backend_v2::workers::order_governor::conjugated_chain_end_find ( ptr< ::lestes::backend_v2::intercode::pi_pi pi  ) 

Gets last pi_pi pseudoinstruction of chain where two consequent pi_pi point with psp and nsp to each other.

ptr< ::lestes::backend_v2::intercode::pi_pi > lestes::backend_v2::workers::order_governor::conjugated_chain_start_find ( ptr< ::lestes::backend_v2::intercode::pi_pi pi  ) 

Gets first pi_pi pseudoinstruction of chain where two consequent pi_pi point with psp and nsp to each other.

ptr< order_governor > lestes::backend_v2::workers::order_governor::create ( ptr< ::lestes::backend_v2::structs::func_data a__worker_base__data,
ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > >  a__order_governor__pis_ordered,
ptr< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > >  a__order_governor__pis_unordered,
ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_pi >, bool > >  a__order_governor__is_ordered 
) [static]

First generated factory method for class order_governor.

This factory method for class order_governor takes values of all fields as arguments.

Author:
lsg

ptr< order_governor > lestes::backend_v2::workers::order_governor::create ( ptr< ::lestes::backend_v2::structs::func_data a__worker_base__data  )  [static]

Second generated factory method for class order_governor.

This factory method for class order_governor uses initializers.

Author:
lsg

ptr< object::reflection_list > lestes::backend_v2::workers::order_governor::reflection_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::backend_v2::workers::worker_base.

ptr< object::field_list_list > lestes::backend_v2::workers::order_governor::field_values_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::backend_v2::workers::worker_base.

void lestes::backend_v2::workers::order_governor::gc_mark ( void   )  [protected, virtual]

Marking routine for class order_governor.

Marking routine is used for garbage collection.

Author:
lsg

Reimplemented from lestes::backend_v2::workers::worker_base.


Member Data Documentation

srp< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > lestes::backend_v2::workers::order_governor::pis_ordered [private]

List of already linearized pseudoinstructions.

srp< ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > > lestes::backend_v2::workers::order_governor::pis_unordered [private]

List of not yet linerized pseudoinstructions.

srp< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_pi >, bool > > lestes::backend_v2::workers::order_governor::is_ordered [private]

Map that tells whether a pseudoinstruction is already in ordered list.

ptr< object::reflection_list > lestes::backend_v2::workers::order_governor::reflection = reflection [static, private]

Reimplemented from lestes::backend_v2::workers::worker_base.


The documentation for this class was generated from the following files:
Generated on Mon Feb 12 18:43:16 2007 for lestes by doxygen 1.5.1-20070107