00001 // $Id: instancefieldslayout_pass.h,v 1.1.1.1 2000/06/08 00:10:02 afikes Exp $ 00002 00003 #ifndef INSTANCEFIELDSLAYOUTPASS__INSTANCEFIELDSLAYOUTPASS_H 00004 #define INSTANCEFIELDSLAYOUTPASS__INSTANCEFIELDSLAYOUTPASS_H 00005 00006 #include "suifkernel/suifkernel_forwarders.h" 00007 #include "suifkernel/suif_env.h" 00008 #include "suifkernel/suif_object.h" 00009 #include "suifpasses/suifpasses.h" 00010 #include "basicnodes/basic.h" 00011 #include "suifnodes/suif.h" 00012 #include "cfenodes/cfe.h" 00013 #include "osuifutilities/pass_utils.h" 00014 #include "osuifnodes/osuif.h" 00015 #include "osuifextensionnodes/osuifextension.h" 00016 #include "instancefieldslayoutnodes/instancefieldslayout_utils.h" 00017 00018 #include "instancefieldslayoutpass/instancefieldslayout.h" 00019 00020 00021 class InstanceFieldsLayoutPass : public CollectWalkerPass<ClassType> 00022 { 00023 private: 00024 InstanceFieldsLayout* _layout; 00025 00026 String _name_mangling; 00027 bool _not_use_annote_name; 00028 bool _verbose; 00029 00030 public: 00031 InstanceFieldsLayoutPass( SuifEnv* env, 00032 const LString& name= "layout_single_inheritance_instance_fields" ); 00033 virtual ~InstanceFieldsLayoutPass() { } 00034 00035 virtual void initialize_flags(); 00036 virtual void initialize(); 00037 virtual bool parse_command_line(TokenStream *command_line_stream); 00038 00039 virtual const LString mangled_name( InstanceFieldSymbol* fsym ); 00040 virtual void mangle_fields( ClassType* ctype ); 00041 00042 virtual void process_suif_object( ClassType* ctype ); 00043 }; 00044 00045 00046 #endif