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

Reply via email to