00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include <lestes/std/list.hh>
00011 #include <lestes/std/pair.hh>
00012 #include <lestes/std/reflect.hh>
00013
00014 #include <lestes/backend_v2/backend.g.hh>
00015
00016 package(lestes);
00017 package(backend_v2);
00018
00019
00020
00021 end_package(backend_v2);
00022 package(std);
00023 specialize_objectize_nodump_reference(::std::ostream&);
00024 end_package(std);
00025 package(backend_v2);
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 ::std::ostream& backend::output_get() const
00036 {
00037 return output;
00038 }
00039
00040
00041
00042
00043
00044 bool backend::optimization_conditional_jumps_get() const
00045 {
00046 return optimization_conditional_jumps;
00047 }
00048
00049
00050
00051
00052
00053 void backend::optimization_conditional_jumps_set(bool x)
00054 {
00055 backend::optimization_conditional_jumps = x;
00056 }
00057
00058
00059
00060
00061
00062 bool backend::optimization_immediate_inlining_get() const
00063 {
00064 return optimization_immediate_inlining;
00065 }
00066
00067
00068
00069
00070
00071 void backend::optimization_immediate_inlining_set(bool x)
00072 {
00073 backend::optimization_immediate_inlining = x;
00074 }
00075
00076
00077
00078
00079
00080 bool backend::optimization_memory_inlining_get() const
00081 {
00082 return optimization_memory_inlining;
00083 }
00084
00085
00086
00087
00088
00089 void backend::optimization_memory_inlining_set(bool x)
00090 {
00091 backend::optimization_memory_inlining = x;
00092 }
00093
00094
00095
00096
00097
00098 bool backend::optimization_deadcode_elimination_get() const
00099 {
00100 return optimization_deadcode_elimination;
00101 }
00102
00103
00104
00105
00106
00107 void backend::optimization_deadcode_elimination_set(bool x)
00108 {
00109 backend::optimization_deadcode_elimination = x;
00110 }
00111
00112
00113
00114
00115
00116 bool backend::optimization_register_allocation_get() const
00117 {
00118 return optimization_register_allocation;
00119 }
00120
00121
00122
00123
00124
00125 void backend::optimization_register_allocation_set(bool x)
00126 {
00127 backend::optimization_register_allocation = x;
00128 }
00129
00130
00131
00132
00133
00134 bool backend::optimization_uselesscode_elimination_get() const
00135 {
00136 return optimization_uselesscode_elimination;
00137 }
00138
00139
00140
00141
00142
00143 void backend::optimization_uselesscode_elimination_set(bool x)
00144 {
00145 backend::optimization_uselesscode_elimination = x;
00146 }
00147
00148
00149
00150
00151
00152 bool backend::optimization_code_scheduling_get() const
00153 {
00154 return optimization_code_scheduling;
00155 }
00156
00157
00158
00159
00160
00161 void backend::optimization_code_scheduling_set(bool x)
00162 {
00163 backend::optimization_code_scheduling = x;
00164 }
00165
00166
00167
00168
00169
00170 ptr< backend > backend::create(::std::ostream& a__backend__output,
00171 bool a__backend__optimization_conditional_jumps,
00172 bool a__backend__optimization_immediate_inlining,
00173 bool a__backend__optimization_memory_inlining,
00174 bool a__backend__optimization_deadcode_elimination,
00175 bool a__backend__optimization_register_allocation,
00176 bool a__backend__optimization_uselesscode_elimination,
00177 bool a__backend__optimization_code_scheduling)
00178 {
00179 return ptr< backend > ( new backend(a__backend__output,
00180 a__backend__optimization_conditional_jumps,
00181 a__backend__optimization_immediate_inlining,
00182 a__backend__optimization_memory_inlining,
00183 a__backend__optimization_deadcode_elimination,
00184 a__backend__optimization_register_allocation,
00185 a__backend__optimization_uselesscode_elimination,
00186 a__backend__optimization_code_scheduling) );
00187 }
00188
00189
00190
00191
00192
00193 ptr< backend > backend::create(::std::ostream& a__backend__output)
00194 {
00195 return ptr< backend > ( new backend(a__backend__output, true, true, true, true, true, true, true) );
00196 }
00197
00198
00199
00200
00201
00202 backend::backend (::std::ostream& a__backend__output,
00203 bool a__backend__optimization_conditional_jumps,
00204 bool a__backend__optimization_immediate_inlining,
00205 bool a__backend__optimization_memory_inlining,
00206 bool a__backend__optimization_deadcode_elimination,
00207 bool a__backend__optimization_register_allocation,
00208 bool a__backend__optimization_uselesscode_elimination,
00209 bool a__backend__optimization_code_scheduling)
00210 : ::lestes::std::object(), output(a__backend__output), optimization_conditional_jumps(a__backend__optimization_conditional_jumps), optimization_immediate_inlining(a__backend__optimization_immediate_inlining), optimization_memory_inlining(a__backend__optimization_memory_inlining), optimization_deadcode_elimination(a__backend__optimization_deadcode_elimination), optimization_register_allocation(a__backend__optimization_register_allocation), optimization_uselesscode_elimination(a__backend__optimization_uselesscode_elimination), optimization_code_scheduling(a__backend__optimization_code_scheduling)
00211 {}
00212
00213 ptr< object::reflection_list > backend::reflection_get() const
00214 {
00215 if (!reflection) {
00216 typedef class_reflection::field_metadata md;
00217 typedef class_reflection::field_metadata_list mdlist;
00218 ptr<mdlist> mdl = mdlist::create();
00219 mdl->push_back( md::create( "output", "::std::ostream&" ) );
00220 mdl->push_back( md::create( "optimization_conditional_jumps", "bool" ) );
00221 mdl->push_back( md::create( "optimization_immediate_inlining", "bool" ) );
00222 mdl->push_back( md::create( "optimization_memory_inlining", "bool" ) );
00223 mdl->push_back( md::create( "optimization_deadcode_elimination", "bool" ) );
00224 mdl->push_back( md::create( "optimization_register_allocation", "bool" ) );
00225 mdl->push_back( md::create( "optimization_uselesscode_elimination", "bool" ) );
00226 mdl->push_back( md::create( "optimization_code_scheduling", "bool" ) );
00227 reflection = reflection_list::create( ::lestes::std::object::reflection_get() );
00228 reflection->push_back( class_reflection::create( "backend", mdl ) );
00229 }
00230 return reflection;
00231 }
00232
00233 ptr< object::field_list_list > backend::field_values_get() const
00234 {
00235 ptr < field_list_list > result = ::lestes::std::object::field_values_get();
00236 result->push_back( value_list::create() );
00237 result->back()->push_back( objectize< ::std::ostream& > ::create( this->output ) );
00238 result->push_back( value_list::create() );
00239 result->back()->push_back( objectize< bool > ::create( this->optimization_conditional_jumps ) );
00240 result->push_back( value_list::create() );
00241 result->back()->push_back( objectize< bool > ::create( this->optimization_immediate_inlining ) );
00242 result->push_back( value_list::create() );
00243 result->back()->push_back( objectize< bool > ::create( this->optimization_memory_inlining ) );
00244 result->push_back( value_list::create() );
00245 result->back()->push_back( objectize< bool > ::create( this->optimization_deadcode_elimination ) );
00246 result->push_back( value_list::create() );
00247 result->back()->push_back( objectize< bool > ::create( this->optimization_register_allocation ) );
00248 result->push_back( value_list::create() );
00249 result->back()->push_back( objectize< bool > ::create( this->optimization_uselesscode_elimination ) );
00250 result->push_back( value_list::create() );
00251 result->back()->push_back( objectize< bool > ::create( this->optimization_code_scheduling ) );
00252 return result;
00253 }
00254
00255
00256
00257
00258
00259
00260 void backend::gc_mark()
00261 {
00262 ::lestes::std::object::gc_mark();
00263 }
00264
00265
00266
00267
00268
00269 ptr<object::reflection_list> backend::reflection = reflection;
00270
00271 end_package(backend_v2);
00272 end_package(lestes);
00273