lestes::backend_v2::intercode::ge_pi Class Reference

Ge-level intercode pseudoinstruction. More...

#include <ge.g.hh>

Inheritance diagram for lestes::backend_v2::intercode::ge_pi:

lestes::std::object lestes::std::mem::keystone lestes::backend_v2::intercode::ge_call lestes::backend_v2::intercode::ge_sp List of all members.

Public Types

enum  kind_type { PI, SP, CALL }
 Pseudoinstruction kinds. More...
enum  property_id_type { PROPERTY_SPILLGEN_INFO }
 Property ids. More...

Public Member Functions

ptr< ::lestes::md::instructions::tm_instr_baseinstruction_get () const
 The method instruction_get returns the value of the field ge_pi::instruction.
void instruction_set (const ptr< ::lestes::md::instructions::tm_instr_base > &)
 The method instruction_set sets the field ge_pi::instruction to the given value.
ptr< ::lestes::backend_v2::intercode::pi_pipi_source_get () const
 The method pi_source_get returns the value of the field ge_pi::pi_source.
void pi_source_set (const ptr< ::lestes::backend_v2::intercode::pi_pi > &)
 The method pi_source_set sets the field ge_pi::pi_source to the given value.
ptr< ::lestes::std::vector<
srp< ge_operand > > > 
operands_input_get () const
 The method operands_input_get returns the value of the field ge_pi::operands_input.
void operands_input_set (const ptr< ::lestes::std::vector< srp< ge_operand > > > &)
 The method operands_input_set sets the field ge_pi::operands_input to the given value.
ptr< ::lestes::std::vector<
srp< ge_operand > > > 
operands_output_get () const
 The method operands_output_get returns the value of the field ge_pi::operands_output.
void operands_output_set (const ptr< ::lestes::std::vector< srp< ge_operand > > > &)
 The method operands_output_set sets the field ge_pi::operands_output to the given value.
ptr< ::lestes::std::set< srp<
ge_pi > > > 
dependencies_get () const
 The method dependencies_get returns the value of the field ge_pi::dependencies.
void dependencies_set (const ptr< ::lestes::std::set< srp< ge_pi > > > &)
 The method dependencies_set sets the field ge_pi::dependencies to the given value.
ptr< ::lestes::std::vector<
srp< ge_sp > > > 
jmp_targets_get () const
 The method jmp_targets_get returns the value of the field ge_pi::jmp_targets.
void jmp_targets_set (const ptr< ::lestes::std::vector< srp< ge_sp > > > &)
 The method jmp_targets_set sets the field ge_pi::jmp_targets to the given value.
ulint schedule_pos_get () const
 The method schedule_pos_get returns the value of the field ge_pi::schedule_pos.
void schedule_pos_set (ulint)
 The method schedule_pos_set sets the field ge_pi::schedule_pos to the given value.
ptr< ::lestes::backend_v2::workers::basic_blockbb_get () const
 The method bb_get returns the value of the field ge_pi::bb.
void bb_set (const ptr< ::lestes::backend_v2::workers::basic_block > &)
 The method bb_set sets the field ge_pi::bb to the given value.
ptr< ::lestes::std::map< ulint,
lstring > > 
properties_get () const
 The method properties_get returns the value of the field ge_pi::properties.
void properties_set (const ptr< ::lestes::std::map< ulint, lstring > > &)
 The method properties_set sets the field ge_pi::properties to the given value.
virtual ge_pi::kind_type kind_get ()
 Returns kind of the pseudoinstruction.
bool validate ()
 Tells whether the pseudoinstruction is consistent with target machine instruction that it represents.
virtual lstring accept_visitor_ge_pi2lstring_gen_base (ptr< visitor_ge_pi2lstring_gen_base > v)
virtual ptr< reflection_listreflection_get () const
 for purposes of dumping
virtual ptr< field_list_listfield_values_get () const
 for purposes of dumping

Static Public Member Functions

static ptr< ge_picreate (ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction, ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source, ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input, ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output, ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies, ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets, ulint a__ge_pi__schedule_pos, ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb, ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties)
 First generated factory method for class ge_pi.
static ptr< ge_picreate (ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction, ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source)
 Second generated factory method for class ge_pi.

