Author: zoltan
Date: 2007-02-28 13:43:23 -0500 (Wed, 28 Feb 2007)
New Revision: 73567

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/marshal.c
Log:
2007-02-28  Zoltan Varga  <[EMAIL PROTECTED]>

        * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling 
HandleRefs.
        (emit_marshal_handleref): Ditto.


Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2007-02-28 18:13:27 UTC (rev 73566)
+++ trunk/mono/mono/metadata/ChangeLog  2007-02-28 18:43:23 UTC (rev 73567)
@@ -1,5 +1,8 @@
 2007-02-28  Zoltan Varga  <[EMAIL PROTECTED]>
 
+       * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling 
HandleRefs.
+       (emit_marshal_handleref): Ditto.
+
        * profiler.c: Applied patch from Tor Lillqvist ([EMAIL PROTECTED]) to 
fix output
        on Visual C++. Fixes #80671.
 

Modified: trunk/mono/mono/metadata/marshal.c
===================================================================
--- trunk/mono/mono/metadata/marshal.c  2007-02-28 18:13:27 UTC (rev 73566)
+++ trunk/mono/mono/metadata/marshal.c  2007-02-28 18:43:23 UTC (rev 73567)
@@ -2426,7 +2426,8 @@
        case MONO_MARSHAL_CONV_HANDLEREF: {
                mono_mb_emit_ldloc (mb, 1);
                mono_mb_emit_ldloc (mb, 0);
-               mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoHandleRef, 
handle));
+               mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoHandleRef, handle));
+               mono_mb_emit_byte (mb, CEE_ADD);
                mono_mb_emit_byte (mb, CEE_LDIND_I);
                mono_mb_emit_byte (mb, CEE_STIND_I);
                break;
@@ -6478,8 +6479,9 @@
                                "HandleRefs can not be returned from unmanaged 
code (or passed by ref)");
                        break;
                } 
-               mono_mb_emit_ldarg (mb, argnum);
-               mono_mb_emit_ldflda (mb, G_STRUCT_OFFSET (MonoHandleRef, 
handle));
+               mono_mb_emit_ldarg_addr (mb, argnum);
+               mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoHandleRef, handle));
+               mono_mb_emit_byte (mb, CEE_ADD);
                mono_mb_emit_byte (mb, CEE_LDIND_I);
                mono_mb_emit_stloc (mb, conv_arg);
                break;

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

Reply via email to