Author: lupus
Date: 2007-03-23 09:04:02 -0500 (Fri, 23 Mar 2007)
New Revision: 74871

Modified:
   trunk/mono/mono/mini/mini-ppc.c
Log:
Saved buffer.


Modified: trunk/mono/mono/mini/mini-ppc.c
===================================================================
--- trunk/mono/mono/mini/mini-ppc.c     2007-03-23 12:32:08 UTC (rev 74870)
+++ trunk/mono/mono/mini/mini-ppc.c     2007-03-23 14:04:02 UTC (rev 74871)
@@ -1000,8 +1000,17 @@
                                if (arg->type == STACK_I8)
                                        call->used_iregs |= 1 << (ainfo->reg + 
1);
                        } else if (ainfo->regtype == RegTypeStructByAddr) {
-                               arg->backend.reg3 = ainfo->reg;
-                               call->used_iregs |= 1 << ainfo->reg;
+                               if (ainfo->offset) {
+                                       MonoPPCArgInfo *ai = 
mono_mempool_alloc0 (cfg->mempool, sizeof (MonoPPCArgInfo));
+                                       arg->opcode = OP_OUTARG_MEMBASE;
+                                       ai->reg = ainfo->reg;
+                                       ai->size = sizeof (gpointer);
+                                       ai->offset = ainfo->offset;
+                                       arg->backend.data = ai;
+                               } else {
+                                       arg->backend.reg3 = ainfo->reg;
+                                       call->used_iregs |= 1 << ainfo->reg;
+                               }
                        } else if (ainfo->regtype == RegTypeStructByVal) {
                                int cur_reg;
                                MonoPPCArgInfo *ai = mono_mempool_alloc0 
(cfg->mempool, sizeof (MonoPPCArgInfo));

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

Reply via email to