00001
00002
00003
00004
00005
00006
00007
00008 #include <lestes/backend_v2/structs/func_data.g.hh>
00009 #include <lestes/backend_v2/intercode/ge.g.hh>
00010 #include <lestes/backend_v2/workers/alloc_int_finder.g.hh>
00011 #include <lestes/md/registers/tm_register.g.hh>
00012
00013 #include <lestes/std/list.hh>
00014 #include <lestes/std/pair.hh>
00015 #include <lestes/std/reflect.hh>
00016
00017 #include <lestes/backend_v2/workers/linscan_regalloc.g.hh>
00018
00019 package(lestes);
00020 package(backend_v2);
00021 package(workers);
00022
00023
00024
00025
00026
00027
00028
00029
00030 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > linscan_regalloc::active_intervals_get() const
00031 {
00032 return active_intervals;
00033 }
00034
00035
00036
00037
00038
00039 void linscan_regalloc::active_intervals_set(const ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > & x)
00040 {
00041 linscan_regalloc::active_intervals = x;
00042 }
00043
00044
00045
00046
00047
00048 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > linscan_regalloc::expired_intervals_get() const
00049 {
00050 return expired_intervals;
00051 }
00052
00053
00054
00055
00056
00057 void linscan_regalloc::expired_intervals_set(const ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > & x)
00058 {
00059 linscan_regalloc::expired_intervals = x;
00060 }
00061
00062
00063
00064
00065
00066 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > linscan_regalloc::waiting_intervals_get() const
00067 {
00068 return waiting_intervals;
00069 }
00070
00071
00072
00073
00074
00075 void linscan_regalloc::waiting_intervals_set(const ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > & x)
00076 {
00077 linscan_regalloc::waiting_intervals = x;
00078 }
00079
00080
00081
00082
00083
00084 ptr< ::lestes::std::map< ulint, srp< ::lestes::backend_v2::workers::alloc_interval > > > linscan_regalloc::register_owners_get() const
00085 {
00086 return register_owners;
00087 }
00088
00089
00090
00091
00092
00093 void linscan_regalloc::register_owners_set(const ptr< ::lestes::std::map< ulint, srp< ::lestes::backend_v2::workers::alloc_interval > > > & x)
00094 {
00095 linscan_regalloc::register_owners = x;
00096 }
00097
00098
00099
00100
00101
00102 ptr< ::lestes::std::set< ulint > > linscan_regalloc::free_registers_get() const
00103 {
00104 return free_registers;
00105 }
00106
00107
00108
00109
00110
00111 void linscan_regalloc::free_registers_set(const ptr< ::lestes::std::set< ulint > > & x)
00112 {
00113 linscan_regalloc::free_registers = x;
00114 }
00115
00116
00117
00118
00119
00120 ptr< ::lestes::std::set< ulint > > linscan_regalloc::used_registers_get() const
00121 {
00122 return used_registers;
00123 }
00124
00125
00126
00127
00128
00129 void linscan_regalloc::used_registers_set(const ptr< ::lestes::std::set< ulint > > & x)
00130 {
00131 linscan_regalloc::used_registers = x;
00132 }
00133
00134
00135
00136
00137
00138 ptr< ::lestes::std::set< ulint > > linscan_regalloc::all_registers_get() const
00139 {
00140 return all_registers;
00141 }
00142
00143
00144
00145
00146
00147 void linscan_regalloc::all_registers_set(const ptr< ::lestes::std::set< ulint > > & x)
00148 {
00149 linscan_regalloc::all_registers = x;
00150 }
00151
00152
00153
00154
00155
00156 ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_operand_reg >, srp< ::lestes::md::registers::tm_register > > > linscan_regalloc::destroyers_get() const
00157 {
00158 return destroyers;
00159 }
00160
00161
00162
00163
00164
00165 void linscan_regalloc::destroyers_set(const ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_operand_reg >, srp< ::lestes::md::registers::tm_register > > > & x)
00166 {
00167 linscan_regalloc::destroyers = x;
00168 }
00169
00170
00171
00172
00173
00174 ptr< linscan_regalloc > linscan_regalloc::create(ptr< ::lestes::backend_v2::structs::func_data > a__worker_base__data,
00175 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > a__linscan_regalloc__active_intervals,
00176 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > a__linscan_regalloc__expired_intervals,
00177 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > a__linscan_regalloc__waiting_intervals,
00178 ptr< ::lestes::std::map< ulint, srp< ::lestes::backend_v2::workers::alloc_interval > > > a__linscan_regalloc__register_owners,
00179 ptr< ::lestes::std::set< ulint > > a__linscan_regalloc__free_registers,
00180 ptr< ::lestes::std::set< ulint > > a__linscan_regalloc__used_registers,
00181 ptr< ::lestes::std::set< ulint > > a__linscan_regalloc__all_registers,
00182 ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_operand_reg >, srp< ::lestes::md::registers::tm_register > > > a__linscan_regalloc__destroyers)
00183 {
00184 return ptr< linscan_regalloc > ( new linscan_regalloc(a__worker_base__data,
00185 a__linscan_regalloc__active_intervals,
00186 a__linscan_regalloc__expired_intervals,
00187 a__linscan_regalloc__waiting_intervals,
00188 a__linscan_regalloc__register_owners,
00189 a__linscan_regalloc__free_registers,
00190 a__linscan_regalloc__used_registers,
00191 a__linscan_regalloc__all_registers,
00192 a__linscan_regalloc__destroyers) );
00193 }
00194
00195
00196
00197
00198
00199 ptr< linscan_regalloc > linscan_regalloc::create(ptr< ::lestes::backend_v2::structs::func_data > a__worker_base__data)
00200 {
00201 return ptr< linscan_regalloc > ( new linscan_regalloc(a__worker_base__data, ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > ::create(), ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > ::create(), NULL, ::lestes::std::map< ulint, srp< ::lestes::backend_v2::workers::alloc_interval > > ::create(), ::lestes::std::set< ulint > ::create(), ::lestes::std::set< ulint > ::create(), ::lestes::std::set< ulint > ::create(), ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_operand_reg >, srp< ::lestes::md::registers::tm_register > > ::create()) );
00202 }
00203
00204
00205
00206
00207
00208 linscan_regalloc::linscan_regalloc (ptr< ::lestes::backend_v2::structs::func_data > a__worker_base__data,
00209 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > a__linscan_regalloc__active_intervals,
00210 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > a__linscan_regalloc__expired_intervals,
00211 ptr< ::lestes::std::vector< srp< ::lestes::backend_v2::workers::alloc_interval > > > a__linscan_regalloc__waiting_intervals,
00212 ptr< ::lestes::std::map< ulint, srp< ::lestes::backend_v2::workers::alloc_interval > > > a__linscan_regalloc__register_owners,
00213 ptr< ::lestes::std::set< ulint > > a__linscan_regalloc__free_registers,
00214 ptr< ::lestes::std::set< ulint > > a__linscan_regalloc__used_registers,
00215 ptr< ::lestes::std::set< ulint > > a__linscan_regalloc__all_registers,
00216 ptr< ::lestes::std::map< srp< ::lestes::backend_v2::intercode::ge_operand_reg >, srp< ::lestes::md::registers::tm_register > > > a__linscan_regalloc__destroyers)
00217 : worker_base(a__worker_base__data), active_intervals(checked(a__linscan_regalloc__active_intervals)), expired_intervals(checked(a__linscan_regalloc__expired_intervals)), waiting_intervals(a__linscan_regalloc__waiting_intervals), register_owners(checked(a__linscan_regalloc__register_owners)), free_registers(checked(a__linscan_regalloc__free_registers)), used_registers(checked(a__linscan_regalloc__used_registers)), all_registers(checked(a__linscan_regalloc__all_registers)), destroyers(checked(a__linscan_regalloc__destroyers))
00218 {}
00219
00220 ptr< object::reflection_list > linscan_regalloc::reflection_get() const
00221 {
00222 if (!reflection) {
00223 typedef class_reflection::field_metadata md;
00224 typedef class_reflection::field_metadata_list mdlist;
00225 ptr<mdlist> mdl = mdlist::create();
00226 mdl->push_back( md::create( "active_intervals", "vector< srp< ::lestes::backend_v2::workers::alloc_interval > >" ) );
00227 mdl->push_back( md::create( "expired_intervals", "vector< srp< ::lestes::backend_v2::workers::alloc_interval > >" ) );
00228 mdl->push_back( md::create( "waiting_intervals", "vector< srp< ::lestes::backend_v2::workers::alloc_interval > >" ) );
00229 mdl->push_back( md::create( "register_owners", "map< ulint, srp< ::lestes::backend_v2::workers::alloc_interval > >" ) );
00230 mdl->push_back( md::create( "free_registers", "set< ulint >" ) );
00231 mdl->push_back( md::create( "used_registers", "set< ulint >" ) );
00232 mdl->push_back( md::create( "all_registers", "set< ulint >" ) );
00233 mdl->push_back( md::create( "destroyers", "map< srp< ::lestes::backend_v2::intercode::ge_operand_reg >, srp< ::lestes::md::registers::tm_register > >" ) );
00234 reflection = reflection_list::create( worker_base::reflection_get() );
00235 reflection->push_back( class_reflection::create( "linscan_regalloc", mdl ) );
00236 }
00237 return reflection;
00238 }
00239
00240 ptr< object::field_list_list > linscan_regalloc::field_values_get() const
00241 {
00242 ptr < field_list_list > result = worker_base::field_values_get();
00243 result->push_back( value_list::create() );
00244 result->back()->push_back( this->active_intervals );
00245 result->push_back( value_list::create() );
00246 result->back()->push_back( this->expired_intervals );
00247 result->push_back( value_list::create() );
00248 result->back()->push_back( this->waiting_intervals );
00249 result->push_back( value_list::create() );
00250 result->back()->push_back( this->register_owners );
00251 result->push_back( value_list::create() );
00252 result->back()->push_back( this->free_registers );
00253 result->push_back( value_list::create() );
00254 result->back()->push_back( this->used_registers );
00255 result->push_back( value_list::create() );
00256 result->back()->push_back( this->all_registers );
00257 result->push_back( value_list::create() );
00258 result->back()->push_back( this->destroyers );
00259 return result;
00260 }
00261
00262
00263
00264
00265
00266
00267 void linscan_regalloc::gc_mark()
00268 {
00269 worker_base::gc_mark();
00270 }
00271
00272
00273
00274
00275
00276 ptr<object::reflection_list> linscan_regalloc::reflection = reflection;
00277
00278 end_package(workers);
00279 end_package(backend_v2);
00280 end_package(lestes);
00281