00001
00002
00003
00004
00005
00006
00007
00008 #ifndef lestes__backend_v2__workers__simple_spillgen_g_hh__included
00009 #define lestes__backend_v2__workers__simple_spillgen_g_hh__included
00010
00011 #include <lestes/std/list.hh>
00012 #include <lestes/std/set.hh>
00013 #include <lestes/backend_v2/common.hh>
00014 #include <lestes/backend_v2/workers/worker_base.g.hh>
00015
00016 #include <lestes/std/objectize_macros.hh>
00017 package(lestes);
00018 package(backend_v2);
00019 package(structs);
00020 class func_data;
00021 end_package(structs);
00022 end_package(backend_v2);
00023 end_package(lestes);
00024
00025 package(lestes);
00026 package(backend_v2);
00027 package(intercode);
00028 class pi_mem_factory;
00029 end_package(intercode);
00030 end_package(backend_v2);
00031 end_package(lestes);
00032
00033 package(lestes);
00034 package(md);
00035 package(registers);
00036 class tm_register;
00037 end_package(registers);
00038 end_package(md);
00039 end_package(lestes);
00040
00041 package(lestes);
00042 package(md);
00043 package(types);
00044 class tm_data_type_base;
00045 end_package(types);
00046 end_package(md);
00047 end_package(lestes);
00048
00049 package(lestes);
00050 package(backend_v2);
00051 package(workers);
00052
00053
00054 class simple_spillgen;
00055
00056
00057
00058
00059
00060
00061 class simple_spillgen : public worker_base {
00062 public:
00063 void process();
00064
00065 ptr< ::lestes::backend_v2::structs::func_data > get_result();
00066
00067 ptr< ::lestes::backend_v2::intercode::pi_mem_factory > get_free_spill_place(ptr<list<srp< ::lestes::backend_v2::intercode::pi_mem_factory> > > mfs, ptr< ::lestes::md::types::tm_data_type_base > type);
00068
00069 ptr< ::lestes::md::registers::tm_register > pick_reg_by_data_type(ptr<set<ulint> > reg_set, ulint type_id);
00070
00071 void set_instruction_property(ptr<vector<srp< ::lestes::backend_v2::intercode::ge_pi > > > instrs, ulint property_id, lstring property_value);
00072
00073
00074
00075 static ptr< simple_spillgen > create (
00076 ptr< ::lestes::backend_v2::structs::func_data > a__worker_base__data);
00077
00078
00079
00080
00081 virtual ptr<reflection_list> reflection_get() const;
00082
00083 virtual ptr<field_list_list> field_values_get() const;
00084
00085 protected:
00086
00087 simple_spillgen (
00088 ptr< ::lestes::backend_v2::structs::func_data > a__worker_base__data);
00089
00090
00091 virtual void gc_mark();
00092
00093 private:
00094 static ptr<reflection_list> reflection;
00095
00096 };
00097
00098
00099 end_package(workers);
00100 end_package(backend_v2);
00101 end_package(lestes);
00102
00103 #endif // lestes__backend_v2__workers__simple_spillgen_g_hh__included