Protected Member Functions

 ge_pi (ptr< ::lestes::md::instructions::tm_instr_base > a__ge_pi__instruction, ptr< ::lestes::backend_v2::intercode::pi_pi > a__ge_pi__pi_source, ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_input, ptr< ::lestes::std::vector< srp< ge_operand > > > a__ge_pi__operands_output, ptr< ::lestes::std::set< srp< ge_pi > > > a__ge_pi__dependencies, ptr< ::lestes::std::vector< srp< ge_sp > > > a__ge_pi__jmp_targets, ulint a__ge_pi__schedule_pos, ptr< ::lestes::backend_v2::workers::basic_block > a__ge_pi__bb, ptr< ::lestes::std::map< ulint, lstring > > a__ge_pi__properties)
 Generated constructor for class ge_pi.
virtual void gc_mark ()
 Marking routine for class ge_pi.

Private Attributes

srp< ::lestes::md::instructions::tm_instr_baseinstruction
 A description of a target machine instruction represented by this pseudoinstruction.
srp< ::lestes::backend_v2::intercode::pi_pipi_source
 A pi-level pseudoinstruction that the ge_pi pseudoinstruction derives from.
srp< ::lestes::std::vector<
srp< ge_operand > > > 
operands_input
 Pseudoinstruction's input operands.
srp< ::lestes::std::vector<
srp< ge_operand > > > 
operands_output
 Pseudoinstruction's output operands.
srp< ::lestes::std::set< srp<
ge_pi > > > 
dependencies
 A set of pseudoinstructions that this one depends on.
srp< ::lestes::std::vector<
srp< ge_sp > > > 
jmp_targets
 If the pseudoinstruction represents jump instruction then this is the list of its jump targets.
ulint schedule_pos
 A position in a function body schedule.
srp< ::lestes::backend_v2::workers::basic_blockbb
 A basic block that contains this pseudoinstruction.
srp< ::lestes::std::map< ulint,
lstring > > 
properties
 Custom properties.

Static Private Attributes

static ptr< reflection_listreflection = reflection

Detailed Description

Ge-level intercode pseudoinstruction.

Ge-level intercode is intercode used by backend. Every ge_pi pseudoinstruction represents single target machine instruction.

Definition at line 125 of file ge.g.hh.


Member Enumeration Documentation

enum lestes::backend_v2::intercode::ge_pi::kind_type

Pseudoinstruction kinds.

Enumerator:
PI 
SP 
CALL 

Definition at line 128 of file ge.g.hh.

00128                        {
00129                 PI,
00130                 SP,
00131                 CALL
00132         };

enum lestes::backend_v2::intercode::ge_pi::property_id_type

Property ids.

Enumerator:
PROPERTY_SPILLGEN_INFO 

Definition at line 134 of file ge.g.hh.

00134                               {
00135                 PROPERTY_SPILLGEN_INFO
00136         };


Constructor & Destructor Documentation

lestes::backend_v2::intercode::ge_pi::ge_pi ( ptr< ::lestes::md::instructions::tm_instr_base a__ge_pi__instruction,
ptr< ::lestes::backend_v2::intercode::pi_pi a__ge_pi__pi_source,
ptr< ::lestes::std::vector< srp< ge_operand > > >  a__ge_pi__operands_input,
ptr< ::lestes::std::vector< srp< ge_operand > > >  a__ge_pi__operands_output,
ptr< ::lestes::std::set< srp< ge_pi > > >  a__ge_pi__dependencies,
ptr< ::lestes::std::vector< srp< ge_sp > > >  a__ge_pi__jmp_targets,
ulint  a__ge_pi__schedule_pos,
ptr< ::lestes::backend_v2::workers::basic_block a__ge_pi__bb,
ptr< ::lestes::std::map< ulint, lstring > >  a__ge_pi__properties 
) [protected]

Generated constructor for class ge_pi.

Generated constructor for class ge_pi.

Author:
lsg

Definition at line 233 of file ge.g.cc.

Referenced by create().

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 {}


Member Function Documentation

ptr<::lestes::md::instructions::tm_instr_base > lestes::backend_v2::intercode::ge_pi::instruction_get (  )  const

The method instruction_get returns the value of the field ge_pi::instruction.

Returns:
The value of ge_pi::instruction.
Author:
lsg

Definition at line 31 of file ge.g.cc.

References instruction.

00032 {
00033         return instruction;
00034 }

void lestes::backend_v2::intercode::ge_pi::instruction_set ( const ptr< ::lestes::md::instructions::tm_instr_base > &  x  ) 

