2002-05-22 Martin Baulig <martin@gnome.org>
authorMartin Baulig <martin@novell.com>
Wed, 22 May 2002 16:10:10 +0000 (16:10 -0000)
committerMartin Baulig <martin@novell.com>
Wed, 22 May 2002 16:10:10 +0000 (16:10 -0000)
* AssemblyBuilder.cs (methods): New field.
(get_next_table_index): Record all methods and constructors
(table 0x06) in the `methods' array.  This is read by the
Mono.CSharp.Debugger.MonoSymbolWriter::get_method interncall to
get the MethodBuilder / ConstructorBuilder back from the token.

* *Builder.cs (get_next_table_index): Added `object obj' argument.
(<constructors>): pass the this pointer to get_next_table_index ().

svn path=/trunk/mcs/; revision=4856

mcs/class/corlib/System.Reflection.Emit/AssemblyBuilder.cs
mcs/class/corlib/System.Reflection.Emit/ChangeLog
mcs/class/corlib/System.Reflection.Emit/ConstructorBuilder.cs
mcs/class/corlib/System.Reflection.Emit/EventBuilder.cs
mcs/class/corlib/System.Reflection.Emit/FieldBuilder.cs
mcs/class/corlib/System.Reflection.Emit/MethodBuilder.cs
mcs/class/corlib/System.Reflection.Emit/ModuleBuilder.cs
mcs/class/corlib/System.Reflection.Emit/ParameterBuilder.cs
mcs/class/corlib/System.Reflection.Emit/PropertyBuilder.cs
mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs

index 1f44ad40ebd4d1d4c87a60a609f18d024fd25c09..fbcc9b50b792035d2a2e212de955f5ed997aa12a 100755 (executable)
@@ -15,6 +15,7 @@ using System.Security.Policy;
 using System.Runtime.Serialization;
 using System.Globalization;
 using System.Runtime.CompilerServices;
+using System.Collections;
 
 namespace System.Reflection.Emit {
 
@@ -26,6 +27,7 @@ namespace System.Reflection.Emit {
                private string dir;
                private CustomAttributeBuilder[] cattrs;
                private int[] table_indexes;
+               private ArrayList methods;
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                private static extern void basic_init (AssemblyBuilder ab);
@@ -33,10 +35,11 @@ namespace System.Reflection.Emit {
                internal AssemblyBuilder (AssemblyName n, string directory, AssemblyBuilderAccess access) {
                        name = n.Name;
                        dir = directory;
+                       methods = new ArrayList ();
                        basic_init (this);
                }
 
-               internal int get_next_table_index (int table, bool inc) {
+               internal int get_next_table_index (object obj, int table, bool inc) {
                        if (table_indexes == null) {
                                table_indexes = new int [64];
                                for (int i=0; i < 64; ++i)
@@ -45,8 +48,11 @@ namespace System.Reflection.Emit {
                                table_indexes [0x02] = 2;
                        }
                        // Console.WriteLine ("getindex for table "+table.ToString()+" got "+table_indexes [table].ToString());
-                       if (inc)
+                       if (inc) {
+                               if (table == 0x06)
+                                       methods.Add (obj);
                                return table_indexes [table]++;
+                       }
                        return table_indexes [table];
                }
 
index f241f7776427f7333365476f086c41b1e61ab478..28bd8401e736f7ea5a1e9127aa9fb9e7d6f4b023 100644 (file)
@@ -1,3 +1,14 @@
+2002-05-22  Martin Baulig  <martin@gnome.org>
+
+       * AssemblyBuilder.cs (methods): New field.
+       (get_next_table_index): Record all methods and constructors
+       (table 0x06) in the `methods' array.  This is read by the
+       Mono.CSharp.Debugger.MonoSymbolWriter::get_method interncall to
+       get the MethodBuilder / ConstructorBuilder back from the token.
+
+       * *Builder.cs (get_next_table_index): Added `object obj' argument.
+       (<constructors>): pass the this pointer to get_next_table_index ().
+
 2002-05-20  Martin Baulig  <martin@gnome.org>
 
        * TypeBuilder.cs (DefineField): Call the new `create_internal_class'
index 97e7d9d7d5b6eb9fec0c6fae277326dcdc6b40cc..41ef0dd9ca9f26ba1f7f43f5ee7b8e7643d7b564 100644 (file)
@@ -35,7 +35,7 @@ namespace System.Reflection.Emit {
                                System.Array.Copy (parameterTypes, this.parameters, parameterTypes.Length);
                        }
                        type = tb;
-                       table_idx = get_next_table_index (0x06, true);
+                       table_idx = get_next_table_index (this, 0x06, true);
                }
                
                public bool InitLocals {
@@ -135,8 +135,8 @@ namespace System.Reflection.Emit {
                        if (ilgen != null)
                                ilgen.label_fixup ();
                }
-               internal override int get_next_table_index (int table, bool inc) {
-                       return type.get_next_table_index (table, inc);
+               internal override int get_next_table_index (object obj, int table, bool inc) {
+                       return type.get_next_table_index (obj, table, inc);
                }
 
        }
index 8298dcdc79b2307d4fbb25a7391de4e6862181fd..507620a47645abb5a318986d10c21f033554f4e2 100755 (executable)
@@ -33,11 +33,11 @@ namespace System.Reflection.Emit {
                        attrs = eventAttrs;
                        type = eventType;
                        typeb = tb;
-                       table_idx = get_next_table_index (0x14, true);
+                       table_idx = get_next_table_index (this, 0x14, true);
                }
 
-               internal int get_next_table_index (int table, bool inc) {
-                       return typeb.get_next_table_index (table, inc);
+               internal int get_next_table_index (object obj, int table, bool inc) {
+                       return typeb.get_next_table_index (obj, table, inc);
                }
 
                public void AddOtherMethod( MethodBuilder mdBuilder) {
index c22f5fd61beead2c94b2f1343fa23271b7983eb4..cb99b7608bfa62e680f20d72eb9bfb7700f553b4 100755 (executable)
@@ -33,7 +33,7 @@ namespace System.Reflection.Emit {
                        this.type = type;
                        offset = -1;
                        typeb = tb;
-                       table_idx = tb.get_next_table_index (0x04, true);
+                       table_idx = tb.get_next_table_index (this, 0x04, true);
                }
 
                public override FieldAttributes Attributes {
index caf483ad78102a84468d1d282751b26c3d1fda65..e2953b2a67ac44e42e8f950bd4e1c6764b87cc79 100755 (executable)
@@ -47,7 +47,7 @@ namespace System.Reflection.Emit {
                                System.Array.Copy (parameterTypes, this.parameters, parameterTypes.Length);
                        }
                        type = tb;
-                       table_idx = get_next_table_index (0x06, true);
+                       table_idx = get_next_table_index (this, 0x06, true);
                        //Console.WriteLine ("index for "+name+" set to "+table_idx.ToString());
                }
 
@@ -150,8 +150,8 @@ namespace System.Reflection.Emit {
                public void SetImplementationFlags( MethodImplAttributes attributes) {
                        iattrs = attributes;
                }
-               internal override int get_next_table_index (int table, bool inc) {
-                       return type.get_next_table_index (table, inc);
+               internal override int get_next_table_index (object obj, int table, bool inc) {
+                       return type.get_next_table_index (obj, table, inc);
                }
 
                internal void set_override (MethodInfo mdecl) {
index bb4160d98541b6316c38465a48032338b10674f0..49509112b41f8bb6d1459ecc17b43b8fdb1b53b6 100644 (file)
@@ -31,7 +31,7 @@ namespace System.Reflection.Emit {
                        this.fqname = fullyqname;
                        this.assembly = this.assemblyb = assb;
                        guid = Guid.NewGuid().ToByteArray ();
-                       table_idx = get_next_table_index (0x00, true);
+                       table_idx = get_next_table_index (this, 0x00, true);
                        name_cache = new Hashtable ();
 
                        if (emitSymbolInfo)
@@ -51,12 +51,14 @@ namespace System.Reflection.Emit {
                        if (type == null)
                                return null;
 
-                       Type[] arg_types = new Type [1];
-                       arg_types [0] = typeof (string);
+                       Type[] arg_types = new Type [2];
+                       arg_types [0] = typeof (ModuleBuilder);
+                       arg_types [1] = typeof (string);
                        ConstructorInfo constructor = type.GetConstructor (arg_types);
 
-                       object[] args = new object [1];
-                       args [0] = filename;
+                       object[] args = new object [2];
+                       args [0] = this;
+                       args [1] = filename;
 
                        if (constructor == null)
                                return null;
@@ -184,8 +186,8 @@ namespace System.Reflection.Emit {
                        return result;
                }
 
-               internal int get_next_table_index (int table, bool inc) {
-                       return assemblyb.get_next_table_index (table, inc);
+               internal int get_next_table_index (object obj, int table, bool inc) {
+                       return assemblyb.get_next_table_index (obj, table, inc);
                }
 
                public void SetCustomAttribute( CustomAttributeBuilder customBuilder) {
index 564952a7846f6f5cfd6bb8553088b9927f8154a5..edb03d74d93c959d723b732ff41dfaa2c51d8be5 100755 (executable)
@@ -29,7 +29,7 @@ namespace System.Reflection.Emit {
                        position = pos;
                        attrs = attributes;
                        methodb = mb;
-                       table_idx = mb.get_next_table_index (0x08, true);
+                       table_idx = mb.get_next_table_index (this, 0x08, true);
                }
 
                public virtual int Attributes {
index 57039b01c2c1e1b44c52cde04a8e459f58e878ae..9a548923c23260c1ddb02dc25c339a768521ea98 100755 (executable)
@@ -36,7 +36,7 @@ namespace System.Reflection.Emit {
                                System.Array.Copy (parameterTypes, this.parameters, this.parameters.Length);
                        }
                        typeb = tb;
-                       table_idx = tb.get_next_table_index (0x17, true);
+                       table_idx = tb.get_next_table_index (this, 0x17, true);
                }
 
                public override PropertyAttributes Attributes {
index 6494147315ebe78b904daf397313e2f7ee40806f..a85dd2cdaa6b7ddc96551050c0d0291912a45111 100644 (file)
@@ -67,7 +67,7 @@ namespace System.Reflection.Emit {
                        }
                        pmodule = mb;
                        // skip .<Module> ?
-                       table_idx = mb.get_next_table_index (0x02, true);
+                       table_idx = mb.get_next_table_index (this, 0x02, true);
                        setup_internal_class (this);
                }
 
@@ -683,8 +683,8 @@ namespace System.Reflection.Emit {
                public void SetParent (Type parentType) {
                        parent = parentType;
                }
-               internal int get_next_table_index (int table, bool inc) {
-                       return pmodule.get_next_table_index (table, inc);
+               internal int get_next_table_index (object obj, int table, bool inc) {
+                       return pmodule.get_next_table_index (obj, table, inc);
                }
 
        }