#include <order_governor.g.hh>
Inheritance diagram for lestes::backend_v2::workers::order_governor:

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_data > | get_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_pi > | 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 > | 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. | |
| virtual ptr< reflection_list > | reflection_get () const |
| for purposes of dumping | |
| virtual ptr< field_list_list > | field_values_get () const |
| for purposes of dumping | |
Static Public Member Functions | |
| static ptr< 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) |
| First generated factory method for class order_governor. | |
| static ptr< order_governor > | create (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_list > | reflection = reflection |
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.
Definition at line 64 of file order_governor.g.hh.
| typedef ulint lestes::backend_v2::workers::order_governor::level_t |
Definition at line 66 of file order_governor.g.hh.
| 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.
Definition at line 107 of file order_governor.g.cc.
Referenced by create().
00111 : worker_base(a__worker_base__data), pis_ordered(checked(a__order_governor__pis_ordered)), pis_unordered(a__order_governor__pis_unordered), is_ordered(checked(a__order_governor__is_ordered)) 00112 {}
| 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.
Definition at line 29 of file order_governor.g.cc.
References pis_ordered.
Referenced by process(), and torder_ordered().
00030 { 00031 return pis_ordered; 00032 }
| 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.
| [in] | x | The new value to set order_governor::pis_ordered to. |
Definition at line 38 of file order_governor.g.cc.
References pis_ordered.
Referenced by torder_ordered().
00039 { 00040 order_governor::pis_ordered = x; 00041 }
| 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.
Definition at line 47 of file order_governor.g.cc.
References pis_unordered.
Referenced by merge_ordered_with_unordered_level_X(), and process().
00048 { 00049 return pis_unordered; 00050 }
| 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.
| [in] | x | The new value to set order_governor::pis_unordered to. |
Definition at line 56 of file order_governor.g.cc.
References pis_unordered.
00057 { 00058 order_governor::pis_unordered = x; 00059 }
| 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.
Definition at line 65 of file order_governor.g.cc.
References is_ordered.
Referenced by torder_ordered().
00066 { 00067 return is_ordered; 00068 }
| 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.
| [in] | x | The new value to set order_governor::is_ordered to. |
Definition at line 74 of file order_governor.g.cc.
References is_ordered.
00075 { 00076 order_governor::is_ordered = x; 00077 }
| void lestes::backend_v2::workers::order_governor::process | ( | ) | [virtual] |
Manages linearization.
Implements lestes::backend_v2::workers::worker_base.
Definition at line 30 of file order_governor.cc.
References lestes::backend_v2::workers::worker_base::data_get(), lestes::msg::eolog, identify_level_0(), linearize_ordered_sps(), merge_ordered_with_unordered_level_X(), pis_ordered_get(), pis_unordered, pis_unordered_get(), renumber_levels(), shift_unordered_nsp_psp(), and torder_ordered().
00031 { 00032 og_log << "Process begin\n" << eolog; 00033 00034 pis_unordered = data_get()->pi_body_get(); 00035 00036 //Find pis with level set to 0. 00037 identify_level_0(); 00038 00039 //Repeat loop while there are any unordered pis. 00040 while( !pis_unordered_get()->empty() ) { 00041 og_log << "Main loop begin.\n" << eolog; 00042 00043 //Find unordered pis with level=1 and move them to the ordered set. 00044 merge_ordered_with_unordered_level_X(1); 00045 //Order merged level 0&1 set. 00046 torder_ordered(); 00047 //Linearize ordered sps. 00048 linearize_ordered_sps(); 00049 //Move psp and nsp pointers. 00050 shift_unordered_nsp_psp(); 00051 //Recalculate levels for unordered pis. 00052 renumber_levels(pis_unordered_get()); 00053 //Recalculate levels for ordered pis. 00054 renumber_levels(pis_ordered_get()); 00055 00056 og_log << "Main loop end.\n" << eolog; 00057 } 00058 00059 og_log << "Process end.\n" << eolog; 00060 }
| 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.
Definition at line 381 of file order_governor.cc.
References lestes::backend_v2::workers::worker_base::data_get(), lassert, and pis_ordered.
00382 { 00383 lassert(pis_ordered); 00384 00385 ptr<visitor_pi_pi2id> pi_id_getter = visitor_pi_pi2id::create(); 00386 00387 /* 00388 Set psp to the previous pi_sp (now it can also be pi_pi). 00389 */ 00390 ptr<pi_sp> tmp_sp = NULL; 00391 for(pi_list_type::iterator it_pi_list = pis_ordered->begin(); it_pi_list!=pis_ordered->end(); ++it_pi_list) { 00392 ptr<pi_pi> pi = *it_pi_list; 00393 00394 visitor_pi_pi2id::kind_type pi_id = (visitor_pi_pi2id::kind_type)pi->accept_visitor_pi_pi2ulint_gen_base(pi_id_getter); 00395 00396 //Set psp to previous sequencepoint (now psp can be pi_sp or pi_pi ) 00397 pi->psp_set(tmp_sp); 00398 00399 //Add pi to an output list 00400 if ( pi_id==visitor_pi_pi2id::PI_SP ) { 00401 tmp_sp = pi.dncast<pi_sp>(); 00402 } 00403 00404 } 00405 00406 /* 00407 Set nsp to the following pi_sp (now it can also be pi_pi). 00408 */ 00409 tmp_sp = NULL; 00410 for(pi_list_type::reverse_iterator it_pi_list = pis_ordered->rbegin(); it_pi_list!=pis_ordered->rend(); ++it_pi_list) { 00411 ptr<pi_pi> pi = *it_pi_list; 00412 00413 visitor_pi_pi2id::kind_type pi_id = (visitor_pi_pi2id::kind_type)pi->accept_visitor_pi_pi2ulint_gen_base(pi_id_getter); 00414 00415 pi->nsp_set(tmp_sp); 00416 00417 if ( pi_id==visitor_pi_pi2id::PI_SP ) { 00418 tmp_sp = pi.dncast<pi_sp>(); 00419 } 00420 } 00421 00422 data_get()->pi_body_set(pis_ordered); 00423 00424 return data_get(); 00425 }
| 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.
| level_to_merge | The level to be merged. |
Definition at line 87 of file order_governor.cc.
References lestes::msg::eolog, pis_ordered, pis_unordered, and pis_unordered_get().
Referenced by identify_level_0(), and process().
00088 { 00089 //Go through the unordered set. 00090 for(pi_list_type::iterator it = pis_unordered_get()->begin(); it != pis_unordered_get()->end();) { 00091 if ( (*it)->level_get() == level_to_merge ) { 00092 og_log << "Merging L0 with L" << level_to_merge << ": " << (*it)->reflection_get()->back()->name_get() << "(" << (*it)->uid_get() << ")[level=" << (*it)->level_get() << "] added\n" << eolog;; 00093 00094 //Current pi has the right level. Move it to the ordered set. 00095 pis_ordered->push_back(*it); 00096 //Delete it from unordered set. 00097 it = pis_unordered->erase(it); 00098 } else { 00099 ++it; 00100 } 00101 } 00102 00103 }
| 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.
Definition at line 140 of file order_governor.cc.
References lestes::msg::eolog, is_ordered, is_ordered_get(), lassert2, nsp_for_any(), pi_operands_origins_ordered(), pis_ordered_get(), and pis_ordered_set().
Referenced by process().
00141 { 00142 00143 og_log << "Tordering begin\n" << eolog; 00144 00145 //The getter can obtain operands from any generic pi. 00146 ptr<visitor_pi_pi2pi_operands> operands_getter = visitor_pi_pi2pi_operands::create(); 00147 00148 //identificator can identify kind of any generic pi 00149 ptr<visitor_pi_pi2id> identificator = visitor_pi_pi2id::create(); 00150 00151 //List of ordered pis. No pi is ordered at the beginning. 00152 ptr<pi_list_type> tordered_list = pi_list_type::create(); 00153 //List of unordered pis. Every pi is unordered at the beginning. 00154 ptr<pi_list_type> tunordered_list = pis_ordered_get(); 00155 00156 //Set is_ordered=false for all unordered pis. 00157 pi_list_type::iterator it; 00158 for(it=tunordered_list->begin(); it != tunordered_list->end(); it++) { 00159 (*is_ordered)[*it] = false; 00160 } 00161 00162 #ifdef BACKEND_V2_DEBUG 00163 //infinite loop detection 00164 ulint dbg = 0; 00165 #endif 00166 00167 //Repeat loop while there are any unordered pis. 00168 while( !tunordered_list->empty()) { 00169 00170 #ifdef BACKEND_V2_DEBUG 00171 lassert2(dbg<=tunordered_list->size(),"An inifinite loop detected."); 00172 dbg++; 00173 #endif 00174 00175 //Get first unorderd pi. 00176 ptr<pi_pi> pi = tunordered_list->front(); 00177 00178 //Remove it from unordered set. 00179 tunordered_list->pop_front(); 00180 00181 og_log << "Tordering: trying order " << pi->reflection_get()->back()->name_get() << "(" << pi->uid_get() << ")\n" << eolog; 00182 00183 if ( pi->psp_get() && (*is_ordered_get())[pi->psp_get()] == false ) { 00184 //Psp is unordered. So this pi is also unordered. 00185 tunordered_list->push_back(pi); 00186 00187 og_log << "\tTordering: current pi can't be ordered (psp is not ordered yet)\n" << eolog; 00188 00189 continue; 00190 } 00191 00192 //Get it's operands. 00193 ptr<pi_operands> operands = pi->accept_visitor_pi_pi2pi_operands_gen_base(operands_getter); 00194 /* Test if every input operand's origin is ordered. 00195 ( Do not test output operands - its origin is set to the current pi. ) 00196 */ 00197 00198 if ( !pi_operands_origins_ordered(operands->operands_input_get()) ) { 00199 //One of operands hasn't got its origin ordered 00200 tunordered_list->push_back(pi); 00201 00202 og_log << "\tTordering: current pi can't be ordered (origins of operands are not ordered yet)\n" << eolog; 00203 00204 continue; 00205 } 00206 00207 if ( nsp_for_any(pi, tunordered_list) ) { 00208 //It is pi_sp and it is nsp for one of unordered pis. 00209 tunordered_list->push_back(pi); 00210 00211 og_log << "\tTordering: current pi can't be ordered (sp is nsp for unorderd pi)\n" << eolog; 00212 00213 continue; 00214 } 00215 00216 (*is_ordered_get())[pi] = true; 00217 tordered_list->push_back(pi); 00218 00219 og_log << "\tTordering: " << pi->reflection_get()->back()->name_get() << "(" << pi->uid_get() << ") is set as ordered\n" << eolog; 00220 00221 #ifdef BACKEND_V2_DEBUG 00222 dbg = 0; 00223 #endif 00224 00225 } 00226 00227 //We have new bigger ordered set. 00228 pis_ordered_set(tordered_list); 00229 00230 og_log << "Tordering end\n" << eolog; 00231 }
| bool lestes::backend_v2::workers::order_governor::pi_operands_origins_ordered | ( | ptr< vector< srp< ::lestes::backend_v2::intercode::pi_operand > > > | operand_list | ) |
| void lestes::backend_v2::workers::order_governor::renumber_levels | ( | ptr< list< srp< ::lestes::backend_v2::intercode::pi_pi > > > | pi_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.
Referenced by torder_ordered().
| void lestes::backend_v2::workers::order_governor::identify_level_0 | ( | ) |
Moves pseudoinstructions of level 0 from pis_unordered to pis_ordered list.
Definition at line 66 of file order_governor.cc.
References is_ordered, merge_ordered_with_unordered_level_X(), pis_ordered, and pis_unordered.
Referenced by process().
00067 { 00068 //the ordered set is empty. Copy pis with level=0 to it. 00069 merge_ordered_with_unordered_level_X(0); 00070 00071 //Set is_ordered=true for all pis with level=0. 00072 pi_list_type::iterator it; 00073 for(it=pis_ordered->begin(); it != pis_ordered->end(); it++) { 00074 (*is_ordered)[*it] = true; 00075 } 00076 00077 //Set is_ordered=false for all pis with level>0. 00078 for(it=pis_unordered->begin(); it != pis_unordered->end(); it++) { 00079 (*is_ordered)[*it] = false; 00080 } 00081 }
| void lestes::backend_v2::workers::order_governor::linearize_ordered_sps | ( | ) |
Linearizes sequencepoints in pis_ordered list.
Definition at line 108 of file order_governor.cc.
References pis_ordered.
Referenced by process().
00108 { 00109 ptr<visitor_pi_pi2id> identificator = visitor_pi_pi2id::create(); 00110 /* 00111 Go through ordered list and for each pi_sp set psp to the previous one 00112 and previous one's nsp to this sp. 00113 */ 00114 ptr<pi_pi> previous = NULL; 00115 ptr<pi_pi> current = NULL; 00116 pi_list_type::iterator it; 00117 for(it=pis_ordered->begin(); it != pis_ordered->end(); it++) { 00118 00119 //if ( (*it)->accept_visitor_pi_pi2ulint_gen_base(identificator) == visitor_pi_pi2id::PI_SP ) { 00120 //current pi is type of pi_sp 00121 current = (*it); 00122 00123 if ( previous ) { 00124 previous->nsp_set(current); 00125 } 00126 current->psp_set(previous); 00127 previous = current; 00128 //} 00129 } 00130 current->nsp_set(NULL); 00131 }
| void lestes::backend_v2::workers::order_governor::shift_unordered_nsp_psp | ( | ) |
Shifts psp and nsp of pis_unordered pseudoinstructions.
Definition at line 323 of file order_governor.cc.
References conjugated_chain_end_find(), conjugated_chain_start_find(), lestes::msg::eolog, get_pi_level(), lassert, and pis_unordered.
Referenced by process().
00324 { 00325 //Move psp and nsp of unordered pis. 00326 pi_list_type::iterator it; 00327 for(it = pis_unordered->begin(); it!=pis_unordered->end(); it++) { 00328 ptr<pi_pi> pi = (*it); 00329 00330 og_log << "shift_unordered_nsp_psp: pi(" << pi->uid_get() << ").level= " << get_pi_level(pi) << "\n" << msg::eolog; 00331 00332 lassert(get_pi_level(pi)>1); 00333 00334 if ( get_pi_level(pi->psp_get())==0 ) { 00335 ptr<pi_pi> pi_hlp = conjugated_chain_end_find(pi); 00336 00337 og_log << "shift_psp: chain_end(" << pi_hlp->uid_get() << ").nsp.level=" << get_pi_level(pi_hlp->nsp_get()) << "\n" << msg::eolog; 00338 00339 lassert(get_pi_level(pi_hlp)==get_pi_level(pi)); 00340 00341 if (get_pi_level(pi_hlp->nsp_get())>0){ 00342 pi->psp_set(pi_hlp->nsp_get()->psp_get()); 00343 } 00344 00345 } else if ( get_pi_level(pi->nsp_get())==0 ) { 00346 ptr<pi_pi> pi_hlp = conjugated_chain_start_find(pi); 00347 00348 og_log << "shift_nsp: chain_begin(" << pi_hlp->uid_get() << ").psp.level=" << get_pi_level(pi_hlp->psp_get()) << "\n" << msg::eolog; 00349 00350 lassert(get_pi_level(pi_hlp)==get_pi_level(pi)); 00351 00352 if (get_pi_level(pi_hlp->psp_get())>0) { 00353 pi->nsp_set(pi_hlp->psp_get()->nsp_get()); 00354 } 00355 } 00356 } 00357 }
| lint lestes::backend_v2::workers::order_governor::get_pi_level | ( | ptr< ::lestes::backend_v2::intercode::pi_pi > | pi | ) |
| 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.
Referenced by shift_unordered_nsp_psp().
| 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.
Referenced by shift_unordered_nsp_psp().
| 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.
Definition at line 83 of file order_governor.g.cc.
References order_governor().
Referenced by create().
00087 { 00088 return ptr< order_governor > ( new order_governor(a__worker_base__data, 00089 a__order_governor__pis_ordered, 00090 a__order_governor__pis_unordered, 00091 a__order_governor__is_ordered) ); 00092 }
| 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.
Definition at line 98 of file order_governor.g.cc.
References create(), and order_governor().
00099 { 00100 return ptr< order_governor > ( new order_governor(a__worker_base__data, ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_pi > > ::create(), NULL, ::lestes::std::map< srp< ::lestes::backend_v2::intercode::pi_pi >, bool > ::create()) ); 00101 }
| 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.
Definition at line 114 of file order_governor.g.cc.
References lestes::std::list< T >::create(), reflection, and lestes::backend_v2::workers::worker_base::reflection_get().
00115 { 00116 if (!reflection) { 00117 typedef class_reflection::field_metadata md; 00118 typedef class_reflection::field_metadata_list mdlist; 00119 ptr<mdlist> mdl = mdlist::create(); 00120 mdl->push_back( md::create( "pis_ordered", "list< srp< ::lestes::backend_v2::intercode::pi_pi > >" ) ); 00121 mdl->push_back( md::create( "pis_unordered", "list< srp< ::lestes::backend_v2::intercode::pi_pi > >" ) ); 00122 mdl->push_back( md::create( "is_ordered", "map< srp< ::lestes::backend_v2::intercode::pi_pi >, bool >" ) ); 00123 reflection = reflection_list::create( worker_base::reflection_get() ); 00124 reflection->push_back( class_reflection::create( "order_governor", mdl ) ); 00125 } 00126 return reflection; 00127 }
| 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.
Definition at line 129 of file order_governor.g.cc.
References lestes::std::list< T >::create(), and lestes::backend_v2::workers::worker_base::field_values_get().
00130 { 00131 ptr < field_list_list > result = worker_base::field_values_get(); 00132 result->push_back( value_list::create() ); 00133 result->back()->push_back( this->pis_ordered ); 00134 result->push_back( value_list::create() ); 00135 result->back()->push_back( this->pis_unordered ); 00136 result->push_back( value_list::create() ); 00137 result->back()->push_back( this->is_ordered ); 00138 return result; 00139 }
| 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.
Reimplemented from lestes::backend_v2::workers::worker_base.
Definition at line 146 of file order_governor.g.cc.
References lestes::backend_v2::workers::worker_base::gc_mark().
00147 { 00148 worker_base::gc_mark(); 00149 }
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.
Definition at line 155 of file order_governor.g.hh.
Referenced by get_result(), identify_level_0(), linearize_ordered_sps(), merge_ordered_with_unordered_level_X(), pis_ordered_get(), and pis_ordered_set().
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.
Definition at line 157 of file order_governor.g.hh.
Referenced by identify_level_0(), merge_ordered_with_unordered_level_X(), pis_unordered_get(), pis_unordered_set(), process(), and shift_unordered_nsp_psp().
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.
Definition at line 159 of file order_governor.g.hh.
Referenced by identify_level_0(), is_ordered_get(), is_ordered_set(), and torder_ordered().
ptr< object::reflection_list > lestes::backend_v2::workers::order_governor::reflection = reflection [static, private] |
Reimplemented from lestes::backend_v2::workers::worker_base.
Definition at line 160 of file order_governor.g.hh.
Referenced by reflection_get().
1.5.1-20070107