The method instruction_set sets the field ge_pi::instruction to the given value.

Parameters:
[in] x The new value to set ge_pi::instruction to.
Author:
lsg

Definition at line 40 of file ge.g.cc.

References instruction.

00041 {
00042         ge_pi::instruction = x;
00043 }

ptr<::lestes::backend_v2::intercode::pi_pi > lestes::backend_v2::intercode::ge_pi::pi_source_get (  )  const

The method pi_source_get returns the value of the field ge_pi::pi_source.

Returns:
The value of ge_pi::pi_source.
Author:
lsg

Definition at line 49 of file ge.g.cc.

References pi_source.

00050 {
00051         return pi_source;
00052 }

void lestes::backend_v2::intercode::ge_pi::pi_source_set ( const ptr< ::lestes::backend_v2::intercode::pi_pi > &  x  ) 

The method pi_source_set sets the field ge_pi::pi_source to the given value.

Parameters:
[in] x The new value to set ge_pi::pi_source to.
Author:
lsg

Definition at line 58 of file ge.g.cc.

References pi_source.

00059 {
00060         ge_pi::pi_source = x;
00061 }

ptr<::lestes::std::vector< srp< ge_operand > > > lestes::backend_v2::intercode::ge_pi::operands_input_get (  )  const

The method operands_input_get returns the value of the field ge_pi::operands_input.

Returns:
The value of ge_pi::operands_input.
Author:
lsg

Definition at line 67 of file ge.g.cc.

References operands_input.

00068 {
00069         return operands_input;
00070 }

void lestes::backend_v2::intercode::ge_pi::operands_input_set ( const ptr< ::lestes::std::vector< srp< ge_operand > > > &  x  ) 

The method operands_input_set sets the field ge_pi::operands_input to the given value.

Parameters:
[in] x The new value to set ge_pi::operands_input to.
Author:
lsg

Definition at line 76 of file ge.g.cc.

References operands_input.

00077 {
00078         ge_pi::operands_input = x;
00079 }

ptr<::lestes::std::vector< srp< ge_operand > > > lestes::backend_v2::intercode::ge_pi::operands_output_get (  )  const

The method operands_output_get returns the value of the field ge_pi::operands_output.

Returns:
The value of ge_pi::operands_output.
Author:
lsg

Definition at line 85 of file ge.g.cc.

References operands_output.

00086 {
00087         return operands_output;
00088 }

void lestes::backend_v2::intercode::ge_pi::operands_output_set ( const ptr< ::lestes::std::vector< srp< ge_operand > > > &  x  ) 

The method operands_output_set sets the field ge_pi::operands_output to the given value.

Parameters:
[in] x The new value to set ge_pi::operands_output to.
Author:
lsg

Definition at line 94 of file ge.g.cc.

References operands_output.

00095 {
00096         ge_pi::operands_output = x;
00097 }

ptr<::lestes::std::set< srp< ge_pi > > > lestes::backend_v2::intercode::ge_pi::dependencies_get (  )  const

The method dependencies_get returns the value of the field ge_pi::dependencies.

Returns:
The value of ge_pi::dependencies.
Author:
lsg

Definition at line 103 of file ge.g.cc.

References dependencies.

00104 {
00105         return dependencies;
00106 }

void lestes::backend_v2::intercode::ge_pi::dependencies_set ( const ptr< ::lestes::std::set< srp< ge_pi > > > &  x  ) 

The method dependencies_set sets the field ge_pi::dependencies to the given value.

Parameters:
[in] x The new value to set ge_pi::dependencies to.
Author:
lsg

Definition at line 112 of file ge.g.cc.

References dependencies.

00113 {
00114         ge_pi::dependencies = x;
00115 }

ptr<::lestes::std::vector< srp< ge_sp > > > lestes::backend_v2::intercode::ge_pi::jmp_targets_get (  )  const

The method jmp_targets_get returns the value of the field ge_pi::jmp_targets.

Returns:
The value of ge_pi::jmp_targets.
Author:
lsg

Definition at line 121 of file ge.g.cc.

References jmp_targets.

00122 {
00123         return jmp_targets;
00124 }

void lestes::backend_v2::intercode::ge_pi::jmp_targets_set ( const ptr< ::lestes::std::vector< srp< ge_sp > > > &  x  ) 

The method jmp_targets_set sets the field ge_pi::jmp_targets to the given value.

