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);
}
}