2004-08-20 Zoltan Varga <vargaz@freemail.hu>
authorZoltan Varga <vargaz@gmail.com>
Fri, 20 Aug 2004 20:04:05 +0000 (20:04 -0000)
committerZoltan Varga <vargaz@gmail.com>
Fri, 20 Aug 2004 20:04:05 +0000 (20:04 -0000)
* mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
arguments.

svn path=/trunk/mono/; revision=32604

mono/mini/ChangeLog
mono/mini/mini-amd64.c

index 4afb66b939b987d4b20462c7aa88e44318de4117..ac11eafcaf3343c354211c0dbc888731b4519fc8 100644 (file)
@@ -1,5 +1,8 @@
 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
 
+       * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
+       arguments.
+
        * driver.c: Fix profiling after TLS changes.
        
        * driver.c (mono_main): Set mono_stats.enabled if needed.
index d4e08f3864e7380dd10bf733a4cfd2f71b78f658..f81dbec596b9c4fe15ba512c71d7eaf00f94679d 100644 (file)
@@ -736,12 +736,15 @@ mono_arch_get_global_int_regs (MonoCompile *cfg)
 guint32
 mono_arch_regalloc_cost (MonoCompile *cfg, MonoMethodVar *vmv)
 {
+       MonoInst *ins = cfg->varinfo [vmv->idx];
+
        if (cfg->method->save_lmf)
                /* The register is already saved */
-               return 1;
+               /* substract 1 for the invisible store in the prolog */
+               return (ins->opcode == OP_ARG) ? 0 : 1;
        else
                /* push+pop */
-               return 2;
+               return (ins->opcode == OP_ARG) ? 1 : 2;
 }
  
 void