Parameters:
[in] x The new value to set ge_pi::jmp_targets to.
Author:
lsg

Definition at line 130 of file ge.g.cc.

References jmp_targets.

00131 {
00132         ge_pi::jmp_targets = x;
00133 }

ulint lestes::backend_v2::intercode::ge_pi::schedule_pos_get (  )  const

The method schedule_pos_get returns the value of the field ge_pi::schedule_pos.

Returns:
The value of ge_pi::schedule_pos.
Author:
lsg

Definition at line 139 of file ge.g.cc.

References schedule_pos.

00140 {
00141         return schedule_pos;
00142 }

void lestes::backend_v2::intercode::ge_pi::schedule_pos_set ( ulint  x  ) 

The method schedule_pos_set sets the field ge_pi::schedule_pos to the given value.

Parameters:
[in] x The new value to set ge_pi::schedule_pos to.
Author:
lsg

Definition at line 148 of file ge.g.cc.

References schedule_pos.

00149 {
00150         ge_pi::schedule_pos = x;
00151 }

ptr<::lestes::backend_v2::workers::basic_block > lestes::backend_v2::intercode::ge_pi::bb_get (  )  const

The method bb_get returns the value of the field ge_pi::bb.

Returns:
The value of ge_pi::bb.
Author:
lsg

Definition at line 157 of file ge.g.cc.

References bb.

00158 {
00159         return bb;
00160 }

void lestes::backend_v2::intercode::ge_pi::bb_set ( const ptr< ::lestes::backend_v2::workers::basic_block > &  x  ) 

The method bb_set sets the field ge_pi::bb to the given value.

Parameters:
[in] x The new value to set ge_pi::bb to.
Author:
lsg

Definition at line 166 of file ge.g.cc.

References bb.

00167 {
00168         ge_pi::bb = x;
00169 }

ptr<::lestes::std::map< ulint, lstring > > lestes::backend_v2::intercode::ge_pi::properties_get (  )  const

The method properties_get returns the value of the field ge_pi::properties.

Returns:
The value of ge_pi::properties.
Author:
lsg

Definition at line 175 of file ge.g.cc.

References properties.

00176 {
00177         return properties;
00178 }

void lestes::backend_v2::intercode::ge_pi::properties_set ( const ptr< ::lestes::std::map< ulint, lstring > > &  x  ) 

The method properties_set sets the field ge_pi::properties to the given value.

Parameters:
[in] x The new value to set ge_pi::properties to.
Author:
lsg

Definition at line 184 of file ge.g.cc.

References properties.

00185 {
00186         ge_pi::properties = x;
00187 }

ge_pi::kind_type lestes::backend_v2::intercode::ge_pi::kind_get (  )  [virtual]

Returns kind of the pseudoinstruction.

Reimplemented in lestes::backend_v2::intercode::ge_sp, and lestes::backend_v2::intercode::ge_call.

Definition at line 19 of file ge.cc.

References PI.

Referenced by validate().

00020 {
00021     return ge_pi::PI;
00022 }

bool lestes::backend_v2::intercode::ge_pi::validate (  ) 

Tells whether the pseudoinstruction is consistent with target machine instruction that it represents.

Returns:
If the pseudoinstruction with instruction is consistent then true. False otherwise.

Definition at line 45 of file ge.cc.

References instruction, kind_get(), operands_input, operands_output, and SP.

