backend.g.hh

Go to the documentation of this file.
00001 // This file is automatically generated, do not edit.
00002 
00003 /*!
00004         \file
00005         \brief Main backend class.
00006         \author jaz
00007 */
00008 
00009 #ifndef lestes__backend_v2__backend_g_hh__included
00010 #define lestes__backend_v2__backend_g_hh__included
00011 
00012 #include <lestes/backend_v2/common.hh>
00013 
00014 #include <lestes/std/objectize_macros.hh>
00015 package(lestes);
00016 package(std);
00017 class object;
00018 end_package(std);
00019 end_package(lestes);
00020 
00021 package(lestes);
00022 package(backend_v2);
00023 
00024 
00025 class backend;
00026 
00027 
00028 /*! \brief Main backend class.
00029 
00030 The compiler's backend. It takes intercode structures 
00031 representing single translation unit that are passed to backend in backend_data_builder object.
00032 It splits these structures to blocks that coresponds to function bodies and passes them one by one
00033 to block_processor for further processing. At the end it manages asm code generation.
00034 */
00035 class backend : public ::lestes::std::object {
00036 public:
00037         //! The method output_get returns the value of the field backend::output.
00038         ::std::ostream& output_get() const;
00039 
00040         //! The method optimization_conditional_jumps_get returns the value of the field backend::optimization_conditional_jumps.
00041         bool optimization_conditional_jumps_get() const;
00042 
00043         //! The method optimization_conditional_jumps_set sets the field backend::optimization_conditional_jumps to the given value.
00044         void optimization_conditional_jumps_set(bool);
00045 
00046         //! The method optimization_immediate_inlining_get returns the value of the field backend::optimization_immediate_inlining.
00047         bool optimization_immediate_inlining_get() const;
00048 
00049         //! The method optimization_immediate_inlining_set sets the field backend::optimization_immediate_inlining to the given value.
00050         void optimization_immediate_inlining_set(bool);
00051 
00052         //! The method optimization_memory_inlining_get returns the value of the field backend::optimization_memory_inlining.
00053         bool optimization_memory_inlining_get() const;
00054 
00055         //! The method optimization_memory_inlining_set sets the field backend::optimization_memory_inlining to the given value.
00056         void optimization_memory_inlining_set(bool);
00057 
00058         //! The method optimization_deadcode_elimination_get returns the value of the field backend::optimization_deadcode_elimination.
00059         bool optimization_deadcode_elimination_get() const;
00060 
00061         //! The method optimization_deadcode_elimination_set sets the field backend::optimization_deadcode_elimination to the given value.
00062         void optimization_deadcode_elimination_set(bool);
00063 
00064         //! The method optimization_register_allocation_get returns the value of the field backend::optimization_register_allocation.
00065         bool optimization_register_allocation_get() const;
00066 
00067         //! The method optimization_register_allocation_set sets the field backend::optimization_register_allocation to the given value.
00068         void optimization_register_allocation_set(bool);
00069 
00070         //! The method optimization_uselesscode_elimination_get returns the value of the field backend::optimization_uselesscode_elimination.
00071         bool optimization_uselesscode_elimination_get() const;
00072 
00073         //! The method optimization_uselesscode_elimination_set sets the field backend::optimization_uselesscode_elimination to the given value.
00074         void optimization_uselesscode_elimination_set(bool);
00075 
00076         //! The method optimization_code_scheduling_get returns the value of the field backend::optimization_code_scheduling.
00077         bool optimization_code_scheduling_get() const;
00078 
00079         //! The method optimization_code_scheduling_set sets the field backend::optimization_code_scheduling to the given value.
00080         void optimization_code_scheduling_set(bool);
00081 
00082         //! Backend main method.
00083         void main();
00084 
00085         
00086         //! First generated factory method for class backend.
00087         static ptr< backend > create (
00088                 ::std::ostream& a__backend__output,
00089                 bool a__backend__optimization_conditional_jumps,
00090                 bool a__backend__optimization_immediate_inlining,
00091                 bool a__backend__optimization_memory_inlining,
00092                 bool a__backend__optimization_deadcode_elimination,
00093                 bool a__backend__optimization_register_allocation,
00094                 bool a__backend__optimization_uselesscode_elimination,
00095                 bool a__backend__optimization_code_scheduling);
00096 
00097         //! Second generated factory method for class backend.
00098         static ptr< backend > create (
00099                 ::std::ostream& a__backend__output);
00100 
00101         
00102 
00103         //! for purposes of dumping
00104         virtual ptr<reflection_list> reflection_get() const;
00105         //! for purposes of dumping
00106         virtual ptr<field_list_list> field_values_get() const;
00107         
00108 protected:
00109         //! Generated constructor for class backend.
00110         backend (
00111                 ::std::ostream& a__backend__output,
00112                 bool a__backend__optimization_conditional_jumps,
00113                 bool a__backend__optimization_immediate_inlining,
00114                 bool a__backend__optimization_memory_inlining,
00115                 bool a__backend__optimization_deadcode_elimination,
00116                 bool a__backend__optimization_register_allocation,
00117                 bool a__backend__optimization_uselesscode_elimination,
00118                 bool a__backend__optimization_code_scheduling);
00119 
00120         //! Marking routine for class backend. 
00121         virtual void gc_mark();
00122 
00123 private:
00124         //! A stream where an output asm code is flushed into.
00125         ::std::ostream& output;
00126         //! Switch that turns on/off conditional jumps optimization ( pi_cond_jmp_rewritter worker )
00127         bool optimization_conditional_jumps;
00128         //! Switch that turns on/off elimination of immediate loading by special load instruction rather than inlining of immediate into instructions that use it. ( literal_inliner worker )
00129         bool optimization_immediate_inlining;
00130         //! Switch that turns on/off elimination of memory operand loading by special load instruction rather than inlining of memory operand into instructions that use it. ( memory_inliner worker )
00131         bool optimization_memory_inlining;
00132         //! Switch that turns on/off dead coe elimination ( dead_code_eliminator worker )
00133         bool optimization_deadcode_elimination;
00134         //! Switch that turns on/off register allocation ( linscan_regalloc worker )
00135         bool optimization_register_allocation;
00136         //! Switch that turns on/off uselesscode elimination ( useless_code_eliminator worker )
00137         bool optimization_uselesscode_elimination;
00138         //! Switch that turns on/off code scheduling ( scheduler worker )
00139         bool optimization_code_scheduling;
00140         static ptr<reflection_list> reflection;
00141         
00142 }; // backend
00143 
00144 
00145 end_package(backend_v2);
00146 end_package(lestes);
00147 
00148 #endif // lestes__backend_v2__backend_g_hh__included

Generated on Mon Feb 12 18:22:31 2007 for lestes by doxygen 1.5.1-20070107