Author: zoltan
Date: 2008-02-12 18:53:53 -0500 (Tue, 12 Feb 2008)
New Revision: 95555

Modified:
   trunk/mono/mono/mini/ChangeLog
   trunk/mono/mono/mini/mini-alpha.c
   trunk/mono/mono/mini/mini-alpha.h
   trunk/mono/mono/mini/tramp-alpha.c
Log:
2008-02-13  Zoltan Varga  <[EMAIL PROTECTED]>

        * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from 
Sergey Tikhonov 
        <[EMAIL PROTECTED]>.


Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog      2008-02-12 23:52:55 UTC (rev 95554)
+++ trunk/mono/mono/mini/ChangeLog      2008-02-12 23:53:53 UTC (rev 95555)
@@ -1,3 +1,8 @@
+2008-02-13  Zoltan Varga  <[EMAIL PROTECTED]>
+
+       * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from 
Sergey Tikhonov 
+       <[EMAIL PROTECTED]>.
+
 2008-02-12  Zoltan Varga  <[EMAIL PROTECTED]>
 
        * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 

Modified: trunk/mono/mono/mini/mini-alpha.c
===================================================================
--- trunk/mono/mono/mini/mini-alpha.c   2008-02-12 23:52:55 UTC (rev 95554)
+++ trunk/mono/mono/mini/mini-alpha.c   2008-02-12 23:53:53 UTC (rev 95555)
@@ -25,9 +25,9 @@
 #define ALPHA_PRINT if (mini_alpha_verbose_level)
 
 #define NEW_INS(cfg,ins,dest,op) do {                                  \
-   (dest) = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoInst));       \
-   (dest)->opcode = (op);  \
-   MONO_INST_LIST_ADD_TAIL (&(dest)->node, &(ins)->node);
+   (dest) = mono_mempool_alloc0 ((cfg)->mempool, sizeof (MonoInst));    \
+   (dest)->opcode = (op);                                               \
+   MONO_INST_LIST_ADD_TAIL (&(dest)->node, &(ins)->node);               \
 } while (0)
 
 #define NEW_ICONST(cfg,dest,val) do {                                  \
@@ -91,6 +91,9 @@
 
 gboolean lmf_addr_key_inited = FALSE;
 
+MonoBreakpointInfo
+mono_breakpoint_info [MONO_BREAKPOINT_ARRAY_SIZE];
+
 /*====================== End of Global Variables ===================*/
 
 gpointer mono_arch_get_lmf_addr (void);
@@ -191,7 +194,7 @@
 }
 
 static void
