示例#1
0
文件: MethodDef.cs 项目: mdae/MonoRT
        public MethodDef(CodeGen codegen, PEAPI.MethAttr meth_attr,
                         PEAPI.CallConv call_conv, PEAPI.ImplAttr impl_attr,
                         string name, BaseTypeRef ret_type, ArrayList param_list,
                         Location start, GenericParameters gen_params, TypeDef type_def)
        {
            this.codegen    = codegen;
            this.meth_attr  = meth_attr;
            this.call_conv  = call_conv;
            this.impl_attr  = impl_attr;
            this.name       = name;
            this.param_list = param_list;
            this.type_def   = type_def;
            this.gen_params = gen_params;
            this.ret_param  = new ParamDef(PEAPI.ParamAttr.Default, "", ret_type);
            this.start      = (Location)start.Clone();

            inst_list          = new ArrayList();
            label_table        = new Hashtable();
            labelref_table     = new Hashtable();
            label_list         = new ArrayList();
            local_list         = new ArrayList();
            named_local_tables = new ArrayList();
            named_local_tables.Add(new Hashtable());
            current_scope_depth = 0;

            entry_point  = false;
            zero_init    = false;
            init_locals  = false;
            max_stack    = -1;
            pinvoke_info = false;

            is_defined  = false;
            is_resolved = false;
            ResolveGenParams();
            CreateSignature();

            codegen.BeginMethodDef(this);

            if (codegen.SymbolWriter != null)
            {
                source = codegen.SymbolWriter.BeginMethod(this, start);
            }
        }
示例#2
0
                public MethodDef (CodeGen codegen, PEAPI.MethAttr meth_attr,
				  PEAPI.CallConv call_conv, PEAPI.ImplAttr impl_attr,
				  string name, BaseTypeRef ret_type, ArrayList param_list,
				  Location start, GenericParameters gen_params, TypeDef type_def)
                {
                        this.codegen = codegen;
                        this.meth_attr = meth_attr;
                        this.call_conv = call_conv;
                        this.impl_attr = impl_attr;
                        this.name = name;
                        this.param_list = param_list;
                        this.type_def = type_def;
                        this.gen_params = gen_params;
                        this.ret_param = new ParamDef (PEAPI.ParamAttr.Default, "", ret_type);
                        this.start = (Location) start.Clone ();

                        inst_list = new ArrayList ();
                        label_table = new Hashtable ();
                        labelref_table = new Hashtable ();
                        label_list = new ArrayList ();
                        local_list = new ArrayList ();
                        named_local_tables = new ArrayList ();
                        named_local_tables.Add (new Hashtable ());
                        current_scope_depth = 0;

                        entry_point = false;
                        zero_init = false;
                        init_locals = false;
                        max_stack = -1;
                        pinvoke_info = false;

                        is_defined = false;
                        is_resolved = false;
                        ResolveGenParams ();
                        CreateSignature ();

			codegen.BeginMethodDef (this);

			if (codegen.SymbolWriter != null)
				source = codegen.SymbolWriter.BeginMethod (this, start);
                }