Author: alexandre
Date: 2005-10-31 17:55:13 -0500 (Mon, 31 Oct 2005)
New Revision: 52427

Modified:
   trunk/mcs/mbas/ChangeLog
   trunk/mcs/mbas/ecore.cs
Log:
2005-10-31 Maverson Eduardo Schulze Rosa <[EMAIL PROTECTED]>
        * ecore.cs: Fix UnboxCast Emit calling Activator.CreateInstance 
when necessary.



Modified: trunk/mcs/mbas/ChangeLog
===================================================================
--- trunk/mcs/mbas/ChangeLog    2005-10-31 22:44:02 UTC (rev 52426)
+++ trunk/mcs/mbas/ChangeLog    2005-10-31 22:55:13 UTC (rev 52427)
@@ -1,4 +1,8 @@
- 2005-10-29 Renato Suga<[EMAIL PROTECTED]>
+2005-10-31 Maverson Eduardo Schulze Rosa <[EMAIL PROTECTED]>
+       * ecore.cs: Fix UnboxCast Emit calling Activator.CreateInstance when
+       necessary.
+
+2005-10-29 Renato Suga<[EMAIL PROTECTED]>
        * codegen.cs: Added static global ArrayList ArrListVersion to keep the 
        assembly's version numbers. reating a new Version(string str) is not 
        working. The Init() method was modified to correctly set the version 
value;

Modified: trunk/mcs/mbas/ecore.cs
===================================================================
--- trunk/mcs/mbas/ecore.cs     2005-10-31 22:44:02 UTC (rev 52426)
+++ trunk/mcs/mbas/ecore.cs     2005-10-31 22:55:13 UTC (rev 52427)
@@ -3742,6 +3742,17 @@
                        ILGenerator ig = ec.ig;
                        
                        base.Emit (ec);
+                       
+                       ig.Emit (OpCodes.Dup);
+                       Label unbox = ig.DefineLabel ();
+                       ig.Emit (OpCodes.Brtrue, unbox);
+                       ig.Emit (OpCodes.Pop);
+                       ig.Emit (OpCodes.Ldtoken, t);
+                       ig.Emit (OpCodes.Call, 
TypeManager.system_type_get_type_from_handle);
+                       MethodInfo createInst =  
Type.GetType("System.Activator").GetMethod ("CreateInstance", new 
Type[]{Type.GetType("System.Type")} );
+                       ig.Emit (OpCodes.Call, createInst );
+                       
+                       ig.MarkLabel (unbox);           
                        ig.Emit (OpCodes.Unbox, t);
 
                        LoadFromPtr (ig, t);

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to