-add_valuetype (MonoGenericSharingContext *ctx, MonoMethodSignature *sig, 
ArgInfo *ainfo, MonoType *type,
+add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, 
ArgInfo *ainfo, MonoType *type,
                gboolean is_return,
                guint32 *gr, guint32 *fr, guint32 *stack_size)
 {
@@ -419,17 +422,21 @@
 
 /*========================= End of Function ========================*/
 
+// This peephole function is called before "local_regalloc" method
+// TSV_TODO - Check what we need to move here
 void
 mono_arch_peephole_pass_1 (MonoCompile *cfg, MonoBasicBlock *bb)
 {
+  CFG_DEBUG(3) g_print ("ALPHA: PEEPHOLE_1 pass\n");
 }
 
+// This peephole function is called after "local_regalloc" method
 void
 mono_arch_peephole_pass_2 (MonoCompile *cfg, MonoBasicBlock *bb)
 {
   MonoInst *ins, *n;
    
-  CFG_DEBUG(3) g_print ("ALPHA: PEEPHOLE pass\n");
+  CFG_DEBUG(3) g_print ("ALPHA: PEEPHOLE_2 pass\n");
 
   MONO_INST_LIST_FOR_EACH_ENTRY_SAFE (ins, n, &bb->ins_list, node) {
       MonoInst *last_ins = mono_inst_list_prev (&ins->node, &bb->ins_list);
@@ -910,8 +917,8 @@
  * Converts complex opcodes into simpler ones so that each IR instruction
  * corresponds to one machine instruction.
  */
-static void
-  mono_arch_lowering_pass (MonoCompile *cfg, MonoBasicBlock *bb)
+void
+mono_arch_lowering_pass (MonoCompile *cfg, MonoBasicBlock *bb)
 {   
    MonoInst *ins, *n, *next, *temp;
    
@@ -983,7 +990,7 @@
               ins->sreg2 = temp->dreg;
                                  
               // We should try to reevaluate new IR opcode
-              continue;
+              //continue;
             }
           
           next = mono_inst_list_next (&ins->node, &bb->ins_list);
@@ -1003,7 +1010,7 @@
                ins->sreg2 = temp->dreg;
 
                // We should try to reevaluate new IR opcode
-               continue;
+               //continue;
              }
 
           next = mono_inst_list_next (&ins->node, &bb->ins_list);
@@ -5861,9 +5868,39 @@
   return 0;
 }
 
+gpointer
+mono_arch_get_this_arg_from_call (MonoMethodSignature *sig, gssize *regs, 
guint8 *code)
+{
+  unsigned int *pc = (unsigned int *)code;
 
+  ALPHA_PRINT g_debug("ALPHA_CHECK: [mono_arch_get_this_arg_from_call] code: 
%p regs: %p",
+          pc, regs);
+
+        if (MONO_TYPE_ISSTRUCT (sig->ret))
+                return (gpointer)regs [alpha_a1];
+        else
+                return (gpointer)regs [alpha_a0];
+}
+
+gpointer
+mono_arch_get_delegate_invoke_impl (MonoMethodSignature *sig, gboolean 
has_target)
+{
+       unsigned int *code, *start;
+        MonoDomain *domain = mono_domain_get ();
+        int i;
+
+       ALPHA_PRINT g_debug("ALPHA_CHECK: 
[mono_arch_get_delegate_invoke_impl]");
+
+        /* FIXME: Support more cases */
+        if (MONO_TYPE_ISSTRUCT (sig->ret))
+                return NULL;
+
+       return NULL;
+}
+
 guint32
 mono_arch_get_patch_offset (guint8 *code)
 {
   return 3;
 }
+

Modified: trunk/mono/mono/mini/mini-alpha.h
===================================================================
--- trunk/mono/mono/mini/mini-alpha.h   2008-02-12 23:52:55 UTC (rev 95554)
+++ trunk/mono/mono/mini/mini-alpha.h   2008-02-12 23:53:53 UTC (rev 95555)
@@ -306,5 +306,10 @@
 #define MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN 1
 #define MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE 1
 
+typedef struct {
+    guint8 *address;
+    guint8 *saved_byte;
+} MonoBreakpointInfo;
 
+extern MonoBreakpointInfo  mono_breakpoint_info[MONO_BREAKPOINT_ARRAY_SIZE];
 #endif /* __MONO_MINI_ALPHA_H__ */  

Modified: trunk/mono/mono/mini/tramp-alpha.c
===================================================================
--- trunk/mono/mono/mini/tramp-alpha.c  2008-02-12 23:52:55 UTC (rev 95554)
+++ trunk/mono/mono/mini/tramp-alpha.c  2008-02-12 23:53:53 UTC (rev 95555)
@@ -181,7 +181,7 @@
       }
     
     // alpha_at points to start of this method !!!
-    alpha_ldq(code, alpha_r0, alpha_at, off);
+    alpha_ldq(code, alpha_pv, alpha_at, off);
     alpha_br(code, alpha_zero, 2);
     
     *code = (unsigned int)(((unsigned long)mono_get_lmf_addr) & 0xFFFFFFFF);
@@ -193,7 +193,7 @@
      * The call might clobber argument registers, but they are already
      * saved to the stack/global regs.
      */
-    alpha_jsr(code, alpha_ra, alpha_r0, 0);
+    alpha_jsr(code, alpha_ra, alpha_pv, 0);
     
     // Save lmf_addr
     alpha_stq(code, alpha_r0, alpha_sp,

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

Reply via email to