lestes::backend_v2::intercode::visitor_ge_pi2asm Class Reference

Visitor that generates output asm code for a ge_pi pseudoinstruction. More...

#include <visitor_ge_pi2asm.g.hh>

Inheritance diagram for lestes::backend_v2::intercode::visitor_ge_pi2asm:

lestes::backend_v2::intercode::visitor_ge_pi2lstring_gen_base lestes::std::visitor_base lestes::std::object lestes::std::mem::keystone List of all members.

Public Member Functions

lstring generate_generic_code (ptr< ge_pi > ge)
virtual lstring visit_ge_pi (ptr< ::lestes::backend_v2::intercode::ge_pi >)
virtual lstring visit_ge_sp (ptr< ::lestes::backend_v2::intercode::ge_sp >)
virtual lstring visit_ge_call (ptr< ::lestes::backend_v2::intercode::ge_call >)
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< visitor_ge_pi2asmcreate ()
 First generated factory method for class visitor_ge_pi2asm.

Protected Member Functions

 visitor_ge_pi2asm ()
 Generated constructor for class visitor_ge_pi2asm.
virtual void gc_mark ()
 Marking routine for class visitor_ge_pi2asm.

Static Private Attributes

static ptr< reflection_listreflection = reflection

Detailed Description

Visitor that generates output asm code for a ge_pi pseudoinstruction.

Definition at line 25 of file visitor_ge_pi2asm.g.hh.


Constructor & Destructor Documentation

lestes::backend_v2::intercode::visitor_ge_pi2asm::visitor_ge_pi2asm (  )  [protected]

Generated constructor for class visitor_ge_pi2asm.

Generated constructor for class visitor_ge_pi2asm.

Author:
lsg

Definition at line 36 of file visitor_ge_pi2asm.g.cc.

Referenced by create().

00037         : visitor_ge_pi2lstring_gen_base()
00038 {}


Member Function Documentation

lstring lestes::backend_v2::intercode::visitor_ge_pi2asm::generate_generic_code ( ptr< ge_pi ge  ) 

Referenced by visit_ge_call(), and visit_ge_pi().

lstring lestes::backend_v2::intercode::visitor_ge_pi2asm::visit_ge_pi ( ptr< ::lestes::backend_v2::intercode::ge_pi  )  [virtual]

Implements lestes::backend_v2::intercode::visitor_ge_pi2lstring_gen_base.

Definition at line 124 of file visitor_ge_pi2asm.cc.

References generate_generic_code().

00124                                                                                {
00125         return generate_generic_code(ge);       
00126 }

lstring lestes::backend_v2::intercode::visitor_ge_pi2asm::visit_ge_sp ( ptr< ::lestes::backend_v2::intercode::ge_sp  )  [virtual]

Implements lestes::backend_v2::intercode::visitor_ge_pi2lstring_gen_base.

Definition at line 129 of file visitor_ge_pi2asm.cc.

References lestes::backend_v2::intercode::ge_pi::PROPERTY_SPILLGEN_INFO, and lestes::md::string_replace().

00129                                                                                {
00130         lstring asm_code;
00131         
00132         if ( ge->is_jmp_target_get() ) {
00133                 ::std::ostringstream oss1;
00134                 oss1 << ge->uid_get();
00135                 
00136                 asm_code = string_replace(tm_asm::ent_label_get(), "$id", oss1.str());
00137                 asm_code = string_replace(tm_asm::ent_label_def_get(), "$label", asm_code);
00138         }
00139 
00140 #ifdef BACKEND_V2_DEBUG
00141         ::std::ostringstream oss;
00142         oss << "id=" << ge->uid_get()  << " (sch_pos:" << ge->schedule_pos_get() << ")";
00143         
00144         if ( ge->pi_source_get() ) {
00145                 oss << " pi_src=" << ge->pi_source_get()->reflection_get()->back()->name_get() << "(id:" << ge->pi_source_get()->uid_get() << ")";
00146         }
00147         
00148         if ( ge->bb_get() ) {
00149                 oss << " bb=" << ge->bb_get()->uid_get();
00150         }
00151         
00152         if ( ge->properties_get()) {
00153                 id2lstring__type::iterator it = ge->properties_get()->find(ge_pi::PROPERTY_SPILLGEN_INFO);
00154                 
00155                 if ( it!=ge->properties_get()->end() ) {
00156                         oss << " SPILLGEN: " << it->second;
00157                 }
00158         }
00159         
00160         asm_code += string_replace(tm_asm::ent_inline_comment_get(),"$text",oss.str()) ;        
00161 #endif
00162         
00163         return asm_code;
00164 }

lstring lestes::backend_v2::intercode::visitor_ge_pi2asm::visit_ge_call ( ptr< ::lestes::backend_v2::intercode::ge_call  )  [virtual]

Implements lestes::backend_v2::intercode::visitor_ge_pi2lstring_gen_base.

Definition at line 166 of file visitor_ge_pi2asm.cc.

References generate_generic_code(), and lestes::md::string_replace().

00166                                                                                    {
00167         //Get asm output template
00168         lstring asm_code = generate_generic_code(ge);
00169         
00170         //Mangle name
00171         lstring mangled_name = name_mangler::instance()->mangle(ge->function_decl_get());       
00172         
00173         asm_code = string_replace(asm_code, "$name", mangled_name);     
00174         
00175         return asm_code;
00176 }

ptr< visitor_ge_pi2asm > lestes::backend_v2::intercode::visitor_ge_pi2asm::create (  )  [static]

First generated factory method for class visitor_ge_pi2asm.

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

Author:
lsg

Definition at line 27 of file visitor_ge_pi2asm.g.cc.

References visitor_ge_pi2asm().

00028 {
00029         return ptr< visitor_ge_pi2asm > ( new visitor_ge_pi2asm() );
00030 }

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

for purposes of dumping

Reimplemented from lestes::backend_v2::intercode::visitor_ge_pi2lstring_gen_base.

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

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

00041 {
00042         if (!reflection) {
00043                 typedef class_reflection::field_metadata md;
00044                 typedef class_reflection::field_metadata_list mdlist;
00045                 ptr<mdlist> mdl = mdlist::create();
00046                 reflection = reflection_list::create( visitor_ge_pi2lstring_gen_base::reflection_get() );
00047                 reflection->push_back( class_reflection::create( "visitor_ge_pi2asm", mdl ) );
00048         }
00049         return reflection;
00050 }

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

for purposes of dumping

Reimplemented from lestes::backend_v2::intercode::visitor_ge_pi2lstring_gen_base.

Definition at line 52 of file visitor_ge_pi2asm.g.cc.

References lestes::backend_v2::intercode::visitor_ge_pi2lstring_gen_base::field_values_get().

00053 {
00054         ptr < field_list_list > result = visitor_ge_pi2lstring_gen_base::field_values_get();
00055         return result;
00056 }

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

Marking routine for class visitor_ge_pi2asm.

Marking routine is used for garbage collection.

Author:
lsg

Reimplemented from lestes::backend_v2::intercode::visitor_ge_pi2lstring_gen_base.

Definition at line 63 of file visitor_ge_pi2asm.g.cc.

References lestes::backend_v2::intercode::visitor_ge_pi2lstring_gen_base::gc_mark().

00064 {
00065         visitor_ge_pi2lstring_gen_base::gc_mark();
00066 }


Member Data Documentation

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

Reimplemented from lestes::backend_v2::intercode::visitor_ge_pi2lstring_gen_base.

Definition at line 56 of file visitor_ge_pi2asm.g.hh.

Referenced by reflection_get().


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