Author: ankit
Date: 2005-12-22 04:06:21 -0500 (Thu, 22 Dec 2005)
New Revision: 54722
Modified:
trunk/mcs/ilasm/codegen/ChangeLog
trunk/mcs/ilasm/codegen/MethodDef.cs
trunk/mcs/ilasm/codegen/TypeDef.cs
trunk/mcs/ilasm/parser/ChangeLog
trunk/mcs/ilasm/parser/ILParser.jay
Log:
In ilasm/codegen:
* MethodDef.cs (MethodDef.ctor): Add type_def param. Use this for all
uses of
the owner type_def. ResolveGenParams () before creating signature.
(MethodDef.ResolveGenParams):
(MethodDef.ResolveGenParam): Remove type_def param, instead use
type_def field.
(MethodDef.Define): Remove overload with typedef param.
(MethodDef.CreateSignature): Put "`0" right after the name instead of
at the end.
* TypeDef.cs (TypeDef.DefineContents): Update usage of MethodDef.Define
.
In ilasm/parser:
* ILParser.jay (method_head | ..): Update usage of MethodDef.ctor to
pass
codegen.CurrentTypeDef also. ResolveGenParams is called by MethodDef
internally.
(instr | INSTR_FIELD ..): Update usage of MethodDef.ResolveGenParam .
Modified: trunk/mcs/ilasm/codegen/ChangeLog
===================================================================
--- trunk/mcs/ilasm/codegen/ChangeLog 2005-12-22 06:31:44 UTC (rev 54721)
+++ trunk/mcs/ilasm/codegen/ChangeLog 2005-12-22 09:06:21 UTC (rev 54722)
@@ -1,3 +1,13 @@
+2005-12-22 Ankit Jain <[EMAIL PROTECTED]>
+
+ * MethodDef.cs (MethodDef.ctor): Add type_def param. Use this for all
uses of
+ the owner type_def. ResolveGenParams () before creating signature.
+ (MethodDef.ResolveGenParams):
+ (MethodDef.ResolveGenParam): Remove type_def param, instead use
type_def field.
+ (MethodDef.Define): Remove overload with typedef param.
+ (MethodDef.CreateSignature): Put "`0" right after the name instead of
at the end.
+ * TypeDef.cs (TypeDef.DefineContents): Update usage of MethodDef.Define
.
+
2005-12-21 Ankit Jain <[EMAIL PROTECTED]>
* GenericArguments.cs (GenericArguments): New.
Modified: trunk/mcs/ilasm/codegen/MethodDef.cs
===================================================================
--- trunk/mcs/ilasm/codegen/MethodDef.cs 2005-12-22 06:31:44 UTC (rev
54721)
+++ trunk/mcs/ilasm/codegen/MethodDef.cs 2005-12-22 09:06:21 UTC (rev
54722)
@@ -53,11 +53,12 @@
private PEAPI.PInvokeAttr pinvoke_attr;
private SourceMethod source;
private PEAPI.NativeType ret_native_type;
+ private TypeDef type_def;
public MethodDef (CodeGen codegen, PEAPI.MethAttr meth_attr,
PEAPI.CallConv call_conv, PEAPI.ImplAttr
impl_attr,
string name, ITypeRef ret_type, ArrayList
param_list,
- Location start, ArrayList typars_list)
+ Location start, ArrayList typars_list,
TypeDef type_def)
{
this.meth_attr = meth_attr;
this.call_conv = call_conv;
@@ -65,6 +66,7 @@
this.name = name;
this.ret_type = ret_type;
this.param_list = param_list;
+ this.type_def = type_def;
inst_list = new ArrayList ();
label_table = new Hashtable ();
@@ -82,6 +84,7 @@
is_defined = false;
is_resolved = false;
AddGenericParams (typars_list);
+ ResolveGenParams ();
CreateSignature ();
codegen.BeginMethodDef (this);
@@ -302,7 +305,7 @@
this.max_stack = max_stack;
}
- public void ResolveGenParam (PEAPI.GenParam gpar, TypeDef
type_def)
+ public void ResolveGenParam (PEAPI.GenParam gpar)
{
if (gpar.Index != -1)
return;
@@ -319,11 +322,11 @@
gpar.Name));
}
- public void ResolveGenParams (TypeDef type_def)
+ public void ResolveGenParams ()
{
GenericTypeRef gtr = ret_type as GenericTypeRef;
if (gtr != null)
- ResolveGenParam ((PEAPI.GenParam)
gtr.PeapiType, type_def);
+ ResolveGenParam ((PEAPI.GenParam)
gtr.PeapiType);
if (param_list == null)
return;
@@ -331,7 +334,7 @@
foreach (ParamDef param in param_list) {
gtr = param.Type as GenericTypeRef;
if (gtr != null)
- ResolveGenParam ((PEAPI.GenParam)
gtr.PeapiType, type_def);
+ ResolveGenParam ((PEAPI.GenParam)
gtr.PeapiType);
}
}
@@ -420,32 +423,21 @@
}
/// <summary>
- /// Define a global method
+ /// Define a member method
/// </summary>
public void Define (CodeGen code_gen)
{
if (is_defined)
return;
- Resolve (code_gen);
-
+ if (type_def == null)
+ /* Global method */
+ Resolve (code_gen, null);
+ else
+ Resolve (code_gen, (PEAPI.ClassDef)
type_def.ClassDef);
+
WriteCode (code_gen, methoddef);
- //code_gen.Report.Message (String.Format ("Assembled
method '<Module>'::{0}", name));
- is_defined = true;
- }
-
- /// <summary>
- /// Define a member method
- /// </summary>
- public void Define (CodeGen code_gen, TypeDef typedef)
- {
- if (is_defined)
- return;
-
- Resolve (code_gen, (PEAPI.ClassDef) typedef.ClassDef);
- WriteCode (code_gen, methoddef);
-
//code_gen.Report.Message (String.Format ("Assembled
method {0}::{1}", typedef.FullName, name)); is_defined =
true;
}
@@ -653,6 +645,7 @@
builder.Append (RetType.FullName);
builder.Append (" ");
builder.Append (name);
+ builder.AppendFormat ("`{0}", gen_param_count);
builder.Append ('(');
if (param_list != null) {
@@ -665,7 +658,6 @@
}
}
builder.Append (')');
- builder.AppendFormat ("`{0}", gen_param_count);
return builder.ToString ();
}
@@ -745,6 +737,7 @@
builder.Append (RetType.FullName);
builder.Append (" ");
builder.Append (name);
+ builder.AppendFormat ("`{0}", gen_param_count);
builder.Append ('(');
if (param_list != null) {
@@ -759,7 +752,6 @@
}
}
builder.Append (')');
- builder.AppendFormat ("`{0}", gen_param_count);
return builder.ToString ();
}
Modified: trunk/mcs/ilasm/codegen/TypeDef.cs
===================================================================
--- trunk/mcs/ilasm/codegen/TypeDef.cs 2005-12-22 06:31:44 UTC (rev 54721)
+++ trunk/mcs/ilasm/codegen/TypeDef.cs 2005-12-22 09:06:21 UTC (rev 54722)
@@ -394,7 +394,7 @@
classdef.SetFieldOrder (fielddef_list);
foreach (MethodDef methoddef in method_table.Values) {
- methoddef.Define (code_gen, this);
+ methoddef.Define (code_gen);
}
if (event_list != null) {
Modified: trunk/mcs/ilasm/parser/ChangeLog
===================================================================
--- trunk/mcs/ilasm/parser/ChangeLog 2005-12-22 06:31:44 UTC (rev 54721)
+++ trunk/mcs/ilasm/parser/ChangeLog 2005-12-22 09:06:21 UTC (rev 54722)
@@ -1,3 +1,9 @@
+2005-12-22 Ankit Jain <[EMAIL PROTECTED]>
+
+ * ILParser.jay (method_head | ..): Update usage of MethodDef.ctor to
pass
+ codegen.CurrentTypeDef also. ResolveGenParams is called by MethodDef
internally.
+ (instr | INSTR_FIELD ..): Update usage of MethodDef.ResolveGenParam .
+
2005-12-21 Ankit Jain <[EMAIL PROTECTED]>
* ILParser.jay: Update to use new GenericArguments class for 'typars'.
Modified: trunk/mcs/ilasm/parser/ILParser.jay
===================================================================
--- trunk/mcs/ilasm/parser/ILParser.jay 2005-12-22 06:31:44 UTC (rev 54721)
+++ trunk/mcs/ilasm/parser/ILParser.jay 2005-12-22 09:06:21 UTC (rev 54722)
@@ -1727,15 +1727,13 @@
MethodDef methdef = new MethodDef (
codegen, (MethAttr) $2, cc,
(ImplAttr) $11, (string) $6,
(ITypeRef) $5,
- (ArrayList) $9,
tokenizer.Reader.Location, (ArrayList) $7);
+ (ArrayList) $9,
tokenizer.Reader.Location, (ArrayList) $7, codegen.CurrentTypeDef);
if (pinvoke_info) {
ExternModule mod =
codegen.ExternTable.AddModule (pinvoke_mod);
methdef.AddPInvokeInfo (pinvoke_attr,
mod, pinvoke_meth);
pinvoke_info = false;
}
-
- methdef.ResolveGenParams
(codegen.CurrentTypeDef);
}
| D_METHOD meth_attr call_conv param_attr type
K_MARSHAL OPEN_PARENS native_type CLOSE_PARENS
method_name
@@ -1744,7 +1742,7 @@
MethodDef methdef = new MethodDef (
codegen, (MethAttr) $2, (CallConv) $3,
(ImplAttr) $14, (string) $10,
(ITypeRef) $5,
- (ArrayList) $12,
tokenizer.Reader.Location, null);
+ (ArrayList) $12,
tokenizer.Reader.Location, null, codegen.CurrentTypeDef);
if (pinvoke_info) {
ExternModule mod =
codegen.ExternTable.AddModule (pinvoke_mod);
@@ -2283,7 +2281,7 @@
ITypeRef owner = (ITypeRef) $3;
GenericTypeRef gtr = $2 as GenericTypeRef;
if (gtr != null && codegen.CurrentMethodDef !=
null)
-
codegen.CurrentMethodDef.ResolveGenParam ((PEAPI.GenParam) gtr.PeapiType,
codegen.CurrentTypeDef);
+
codegen.CurrentMethodDef.ResolveGenParam ((PEAPI.GenParam) gtr.PeapiType);
IFieldRef fieldref = owner.GetFieldRef (
(ITypeRef) $2, (string) $5);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches