Revert patch until Rodrigo comes back on Monday
authorMiguel de Icaza <miguel@gnome.org>
Sun, 26 Jul 2009 01:33:08 +0000 (01:33 -0000)
committerMiguel de Icaza <miguel@gnome.org>
Sun, 26 Jul 2009 01:33:08 +0000 (01:33 -0000)
svn path=/trunk/mcs/; revision=138681

mcs/class/corlib/System.Reflection.Emit/ChangeLog
mcs/class/corlib/System.Reflection.Emit/EventBuilder.cs
mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs
mcs/class/corlib/System.Reflection/ChangeLog
mcs/class/corlib/System.Reflection/MonoGenericClass.cs
mcs/class/corlib/corlib.dll.sources

index 9ef0cc4b33c3e887da01e7044775c8dc36957b86..1cf9ea581ab9aed49b572f02b10002f7a7038744 100644 (file)
@@ -1,10 +1,3 @@
-2009-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
-
-       * EventBuilder.cs: Make some fields internal.
-
-       * TypeBuilder.cs: Make events field internal.
-       Remove some MonoTODOs that are already done.
-
 2009-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
 
        * TypeBuilder.cs: Make the interfaces field internal.
index ca7331bef64caa50614a37102dc051447fcd45a3..4c391538ec15f619ed2615bc9e238bec342eb576 100644 (file)
@@ -46,15 +46,15 @@ namespace System.Reflection.Emit {
        [ClassInterface (ClassInterfaceType.None)]
        public sealed class EventBuilder : _EventBuilder {
 #pragma warning disable 169, 414
-               internal string name;
+               string name;
                Type type;
                TypeBuilder typeb;
                CustomAttributeBuilder[] cattrs;
-               internal MethodBuilder add_method;
-               internal MethodBuilder remove_method;
-               internal MethodBuilder raise_method;
-               internal MethodBuilder[] other_methods;
-               internal EventAttributes attrs;
+               MethodBuilder add_method;
+               MethodBuilder remove_method;
+               MethodBuilder raise_method;
+               MethodBuilder[] other_methods;
+               EventAttributes attrs;
                int table_idx;
 #pragma warning restore 169, 414
 
index c8cfcd55a6c7a69783b5e05dcb90c17b0faf6cfc..299ae5ff44c0f29a03aa3834d3e29d2c4165533a 100644 (file)
@@ -65,7 +65,7 @@ namespace System.Reflection.Emit
                internal PropertyBuilder[] properties;
                internal int num_fields;
                internal FieldBuilder[] fields;
-               internal EventBuilder[] events;
+               private EventBuilder[] events;
                private CustomAttributeBuilder[] cattrs;
                internal TypeBuilder[] subtypes;
                internal TypeAttributes attrs;
@@ -1392,6 +1392,7 @@ namespace System.Reflection.Emit
                        return new ArrayType (this, rank);
                }
 
+               [MonoTODO]
                public override Type MakeByRefType ()
                {
                        return new ByRefType (this);
@@ -1403,6 +1404,7 @@ namespace System.Reflection.Emit
                        return base.MakeGenericType (typeArguments);
                }
 
+               [MonoTODO]
                public override Type MakePointerType ()
                {
                        return new PointerType (this);
index 0db455a7f01de168b34a9a93511a651b2de477cc..c28ce5e7498220add9fde7e0ae84ca1564b05cab 100644 (file)
@@ -1,13 +1,3 @@
-2009-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
-
-       * MonoGenericClass.cs (initialize): Remember the number
-       of events available at initialization time. This is required as
-       mcs expect this behavior under compiler context that new events
-       are not returned for an instance that was inflated before.
-
-       * MonoGenericClass.cs: Kill GetEvents_internal and implement it
-       in terms of managed code.
-
 2009-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
 
        * MonoGenericClass.cs (GetParentType): Implement using managed code.
index e0b9ad2bd0205a2a8535eb85efd0b8062395d462..4cea802b7e52c43f1d6b658694054181fb622a1c 100644 (file)
@@ -58,7 +58,6 @@ namespace System.Reflection
                #endregion
 
                Hashtable fields, ctors, methods;
-               int event_count;
 
                internal MonoGenericClass ()
                        : base (null)
@@ -72,6 +71,9 @@ namespace System.Reflection
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                extern MethodInfo GetCorrespondingInflatedMethod (MethodInfo generic);
+               
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               extern EventInfo[] GetEvents_internal (Type reflected_type);
 
                private const BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic |
                BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly;
@@ -85,14 +87,11 @@ namespace System.Reflection
                        if (parent != null)
                                parent.initialize ();
 
-                       EventInfo[] events = generic_type.GetEvents_internal (flags);
-                       event_count = events.Length;
-
                        initialize (generic_type.GetMethods (flags),
                                                generic_type.GetConstructors (flags),
                                                generic_type.GetFields (flags),
                                                generic_type.GetProperties (flags),
-                                               events);
+                                               generic_type.GetEvents_internal (flags));
 
                        initialized = true;
                }
@@ -520,7 +519,7 @@ namespace System.Reflection
                        do {
                                MonoGenericClass gi = current_type as MonoGenericClass;
                                if (gi != null)
-                                       l.AddRange (gi.GetEventsInternal (bf, this));
+                                       l.AddRange (gi.GetEvents_impl (bf, this));
                                else if (current_type is TypeBuilder)
                                        l.AddRange (current_type.GetEvents (bf));
                                else {
@@ -538,25 +537,25 @@ namespace System.Reflection
                        l.CopyTo (result);
                        return result;
                }
-       
-               EventInfo[] GetEventsInternal (BindingFlags bf, MonoGenericClass reftype) {
-                       if (generic_type.events == null)
-                               return new EventInfo [0];
-
-                       initialize ();
 
+               protected EventInfo[] GetEvents_impl (BindingFlags bf, Type reftype)
+               {
                        ArrayList l = new ArrayList ();
                        bool match;
                        MethodAttributes mattrs;
                        MethodInfo accessor;
 
-                       for (int i = 0; i < event_count; ++i) {
-                               EventBuilder ev = generic_type.events [i];
+                       initialize ();
+
+                       EventInfo[] events = GetEvents_internal (reftype);
+
+                       for (int i = 0; i < events.Length; i++) {
+                               EventInfo c = events [i];
 
                                match = false;
-                               accessor = ev.add_method;
+                               accessor = c.GetAddMethod (true);
                                if (accessor == null)
-                                       accessor = ev.remove_method;
+                                       accessor = c.GetRemoveMethod (true);
                                if (accessor == null)
                                        continue;
                                mattrs = accessor.Attributes;
@@ -579,7 +578,7 @@ namespace System.Reflection
                                }
                                if (!match)
                                        continue;
-                               l.Add (new EventOnTypeBuilderInst (reftype, ev));
+                               l.Add (c);
                        }
                        EventInfo[] result = new EventInfo [l.Count];
                        l.CopyTo (result);
index 198d6cc310db8019403ed7a894a15172c856b785..24ea4d30078a26170dd11eb08d5f906a05c462f2 100644 (file)
@@ -519,7 +519,6 @@ System.Reflection.Emit/DynamicILInfo.cs
 System.Reflection.Emit/DynamicMethod.cs
 System.Reflection.Emit/EnumBuilder.cs
 System.Reflection.Emit/EventBuilder.cs
-System.Reflection.Emit/EventOnTypeBuilderInst.cs
 System.Reflection.Emit/EventToken.cs
 System.Reflection.Emit/FieldBuilder.cs
 System.Reflection.Emit/FieldOnTypeBuilderInst.cs