00045                      {
00046         if ( !instruction && kind_get()!=SP ) {
00047                 return false;
00048         }
00049 
00050         ptr<ge_operand_vector__type> ge_ops = operands_input;
00051         ptr<tm_operand_vector__type> tm_ops = instruction->operands_input_get();
00052         
00053         if ( ge_ops->size() != tm_ops->size() ) {
00054                 return false;
00055         }
00056         
00057         tm_operand_vector__type::iterator it2 = tm_ops->begin();
00058         for(ge_operand_vector__type::iterator it1 = ge_ops->begin(); it1!= ge_ops->end(); ++it1, ++it2) {
00059                 ptr<ge_operand> op1 = *it1;
00060                 ptr<tm_instr_op_base> op2 = *it2;
00061                 
00062                 if ( (ulint)op1->kind_get() != (ulint)op2->kind_get() ) {
00063                         return false;
00064                 }
00065                 
00066                 if ( op2->allowed_types_get()->find(op1->type_get()->id_get())==op2->allowed_types_get()->end() ) {
00067                         return false;
00068                 }
00069         }
00070         
00071         ge_ops = operands_output;
00072         tm_ops = instruction->operands_output_get();
00073         
00074         if ( ge_ops->size() != tm_ops->size() ) {
00075                 return false;
00076         }
00077         
00078         it2 = tm_ops->begin();
00079         for(ge_operand_vector__type::iterator it1 = ge_ops->begin(); it1!= ge_ops->end(); ++it1, ++it2) {
00080                 ptr<ge_operand> op1 = *it1;
00081                 ptr<tm_instr_op_base> op2 = *it2;
00082                 
00083                 if ( (ulint)op1->kind_get() != (ulint)op2->kind_get() ) {
00084                         return false;
00085                 }
00086                 
00087                 if ( op2->allowed_types_get()->find(op1->type_get()->id_get())==op2->allowed_types_get()->end() ) {
00088                         return false;
00089                 }
00090         }
00091         
00092         return true;
00093 }

lstring lestes::backend_v2::intercode::ge_pi::accept_visitor_ge_pi2lstring_gen_base ( ptr< visitor_ge_pi2lstring_gen_base v  )  [virtual]

Reimplemented in lestes::backend_v2::intercode::ge_sp, and lestes::backend_v2::intercode::ge_call.

Definition at line 189 of file ge.g.cc.

00190 {
00191         return v->visit_ge_pi( this );
00192 }

ptr< ge_pi > lestes::backend_v2::intercode::ge_pi::create ( ptr< ::lestes::md::instructions::tm_instr_base a__ge_pi__instruction,
ptr< ::lestes::backend_v2::intercode::pi_pi a__ge_pi__pi_source,
ptr< ::lestes::std::vector< srp< ge_operand > > >  a__ge_pi__operands_input,
ptr< ::lestes::std::vector< srp< ge_operand > > >  a__ge_pi__operands_output,
ptr< ::lestes::std::set< srp< ge_pi > > >  a__ge_pi__dependencies,
ptr< ::lestes::std::vector< srp< ge_sp > > >  a__ge_pi__jmp_targets,
ulint  a__ge_pi__schedule_pos,
ptr< ::lestes::backend_v2::workers::basic_block a__ge_pi__bb,
ptr< ::lestes::std::map< ulint, lstring > >  a__ge_pi__properties 
) [static]

First generated factory method for class ge_pi.

This factory method for class ge_pi takes values of all fields as arguments.

Author:
lsg

Definition at line 198 of file ge.g.cc.

References ge_pi().

Referenced by create().

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 }

ptr< ge_pi > lestes::backend_v2::intercode::ge_pi::create ( ptr< ::lestes::md::instructions::tm_instr_base a__ge_pi__instruction,
ptr< ::lestes::backend_v2::intercode::pi_pi a__ge_pi__pi_source 
) [static]

Second generated factory method for class ge_pi.

This factory method for class ge_pi uses initializers.

Author:
lsg

Reimplemented in lestes::backend_v2::intercode::ge_sp.

Definition at line 223 of file ge.g.cc.

References create(), and ge_pi().

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 }

ptr< object::reflection_list > lestes::backend_v2::intercode::ge_pi::reflection_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::std::object.

Reimplemented in lestes::backend_v2::intercode::ge_sp, and lestes::backend_v2::intercode::ge_call.

Definition at line 245 of file ge.g.cc.

References lestes::std::list< T >::create(), reflection, and lestes::std::object::reflection_get().

Referenced by lestes::backend_v2::intercode::ge_call::reflection_get(), and lestes::backend_v2::intercode::ge_sp::reflection_get().

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&lt; srp&lt; ge_operand &gt; &gt;" ) );
00254                 mdl->push_back( md::create( "operands_output", "vector&lt; srp&lt; ge_operand &gt; &gt;" ) );
00255                 mdl->push_back( md::create( "dependencies", "set&lt; srp&lt; ge_pi &gt; &gt;" ) );
00256                 mdl->push_back( md::create( "jmp_targets", "vector&lt; srp&lt; ge_sp &gt; &gt;" ) );
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&lt; ulint, lstring &gt;" ) );
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 }

ptr< object::field_list_list > lestes::backend_v2::intercode::ge_pi::field_values_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::std::object.

Reimplemented in lestes::backend_v2::intercode::ge_sp, and lestes::backend_v2::intercode::ge_call.

