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

Public Member Functions | |
| bool | dumb_scheduling_get () const |
| The method dumb_scheduling_get returns the value of the field scheduler::dumb_scheduling. | |
| void | dumb_scheduling_set (bool) |
| The method dumb_scheduling_set sets the field scheduler::dumb_scheduling to the given value. | |
| ulint | current_schedule_pos_get () const |
| The method current_schedule_pos_get returns the value of the field scheduler::current_schedule_pos. | |
| void | current_schedule_pos_set (ulint) |
| The method current_schedule_pos_set sets the field scheduler::current_schedule_pos to the given value. | |
| ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< schedule_item > > > | ge2si_get () const |
| The method ge2si_get returns the value of the field scheduler::ge2si. | |
| void | ge2si_set (const ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< schedule_item > > > &) |
| The method ge2si_set sets the field scheduler::ge2si to the given value. | |
| void | process () |
| Schedules pseudoinstructions of a function body. | |
| ptr< ::lestes::backend_v2::structs::func_data > | get_result () |
| Returns data of the processed function with scheduled body. | |
| ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi > > > | process_bb (ptr< ::lestes::backend_v2::workers::basic_block > bb) |
| ptr< set< srp< ::lestes::backend_v2::workers::schedule_item > > > | find_schedule_items (ptr< ::lestes::backend_v2::workers::basic_block > bb) |
| void | find_critical_paths (ptr< set< srp< ::lestes::backend_v2::workers::schedule_item > > > items) |
| ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi > > > | schedule_items (ptr< set< srp< schedule_item > > > items) |
| ptr< schedule_item > | create_schedule_item (ptr< ::lestes::backend_v2::intercode::ge_pi > ge) |
| void | check_waiting_set (ptr< set< srp< schedule_item > > > waiting) |
| bool | find_dependence_loop (ptr< schedule_item > start, ptr< schedule_item > curr, ulint depth) |
| Recursively searches for a dependence loops. | |
| 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< scheduler > | create (ptr< ::lestes::backend_v2::structs::func_data > a__worker_base__data, bool a__scheduler__dumb_scheduling, ulint a__scheduler__current_schedule_pos, ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< schedule_item > > > a__scheduler__ge2si) |
| First generated factory method for class scheduler. | |
| static ptr< scheduler > | create (ptr< ::lestes::backend_v2::structs::func_data > a__worker_base__data) |
| Second generated factory method for class scheduler. | |
Protected Member Functions | |
| scheduler (ptr< ::lestes::backend_v2::structs::func_data > a__worker_base__data, bool a__scheduler__dumb_scheduling, ulint a__scheduler__current_schedule_pos, ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< schedule_item > > > a__scheduler__ge2si) | |
| Generated constructor for class scheduler. | |
| virtual void | gc_mark () |
| Marking routine for class scheduler. | |
Private Attributes | |
| bool | dumb_scheduling |
| A switch that turns on/off "dumb scheduling". | |
| ulint | current_schedule_pos |
| A schedule position of a currently scheduled pseudoinstruction. | |
| srp< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< schedule_item > > > | ge2si |
| A map between a pseudoinstruction and a corresponding schedule_item. | |
Static Private Attributes | |
| static ptr< reflection_list > | reflection = reflection |
Definition at line 68 of file scheduler.g.hh.
| lestes::backend_v2::workers::scheduler::scheduler | ( | ptr< ::lestes::backend_v2::structs::func_data > | a__worker_base__data, | |
| bool | a__scheduler__dumb_scheduling, | |||
| ulint | a__scheduler__current_schedule_pos, | |||
| ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< schedule_item > > > | a__scheduler__ge2si | |||
| ) | [protected] |
Generated constructor for class scheduler.
Generated constructor for class scheduler.
Definition at line 108 of file scheduler.g.cc.
Referenced by create().
00112 : worker_base(a__worker_base__data), dumb_scheduling(a__scheduler__dumb_scheduling), current_schedule_pos(a__scheduler__current_schedule_pos), ge2si(checked(a__scheduler__ge2si)) 00113 {}
| bool lestes::backend_v2::workers::scheduler::dumb_scheduling_get | ( | ) | const |
The method dumb_scheduling_get returns the value of the field scheduler::dumb_scheduling.
Definition at line 30 of file scheduler.g.cc.
References dumb_scheduling.
00031 { 00032 return dumb_scheduling; 00033 }
| void lestes::backend_v2::workers::scheduler::dumb_scheduling_set | ( | bool | x | ) |
The method dumb_scheduling_set sets the field scheduler::dumb_scheduling to the given value.
| [in] | x | The new value to set scheduler::dumb_scheduling to. |
Definition at line 39 of file scheduler.g.cc.
References dumb_scheduling.
00040 { 00041 scheduler::dumb_scheduling = x; 00042 }
| ulint lestes::backend_v2::workers::scheduler::current_schedule_pos_get | ( | ) | const |
The method current_schedule_pos_get returns the value of the field scheduler::current_schedule_pos.
Definition at line 48 of file scheduler.g.cc.
References current_schedule_pos.
00049 { 00050 return current_schedule_pos; 00051 }
| void lestes::backend_v2::workers::scheduler::current_schedule_pos_set | ( | ulint | x | ) |
The method current_schedule_pos_set sets the field scheduler::current_schedule_pos to the given value.
| [in] | x | The new value to set scheduler::current_schedule_pos to. |
Definition at line 57 of file scheduler.g.cc.
References current_schedule_pos.
00058 { 00059 scheduler::current_schedule_pos = x; 00060 }
| ptr<::lestes::std::map< srp<::lestes::backend_v2::intercode::ge_pi >, srp< schedule_item > > > lestes::backend_v2::workers::scheduler::ge2si_get | ( | ) | const |
The method ge2si_get returns the value of the field scheduler::ge2si.
Definition at line 66 of file scheduler.g.cc.
References ge2si.
00067 { 00068 return ge2si; 00069 }
| void lestes::backend_v2::workers::scheduler::ge2si_set | ( | const ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< schedule_item > > > & | x | ) |
The method ge2si_set sets the field scheduler::ge2si to the given value.
| [in] | x | The new value to set scheduler::ge2si to. |
Definition at line 75 of file scheduler.g.cc.
References ge2si.
00076 { 00077 scheduler::ge2si = x; 00078 }
| void lestes::backend_v2::workers::scheduler::process | ( | ) | [virtual] |
Schedules pseudoinstructions of a function body.
Implements lestes::backend_v2::workers::worker_base.
Definition at line 35 of file scheduler.cc.
References current_schedule_pos, lestes::backend_v2::workers::worker_base::data_get(), lestes::msg::eolog, and process_bb().
00035 { 00036 schedlog << "process start\n" << eolog; 00037 00038 ptr<ge_pi_list__type> body = ge_pi_list__type::create(); 00039 00040 current_schedule_pos = 0; 00041 00042 ptr<bb_vector__type> bbs = data_get()->bbs_get(); 00043 00044 for(bb_vector__type::iterator it = bbs->begin(); it!=bbs->end(); ++it) { 00045 ptr<basic_block> bb = *it; 00046 00047 //Insert fsp of the basic block to the body 00048 body->push_back(bb->fsp_get()); 00049 bb->fsp_get()->schedule_pos_set(current_schedule_pos++); 00050 00051 //Insert scheduled instructions of the block to the body 00052 ptr<ge_pi_vector__type> output = process_bb(bb); 00053 body->insert(body->end(), output->begin(), output->end()); 00054 } 00055 00056 //Insert the last sequencepoint to the body 00057 ptr<ge_pi> lsp = bbs->back()->lsp_get(); 00058 lsp->schedule_pos_set(current_schedule_pos); 00059 body->push_back(lsp); 00060 00061 data_get()->ge_body_set(body); 00062 00063 schedlog << "process end\n" << eolog; 00064 }
| ptr< func_data > lestes::backend_v2::workers::scheduler::get_result | ( | ) | [virtual] |
Returns data of the processed function with scheduled body.
Implements lestes::backend_v2::workers::worker_base.
Definition at line 398 of file scheduler.cc.
References lestes::backend_v2::workers::worker_base::data_get().
00398 { 00399 return data_get(); 00400 }
| ptr<vector<srp< ::lestes::backend_v2::intercode::ge_pi> > > lestes::backend_v2::workers::scheduler::process_bb | ( | ptr< ::lestes::backend_v2::workers::basic_block > | bb | ) |
Referenced by process().
| ptr<set<srp< ::lestes::backend_v2::workers::schedule_item> > > lestes::backend_v2::workers::scheduler::find_schedule_items | ( | ptr< ::lestes::backend_v2::workers::basic_block > | bb | ) |
| void lestes::backend_v2::workers::scheduler::find_critical_paths | ( | ptr< set< srp< ::lestes::backend_v2::workers::schedule_item > > > | items | ) |
| ptr<vector<srp< ::lestes::backend_v2::intercode::ge_pi> > > lestes::backend_v2::workers::scheduler::schedule_items | ( | ptr< set< srp< schedule_item > > > | items | ) |
| ptr< schedule_item > lestes::backend_v2::workers::scheduler::create_schedule_item | ( | ptr< ::lestes::backend_v2::intercode::ge_pi > | ge | ) |
| void lestes::backend_v2::workers::scheduler::check_waiting_set | ( | ptr< set< srp< schedule_item > > > | waiting | ) |
| bool lestes::backend_v2::workers::scheduler::find_dependence_loop | ( | ptr< schedule_item > | start, | |
| ptr< schedule_item > | curr, | |||
| ulint | depth | |||
| ) |
Recursively searches for a dependence loops.
NOTE: For debugging purposes.
Definition at line 183 of file scheduler.cc.
00183 { 00184 if ( depth > 4 ) { 00185 return false; 00186 } 00187 00188 ptr<si_set__type> deps = curr->in_deps_get(); 00189 00190 for(si_set__type::iterator it = deps->begin(); it!=deps->end(); ++it) { 00191 ptr<schedule_item> dep = *it; 00192 00193 if ( dep==start || find_dependence_loop(start,dep,depth+1)) { 00194 schedlog << "find_dependence_loop found:item=" << curr->uid_get() << "\n" << eolog; 00195 return true; 00196 } 00197 } 00198 00199 return false; 00200 }
| ptr< scheduler > lestes::backend_v2::workers::scheduler::create | ( | ptr< ::lestes::backend_v2::structs::func_data > | a__worker_base__data, | |
| bool | a__scheduler__dumb_scheduling, | |||
| ulint | a__scheduler__current_schedule_pos, | |||
| ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< schedule_item > > > | a__scheduler__ge2si | |||
| ) | [static] |
First generated factory method for class scheduler.
This factory method for class scheduler takes values of all fields as arguments.
Definition at line 84 of file scheduler.g.cc.
References scheduler().
Referenced by create().
00088 { 00089 return ptr< scheduler > ( new scheduler(a__worker_base__data, 00090 a__scheduler__dumb_scheduling, 00091 a__scheduler__current_schedule_pos, 00092 a__scheduler__ge2si) ); 00093 }
| ptr< scheduler > lestes::backend_v2::workers::scheduler::create | ( | ptr< ::lestes::backend_v2::structs::func_data > | a__worker_base__data | ) | [static] |
Second generated factory method for class scheduler.
This factory method for class scheduler uses initializers.
Definition at line 99 of file scheduler.g.cc.
References create(), and scheduler().
00100 { 00101 return ptr< scheduler > ( new scheduler(a__worker_base__data, false, 0, ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< schedule_item > > ::create()) ); 00102 }
| ptr< object::reflection_list > lestes::backend_v2::workers::scheduler::reflection_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::backend_v2::workers::worker_base.
Definition at line 115 of file scheduler.g.cc.
References lestes::std::list< T >::create(), reflection, and lestes::backend_v2::workers::worker_base::reflection_get().
00116 { 00117 if (!reflection) { 00118 typedef class_reflection::field_metadata md; 00119 typedef class_reflection::field_metadata_list mdlist; 00120 ptr<mdlist> mdl = mdlist::create(); 00121 mdl->push_back( md::create( "dumb_scheduling", "bool" ) ); 00122 mdl->push_back( md::create( "current_schedule_pos", "ulint" ) ); 00123 mdl->push_back( md::create( "ge2si", "map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< schedule_item > >" ) ); 00124 reflection = reflection_list::create( worker_base::reflection_get() ); 00125 reflection->push_back( class_reflection::create( "scheduler", mdl ) ); 00126 } 00127 return reflection; 00128 }
| ptr< object::field_list_list > lestes::backend_v2::workers::scheduler::field_values_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::backend_v2::workers::worker_base.
Definition at line 130 of file scheduler.g.cc.
References lestes::std::list< T >::create(), and lestes::backend_v2::workers::worker_base::field_values_get().
00131 { 00132 ptr < field_list_list > result = worker_base::field_values_get(); 00133 result->push_back( value_list::create() ); 00134 result->back()->push_back( objectize< bool > ::create( this->dumb_scheduling ) ); 00135 result->push_back( value_list::create() ); 00136 result->back()->push_back( objectize< ulint > ::create( this->current_schedule_pos ) ); 00137 result->push_back( value_list::create() ); 00138 result->back()->push_back( this->ge2si ); 00139 return result; 00140 }
| void lestes::backend_v2::workers::scheduler::gc_mark | ( | void | ) | [protected, virtual] |
Marking routine for class scheduler.
Marking routine is used for garbage collection.
Reimplemented from lestes::backend_v2::workers::worker_base.
Definition at line 147 of file scheduler.g.cc.
References lestes::backend_v2::workers::worker_base::gc_mark().
00148 { 00149 worker_base::gc_mark(); 00150 }
bool lestes::backend_v2::workers::scheduler::dumb_scheduling [private] |
A switch that turns on/off "dumb scheduling".
Dumb scheduling = instruction execution time is ignored; it takes care only about instruction dependencies.
Definition at line 141 of file scheduler.g.hh.
Referenced by dumb_scheduling_get(), and dumb_scheduling_set().
ulint lestes::backend_v2::workers::scheduler::current_schedule_pos [private] |
A schedule position of a currently scheduled pseudoinstruction.
Definition at line 143 of file scheduler.g.hh.
Referenced by current_schedule_pos_get(), current_schedule_pos_set(), and process().
srp< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_pi >, srp< schedule_item > > > lestes::backend_v2::workers::scheduler::ge2si [private] |
A map between a pseudoinstruction and a corresponding schedule_item.
Definition at line 145 of file scheduler.g.hh.
Referenced by ge2si_get(), and ge2si_set().
ptr< object::reflection_list > lestes::backend_v2::workers::scheduler::reflection = reflection [static, private] |
Reimplemented from lestes::backend_v2::workers::worker_base.
Definition at line 146 of file scheduler.g.hh.
Referenced by reflection_get().
1.5.1-20070107