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