Definition at line 266 of file ge.g.cc.

References lestes::std::list< T >::create(), and lestes::std::object::field_values_get().

Referenced by lestes::backend_v2::intercode::ge_call::field_values_get(), and lestes::backend_v2::intercode::ge_sp::field_values_get().

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 }

void lestes::backend_v2::intercode::ge_pi::gc_mark ( void   )  [protected, virtual]

Marking routine for class ge_pi.

Marking routine is used for garbage collection.

Author:
lsg

Reimplemented from lestes::std::mem::keystone.

Reimplemented in lestes::backend_v2::intercode::ge_sp, and lestes::backend_v2::intercode::ge_call.

Definition at line 295 of file ge.g.cc.

References lestes::std::mem::keystone::gc_mark().

Referenced by lestes::backend_v2::intercode::ge_call::gc_mark(), and lestes::backend_v2::intercode::ge_sp::gc_mark().

00296 {
00297 	::lestes::std::object::gc_mark();
00298 }


Member Data Documentation

srp< ::lestes::md::instructions::tm_instr_base > lestes::backend_v2::intercode::ge_pi::instruction [private]

A description of a target machine instruction represented by this pseudoinstruction.

Definition at line 240 of file ge.g.hh.

Referenced by instruction_get(), instruction_set(), and validate().

srp< ::lestes::backend_v2::intercode::pi_pi > lestes::backend_v2::intercode::ge_pi::pi_source [private]

A pi-level pseudoinstruction that the ge_pi pseudoinstruction derives from.

Note: A single pi-pseudoinstruction is usually source for multiple ge-pseudoinstructions.

Definition at line 245 of file ge.g.hh.

Referenced by pi_source_get(), and pi_source_set().

srp< ::lestes::std::vector< srp< ge_operand > > > lestes::backend_v2::intercode::ge_pi::operands_input [private]

Pseudoinstruction's input operands.

Definition at line 247 of file ge.g.hh.

Referenced by operands_input_get(), operands_input_set(), and validate().

srp< ::lestes::std::vector< srp< ge_operand > > > lestes::backend_v2::intercode::ge_pi::operands_output [private]

Pseudoinstruction's output operands.

Definition at line 249 of file ge.g.hh.

Referenced by operands_output_get(), operands_output_set(), and validate().

srp< ::lestes::std::set< srp< ge_pi > > > lestes::backend_v2::intercode::ge_pi::dependencies [private]

A set of pseudoinstructions that this one depends on.

This is the crucial information for pseudoinstruction ordering. Each pseudoinstruction from the set must be executed before this pseudoinstruction.

Definition at line 255 of file ge.g.hh.

Referenced by dependencies_get(), and dependencies_set().

srp< ::lestes::std::vector< srp< ge_sp > > > lestes::backend_v2::intercode::ge_pi::jmp_targets [private]

If the pseudoinstruction represents jump instruction then this is the list of its jump targets.

Definition at line 257 of file ge.g.hh.

Referenced by jmp_targets_get(), and jmp_targets_set().

ulint lestes::backend_v2::intercode::ge_pi::schedule_pos [private]

A position in a function body schedule.

Definition at line 259 of file ge.g.hh.

Referenced by schedule_pos_get(), and schedule_pos_set().

srp< ::lestes::backend_v2::workers::basic_block > lestes::backend_v2::intercode::ge_pi::bb [private]

A basic block that contains this pseudoinstruction.

Definition at line 261 of file ge.g.hh.

Referenced by bb_get(), and bb_set().

srp< ::lestes::std::map< ulint, lstring > > lestes::backend_v2::intercode::ge_pi::properties [private]

Custom properties.

It allows the pseudoinstruction holding a additional custom properties ( i.e. informatin for debugging )/

Definition at line 266 of file ge.g.hh.

Referenced by properties_get(), and properties_set().

ptr< object::reflection_list > lestes::backend_v2::intercode::ge_pi::reflection = reflection [static, private]

Reimplemented from lestes::std::object.

Reimplemented in lestes::backend_v2::intercode::ge_sp, and lestes::backend_v2::intercode::ge_call.

Definition at line 267 of file ge.g.hh.

Referenced by reflection_get().


The documentation for this class was generated from the following files:
Generated on Mon Feb 12 18:23:49 2007 for lestes by doxygen 1.5.1-20070107