00001
00002
00003
00004
00005
00006
00007
00008
00009 #include <lestes/backend_v2/intercode/pi.g.hh>
00010 #include <lestes/lang/cplus/sem/ss_declaration.g.hh>
00011 #include <lestes/backend_v2/intercode/ge_visitor_bases.v.g.hh>
00012 #include <lestes/backend_v2/workers/bb_finder.g.hh>
00013
00014 #include <lestes/std/list.hh>
00015 #include <lestes/std/pair.hh>
00016 #include <lestes/std/reflect.hh>
00017
00018 #include <lestes/backend_v2/intercode/ge.g.hh>
00019
00020 package(lestes);
00021 package(backend_v2);
00022 package(intercode);
00023
00024
00025
00026
00027
00028
00029
00030
00031 ptr< ::lestes::md::instructions::tm_instr_base > ge_pi::instruction_get() const
00032 {
00033 return instruction;
00034 }
00035
00036
00037
00038
00039
00040 void ge_pi::instruction_set(const ptr< ::lestes::md::instructions::tm_instr_base > & x)
00041 {
00042 ge_pi::instruction = x;
00043 }
00044
00045
00046
00047
00048
00049 ptr< ::lestes::backend_v2::intercode::pi_pi > ge_pi::pi_source_get() const
00050 {
00051 return pi_source;
00052 }
00053
00054
00055
00056
00057
00058 void ge_pi::pi_source_set(const ptr< ::lestes::backend_v2::intercode::pi_pi > & x)
00059 {
00060 ge_pi::pi_source = x;
00061 }
00062
00063
00064
00065
00066
00067 ptr< ::lestes::std::vector< srp< ge_operand > > > ge_pi::operands_input_get() const
00068 {
00069 return operands_input;
00070 }
00071
00072
00073
00074
00075
00076 void ge_pi::operands_input_set(const ptr< ::lestes::std::vector< srp< ge_operand > > > & x)
00077 {
00078 ge_pi::operands_input = x;
00079 }
00080
00081
00082
00083
00084
00085 ptr< ::lestes::std::vector< srp< ge_operand > > > ge_pi::operands_output_get() const
00086 {
00087 return operands_output;
00088 }
00089
00090
00091
00092
00093
00094 void ge_pi::operands_output_set(const ptr< ::lestes::std::vector< srp< ge_operand > > > & x)
00095 {
00096 ge_pi::operands_output = x;
00097 }
00098
00099
00100
00101
00102
00103 ptr< ::lestes::std::set< srp< ge_pi > > > ge_pi::dependencies_get() const
00104 {
00105 return dependencies;
00106 }
00107
00108
00109
00110
00111
00112 void ge_pi::dependencies_set(const ptr< ::lestes::std::set< srp< ge_pi > > > & x)
00113 {
00114 ge_pi::dependencies = x;
00115 }
00116
00117
00118
00119
00120
00121 ptr< ::lestes::std::vector< srp< ge_sp > > > ge_pi::jmp_targets_get() const
00122 {
00123 return jmp_targets;
00124 }
00125
00126
00127
00128
00129
00130 void ge_pi::jmp_targets_set(const ptr< ::lestes::std::vector< srp< ge_sp > > > & x)
00131 {
00132 ge_pi::jmp_targets = x;
00133 }
00134
00135
00136
00137
00138
00139 ulint ge_pi::schedule_pos_get() const
00140 {
00141 return schedule_pos;
00142 }
00143
00144
00145
00146
00147
00148 void ge_pi::schedule_pos_set(ulint x)
00149 {
00150 ge_pi::schedule_pos = x;
00151 }
00152
00153
00154
00155
00156
00157 ptr< ::lestes::backend_v2::workers::basic_block > ge_pi::bb_get() const
00158 {
00159 return bb;
00160 }
00161
00162
00163
00164
00165
00166 void ge_pi::bb_set(const ptr< ::lestes::backend_v2::workers::basic_block > & x)
00167 {
00168 ge_pi::bb = x;
00169 }
00170
00171
00172
00173
00174
00175 ptr< ::lestes::std::map< ulint, lstring > > ge_pi::properties_get() const
00176 {
00177 return properties;
00178 }
00179
00180
00181
00182
00183
00184 void ge_pi::properties_set(const ptr< ::lestes::std::map< ulint, lstring > > & x)
00185 {
00186 ge_pi::properties = x;
00187 }
00188
00189 lstring ge_pi::accept_visitor_ge_pi2lstring_gen_base( ptr< visitor_ge_pi2lstring_gen_base > v )
00190 {
00191 return v->visit_ge_pi( this );
00192 }
00193
00194
00195
00196
00197
00198 ptr< ge_pi > ge_pi::create(ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00199 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00200 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input,
00201 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output,
00202 ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies,
00203 ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets,
00204 ulint a__ge_pi__schedule_pos,
00205 ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb,
00206 ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties)
00207 {
00208 return ptr< ge_pi > ( new ge_pi(a__ge_pi__instruction,
00209 a__ge_pi__pi_source,
00210 a__ge_pi__operands_input,
00211 a__ge_pi__operands_output,
00212 a__ge_pi__dependencies,
00213 a__ge_pi__jmp_targets,
00214 a__ge_pi__schedule_pos,
00215 a__ge_pi__bb,
00216 a__ge_pi__properties) );
00217 }
00218
00219
00220
00221
00222
00223 ptr< ge_pi > ge_pi::create(ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00224 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source)
00225 {
00226 return ptr< ge_pi > ( new ge_pi(a__ge_pi__instruction, a__ge_pi__pi_source, ::lestes::std::vector< srp< ge_operand > > ::create(), ::lestes::std::vector< srp< ge_operand > > ::create(), ::lestes::std::set< srp< ge_pi > > ::create(), NULL, 0, NULL, NULL) );
00227 }
00228
00229
00230
00231
00232
00233 ge_pi::ge_pi (ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00234 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00235 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input,
00236 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output,
00237 ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies,
00238 ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets,
00239 ulint a__ge_pi__schedule_pos,
00240 ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb,
00241 ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties)
00242 : ::lestes::std::object(), instruction(a__ge_pi__instruction), pi_source(a__ge_pi__pi_source), operands_input(checked(a__ge_pi__operands_input)), operands_output(checked(a__ge_pi__operands_output)), dependencies(checked(a__ge_pi__dependencies)), jmp_targets(a__ge_pi__jmp_targets), schedule_pos(a__ge_pi__schedule_pos), bb(a__ge_pi__bb), properties(a__ge_pi__properties)
00243 {}
00244
00245 ptr< object::reflection_list > ge_pi::reflection_get() const
00246 {
00247 if (!reflection) {
00248 typedef class_reflection::field_metadata md;
00249 typedef class_reflection::field_metadata_list mdlist;
00250 ptr<mdlist> mdl = mdlist::create();
00251 mdl->push_back( md::create( "instruction", "tm_instr_base" ) );
00252 mdl->push_back( md::create( "pi_source", "pi_pi" ) );
00253 mdl->push_back( md::create( "operands_input", "vector< srp< ge_operand > >" ) );
00254 mdl->push_back( md::create( "operands_output", "vector< srp< ge_operand > >" ) );
00255 mdl->push_back( md::create( "dependencies", "set< srp< ge_pi > >" ) );
00256 mdl->push_back( md::create( "jmp_targets", "vector< srp< ge_sp > >" ) );
00257 mdl->push_back( md::create( "schedule_pos", "ulint" ) );
00258 mdl->push_back( md::create( "bb", "basic_block" ) );
00259 mdl->push_back( md::create( "properties", "map< ulint, lstring >" ) );
00260 reflection = reflection_list::create( ::lestes::std::object::reflection_get() );
00261 reflection->push_back( class_reflection::create( "ge_pi", mdl ) );
00262 }
00263 return reflection;
00264 }
00265
00266 ptr< object::field_list_list > ge_pi::field_values_get() const
00267 {
00268 ptr < field_list_list > result = ::lestes::std::object::field_values_get();
00269 result->push_back( value_list::create() );
00270 result->back()->push_back( this->instruction );
00271 result->push_back( value_list::create() );
00272 result->back()->push_back( this->pi_source );
00273 result->push_back( value_list::create() );
00274 result->back()->push_back( this->operands_input );
00275 result->push_back( value_list::create() );
00276 result->back()->push_back( this->operands_output );
00277 result->push_back( value_list::create() );
00278 result->back()->push_back( this->dependencies );
00279 result->push_back( value_list::create() );
00280 result->back()->push_back( this->jmp_targets );
00281 result->push_back( value_list::create() );
00282 result->back()->push_back( objectize< ulint > ::create( this->schedule_pos ) );
00283 result->push_back( value_list::create() );
00284 result->back()->push_back( this->bb );
00285 result->push_back( value_list::create() );
00286 result->back()->push_back( this->properties );
00287 return result;
00288 }
00289
00290
00291
00292
00293
00294
00295 void ge_pi::gc_mark()
00296 {
00297 ::lestes::std::object::gc_mark();
00298 }
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308 bool ge_sp::is_jmp_target_get() const
00309 {
00310 return is_jmp_target;
00311 }
00312
00313
00314
00315
00316
00317 void ge_sp::is_jmp_target_set(bool x)
00318 {
00319 ge_sp::is_jmp_target = x;
00320 }
00321
00322 lstring ge_sp::accept_visitor_ge_pi2lstring_gen_base( ptr< visitor_ge_pi2lstring_gen_base > v )
00323 {
00324 return v->visit_ge_sp( this );
00325 }
00326
00327
00328
00329
00330
00331 ptr< ge_sp > ge_sp::create(ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00332 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00333 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input,
00334 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output,
00335 ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies,
00336 ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets,
00337 ulint a__ge_pi__schedule_pos,
00338 ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb,
00339 ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties,
00340 bool a__ge_sp__is_jmp_target)
00341 {
00342 return ptr< ge_sp > ( new ge_sp(a__ge_pi__instruction,
00343 a__ge_pi__pi_source,
00344 a__ge_pi__operands_input,
00345 a__ge_pi__operands_output,
00346 a__ge_pi__dependencies,
00347 a__ge_pi__jmp_targets,
00348 a__ge_pi__schedule_pos,
00349 a__ge_pi__bb,
00350 a__ge_pi__properties,
00351 a__ge_sp__is_jmp_target) );
00352 }
00353
00354
00355
00356
00357
00358 ptr< ge_sp > ge_sp::create(ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00359 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source)
00360 {
00361 return ptr< ge_sp > ( new ge_sp(a__ge_pi__instruction, a__ge_pi__pi_source, ::lestes::std::vector< srp< ge_operand > > ::create(), ::lestes::std::vector< srp< ge_operand > > ::create(), ::lestes::std::set< srp< ge_pi > > ::create(), NULL, 0, NULL, NULL, false) );
00362 }
00363
00364
00365
00366
00367
00368 ge_sp::ge_sp (ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00369 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00370 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input,
00371 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output,
00372 ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies,
00373 ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets,
00374 ulint a__ge_pi__schedule_pos,
00375 ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb,
00376 ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties,
00377 bool a__ge_sp__is_jmp_target)
00378 : ge_pi(a__ge_pi__instruction,
00379 a__ge_pi__pi_source,
00380 a__ge_pi__operands_input,
00381 a__ge_pi__operands_output,
00382 a__ge_pi__dependencies,
00383 a__ge_pi__jmp_targets,
00384 a__ge_pi__schedule_pos,
00385 a__ge_pi__bb,
00386 a__ge_pi__properties), is_jmp_target(a__ge_sp__is_jmp_target)
00387 {}
00388
00389 ptr< object::reflection_list > ge_sp::reflection_get() const
00390 {
00391 if (!reflection) {
00392 typedef class_reflection::field_metadata md;
00393 typedef class_reflection::field_metadata_list mdlist;
00394 ptr<mdlist> mdl = mdlist::create();
00395 mdl->push_back( md::create( "is_jmp_target", "bool" ) );
00396 reflection = reflection_list::create( ge_pi::reflection_get() );
00397 reflection->push_back( class_reflection::create( "ge_sp", mdl ) );
00398 }
00399 return reflection;
00400 }
00401
00402 ptr< object::field_list_list > ge_sp::field_values_get() const
00403 {
00404 ptr < field_list_list > result = ge_pi::field_values_get();
00405 result->push_back( value_list::create() );
00406 result->back()->push_back( objectize< bool > ::create( this->is_jmp_target ) );
00407 return result;
00408 }
00409
00410
00411
00412
00413
00414
00415 void ge_sp::gc_mark()
00416 {
00417 ge_pi::gc_mark();
00418 }
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > ge_call::function_decl_get() const
00429 {
00430 return function_decl;
00431 }
00432
00433
00434
00435
00436
00437 void ge_call::function_decl_set(const ptr< ::lestes::lang::cplus::sem::ss_function_declaration > & x)
00438 {
00439 ge_call::function_decl = x;
00440 }
00441
00442 lstring ge_call::accept_visitor_ge_pi2lstring_gen_base( ptr< visitor_ge_pi2lstring_gen_base > v )
00443 {
00444 return v->visit_ge_call( this );
00445 }
00446
00447
00448
00449
00450
00451 ptr< ge_call > ge_call::create(ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00452 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00453 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input,
00454 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output,
00455 ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies,
00456 ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets,
00457 ulint a__ge_pi__schedule_pos,
00458 ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb,
00459 ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties,
00460 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__ge_call__function_decl)
00461 {
00462 return ptr< ge_call > ( new ge_call(a__ge_pi__instruction,
00463 a__ge_pi__pi_source,
00464 a__ge_pi__operands_input,
00465 a__ge_pi__operands_output,
00466 a__ge_pi__dependencies,
00467 a__ge_pi__jmp_targets,
00468 a__ge_pi__schedule_pos,
00469 a__ge_pi__bb,
00470 a__ge_pi__properties,
00471 a__ge_call__function_decl) );
00472 }
00473
00474
00475
00476
00477
00478 ptr< ge_call > ge_call::create(ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00479 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00480 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__ge_call__function_decl)
00481 {
00482 return ptr< ge_call > ( new ge_call(a__ge_pi__instruction, a__ge_pi__pi_source, ::lestes::std::vector< srp< ge_operand > > ::create(), ::lestes::std::vector< srp< ge_operand > > ::create(), ::lestes::std::set< srp< ge_pi > > ::create(), NULL, 0, NULL, NULL, a__ge_call__function_decl) );
00483 }
00484
00485
00486
00487
00488
00489 ge_call::ge_call (ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction,
00490 ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source,
00491 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input,
00492 ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output,
00493 ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies,
00494 ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets,
00495 ulint a__ge_pi__schedule_pos,
00496 ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb,
00497 ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties,
00498 ptr< ::lestes::lang::cplus::sem::ss_function_declaration > a__ge_call__function_decl)
00499 : ge_pi(a__ge_pi__instruction,
00500 a__ge_pi__pi_source,
00501 a__ge_pi__operands_input,
00502 a__ge_pi__operands_output,
00503 a__ge_pi__dependencies,
00504 a__ge_pi__jmp_targets,
00505 a__ge_pi__schedule_pos,
00506 a__ge_pi__bb,
00507 a__ge_pi__properties), function_decl(checked(a__ge_call__function_decl))
00508 {}
00509
00510 ptr< object::reflection_list > ge_call::reflection_get() const
00511 {
00512 if (!reflection) {
00513 typedef class_reflection::field_metadata md;
00514 typedef class_reflection::field_metadata_list mdlist;
00515 ptr<mdlist> mdl = mdlist::create();
00516 mdl->push_back( md::create( "function_decl", "ss_function_declaration" ) );
00517 reflection = reflection_list::create( ge_pi::reflection_get() );
00518 reflection->push_back( class_reflection::create( "ge_call", mdl ) );
00519 }
00520 return reflection;
00521 }
00522
00523 ptr< object::field_list_list > ge_call::field_values_get() const
00524 {
00525 ptr < field_list_list > result = ge_pi::field_values_get();
00526 result->push_back( value_list::create() );
00527 result->back()->push_back( this->function_decl );
00528 return result;
00529 }
00530
00531
00532
00533
00534
00535
00536 void ge_call::gc_mark()
00537 {
00538 ge_pi::gc_mark();
00539 }
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549 ptr< ::lestes::md::types::tm_data_type_base > ge_operand::type_get() const
00550 {
00551 return type;
00552 }
00553
00554
00555
00556
00557
00558 void ge_operand::type_set(const ptr< ::lestes::md::types::tm_data_type_base > & x)
00559 {
00560 ge_operand::type = x;
00561 }
00562
00563
00564
00565
00566
00567 ptr< ge_pi > ge_operand::origin_get() const
00568 {
00569 return origin;
00570 }
00571
00572
00573
00574
00575
00576 void ge_operand::origin_set(const ptr< ge_pi > & x)
00577 {
00578 ge_operand::origin = x;
00579 }
00580
00581
00582
00583
00584
00585 ptr< ::lestes::backend_v2::intercode::pi_operand > ge_operand::pi_source_get() const
00586 {
00587 return pi_source;
00588 }
00589
00590
00591
00592
00593
00594 void ge_operand::pi_source_set(const ptr< ::lestes::backend_v2::intercode::pi_operand > & x)
00595 {
00596 ge_operand::pi_source = x;
00597 }
00598
00599
00600
00601
00602
00603 ge_operand::ge_operand (ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00604 ptr< ge_pi > a__ge_operand__origin,
00605 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source)
00606 : ::lestes::std::object(), type(checked(a__ge_operand__type)), origin(a__ge_operand__origin), pi_source(a__ge_operand__pi_source)
00607 {}
00608
00609 ptr< object::reflection_list > ge_operand::reflection_get() const
00610 {
00611 if (!reflection) {
00612 typedef class_reflection::field_metadata md;
00613 typedef class_reflection::field_metadata_list mdlist;
00614 ptr<mdlist> mdl = mdlist::create();
00615 mdl->push_back( md::create( "type", "tm_data_type_base" ) );
00616 mdl->push_back( md::create( "origin", "ge_pi" ) );
00617 mdl->push_back( md::create( "pi_source", "pi_operand" ) );
00618 reflection = reflection_list::create( ::lestes::std::object::reflection_get() );
00619 reflection->push_back( class_reflection::create( "ge_operand", mdl ) );
00620 }
00621 return reflection;
00622 }
00623
00624 ptr< object::field_list_list > ge_operand::field_values_get() const
00625 {
00626 ptr < field_list_list > result = ::lestes::std::object::field_values_get();
00627 result->push_back( value_list::create() );
00628 result->back()->push_back( this->type );
00629 result->push_back( value_list::create() );
00630 result->back()->push_back( this->origin );
00631 result->push_back( value_list::create() );
00632 result->back()->push_back( this->pi_source );
00633 return result;
00634 }
00635
00636
00637
00638
00639
00640
00641 void ge_operand::gc_mark()
00642 {
00643 ::lestes::std::object::gc_mark();
00644 }
00645
00646
00647
00648
00649
00650
00651
00652
00653
00654 ptr< ::lestes::std::map< srp< ge_pi >, ulint > > ge_operand_reg::assigned_registers_get() const
00655 {
00656 return assigned_registers;
00657 }
00658
00659
00660
00661
00662
00663 void ge_operand_reg::assigned_registers_set(const ptr< ::lestes::std::map< srp< ge_pi >, ulint > > & x)
00664 {
00665 ge_operand_reg::assigned_registers = x;
00666 }
00667
00668 lstring ge_operand_reg::accept_visitor_ge_operand2lstring_gen_base( ptr< visitor_ge_operand2lstring_gen_base > v )
00669 {
00670 return v->visit_ge_operand_reg( this );
00671 }
00672
00673
00674
00675
00676
00677 ptr< ge_operand_reg > ge_operand_reg::create(ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00678 ptr< ge_pi > a__ge_operand__origin,
00679 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source,
00680 ptr< ::lestes::std::map< srp< ge_pi >, ulint > > a__ge_operand_reg__assigned_registers)
00681 {
00682 return ptr< ge_operand_reg > ( new ge_operand_reg(a__ge_operand__type,
00683 a__ge_operand__origin,
00684 a__ge_operand__pi_source,
00685 a__ge_operand_reg__assigned_registers) );
00686 }
00687
00688
00689
00690
00691
00692 ptr< ge_operand_reg > ge_operand_reg::create(ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00693 ptr< ge_pi > a__ge_operand__origin,
00694 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source)
00695 {
00696 return ptr< ge_operand_reg > ( new ge_operand_reg(a__ge_operand__type, a__ge_operand__origin, a__ge_operand__pi_source, ::lestes::std::map< srp< ge_pi >, ulint > ::create()) );
00697 }
00698
00699
00700
00701
00702
00703 ge_operand_reg::ge_operand_reg (ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00704 ptr< ge_pi > a__ge_operand__origin,
00705 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source,
00706 ptr< ::lestes::std::map< srp< ge_pi >, ulint > > a__ge_operand_reg__assigned_registers)
00707 : ge_operand(a__ge_operand__type,
00708 a__ge_operand__origin,
00709 a__ge_operand__pi_source), assigned_registers(checked(a__ge_operand_reg__assigned_registers))
00710 {}
00711
00712 ptr< object::reflection_list > ge_operand_reg::reflection_get() const
00713 {
00714 if (!reflection) {
00715 typedef class_reflection::field_metadata md;
00716 typedef class_reflection::field_metadata_list mdlist;
00717 ptr<mdlist> mdl = mdlist::create();
00718 mdl->push_back( md::create( "assigned_registers", "map< srp< ge_pi >, ulint >" ) );
00719 reflection = reflection_list::create( ge_operand::reflection_get() );
00720 reflection->push_back( class_reflection::create( "ge_operand_reg", mdl ) );
00721 }
00722 return reflection;
00723 }
00724
00725 ptr< object::field_list_list > ge_operand_reg::field_values_get() const
00726 {
00727 ptr < field_list_list > result = ge_operand::field_values_get();
00728 result->push_back( value_list::create() );
00729 result->back()->push_back( this->assigned_registers );
00730 return result;
00731 }
00732
00733
00734
00735
00736
00737
00738 void ge_operand_reg::gc_mark()
00739 {
00740 ge_operand::gc_mark();
00741 }
00742
00743
00744
00745
00746
00747
00748
00749
00750
00751 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > ge_operand_mem::factory_get() const
00752 {
00753 return factory;
00754 }
00755
00756
00757
00758
00759
00760 void ge_operand_mem::factory_set(const ptr< ::lestes::backend_v2::intercode::pi_mem_factory > & x)
00761 {
00762 ge_operand_mem::factory = x;
00763 }
00764
00765 lstring ge_operand_mem::accept_visitor_ge_operand2lstring_gen_base( ptr< visitor_ge_operand2lstring_gen_base > v )
00766 {
00767 return v->visit_ge_operand_mem( this );
00768 }
00769
00770
00771
00772
00773
00774 ptr< ge_operand_mem > ge_operand_mem::create(ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00775 ptr< ge_pi > a__ge_operand__origin,
00776 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source,
00777 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__ge_operand_mem__factory)
00778 {
00779 return ptr< ge_operand_mem > ( new ge_operand_mem(a__ge_operand__type,
00780 a__ge_operand__origin,
00781 a__ge_operand__pi_source,
00782 a__ge_operand_mem__factory) );
00783 }
00784
00785
00786
00787
00788
00789 ge_operand_mem::ge_operand_mem (ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00790 ptr< ge_pi > a__ge_operand__origin,
00791 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source,
00792 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > a__ge_operand_mem__factory)
00793 : ge_operand(a__ge_operand__type,
00794 a__ge_operand__origin,
00795 a__ge_operand__pi_source), factory(a__ge_operand_mem__factory)
00796 {}
00797
00798 ptr< object::reflection_list > ge_operand_mem::reflection_get() const
00799 {
00800 if (!reflection) {
00801 typedef class_reflection::field_metadata md;
00802 typedef class_reflection::field_metadata_list mdlist;
00803 ptr<mdlist> mdl = mdlist::create();
00804 mdl->push_back( md::create( "factory", "pi_mem_factory" ) );
00805 reflection = reflection_list::create( ge_operand::reflection_get() );
00806 reflection->push_back( class_reflection::create( "ge_operand_mem", mdl ) );
00807 }
00808 return reflection;
00809 }
00810
00811 ptr< object::field_list_list > ge_operand_mem::field_values_get() const
00812 {
00813 ptr < field_list_list > result = ge_operand::field_values_get();
00814 result->push_back( value_list::create() );
00815 result->back()->push_back( this->factory );
00816 return result;
00817 }
00818
00819
00820
00821
00822
00823
00824 void ge_operand_mem::gc_mark()
00825 {
00826 ge_operand::gc_mark();
00827 }
00828
00829
00830
00831
00832
00833
00834
00835
00836
00837 ptr< ::lestes::md::literals::literal_info_base > ge_operand_imm::value_get() const
00838 {
00839 return value;
00840 }
00841
00842
00843
00844
00845
00846 void ge_operand_imm::value_set(const ptr< ::lestes::md::literals::literal_info_base > & x)
00847 {
00848 ge_operand_imm::value = x;
00849 }
00850
00851 lstring ge_operand_imm::accept_visitor_ge_operand2lstring_gen_base( ptr< visitor_ge_operand2lstring_gen_base > v )
00852 {
00853 return v->visit_ge_operand_imm( this );
00854 }
00855
00856
00857
00858
00859
00860 ptr< ge_operand_imm > ge_operand_imm::create(ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00861 ptr< ge_pi > a__ge_operand__origin,
00862 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source,
00863 ptr< ::lestes::md::literals::literal_info_base > a__ge_operand_imm__value)
00864 {
00865 return ptr< ge_operand_imm > ( new ge_operand_imm(a__ge_operand__type,
00866 a__ge_operand__origin,
00867 a__ge_operand__pi_source,
00868 a__ge_operand_imm__value) );
00869 }
00870
00871
00872
00873
00874
00875 ge_operand_imm::ge_operand_imm (ptr< ::lestes::md::types::tm_data_type_base > a__ge_operand__type,
00876 ptr< ge_pi > a__ge_operand__origin,
00877 ptr< ::lestes::backend_v2::intercode::pi_operand > a__ge_operand__pi_source,
00878 ptr< ::lestes::md::literals::literal_info_base > a__ge_operand_imm__value)
00879 : ge_operand(a__ge_operand__type,
00880 a__ge_operand__origin,
00881 a__ge_operand__pi_source), value(checked(a__ge_operand_imm__value))
00882 {}
00883
00884 ptr< object::reflection_list > ge_operand_imm::reflection_get() const
00885 {
00886 if (!reflection) {
00887 typedef class_reflection::field_metadata md;
00888 typedef class_reflection::field_metadata_list mdlist;
00889 ptr<mdlist> mdl = mdlist::create();
00890 mdl->push_back( md::create( "value", "literal_info_base" ) );
00891 reflection = reflection_list::create( ge_operand::reflection_get() );
00892 reflection->push_back( class_reflection::create( "ge_operand_imm", mdl ) );
00893 }
00894 return reflection;
00895 }
00896
00897 ptr< object::field_list_list > ge_operand_imm::field_values_get() const
00898 {
00899 ptr < field_list_list > result = ge_operand::field_values_get();
00900 result->push_back( value_list::create() );
00901 result->back()->push_back( this->value );
00902 return result;
00903 }
00904
00905
00906
00907
00908
00909
00910 void ge_operand_imm::gc_mark()
00911 {
00912 ge_operand::gc_mark();
00913 }
00914
00915
00916
00917
00918
00919 ptr<object::reflection_list> ge_pi::reflection = reflection;
00920 ptr<object::reflection_list> ge_sp::reflection = reflection;
00921 ptr<object::reflection_list> ge_call::reflection = reflection;
00922 ptr<object::reflection_list> ge_operand::reflection = reflection;
00923 ptr<object::reflection_list> ge_operand_reg::reflection = reflection;
00924 ptr<object::reflection_list> ge_operand_mem::reflection = reflection;
00925 ptr<object::reflection_list> ge_operand_imm::reflection = reflection;
00926
00927 end_package(intercode);
00928 end_package(backend_v2);
00929 end_package(lestes);
00930