Author: zoltan
Date: 2007-05-09 12:50:46 -0400 (Wed, 09 May 2007)
New Revision: 77036
Modified:
branches/vargaz/mini-linear-il/mono/mono/mini/ChangeLog
branches/vargaz/mini-linear-il/mono/mono/mini/method-to-ir.c
branches/vargaz/mini-linear-il/mono/mono/mini/mini.c
Log:
2007-05-09 Zoltan Varga <[EMAIL PROTECTED]>
* mini.c (compare_by_interval_start_pos_func): Fix comparison of empty
intervals.
Modified: branches/vargaz/mini-linear-il/mono/mono/mini/ChangeLog
===================================================================
--- branches/vargaz/mini-linear-il/mono/mono/mini/ChangeLog 2007-05-09
16:50:33 UTC (rev 77035)
+++ branches/vargaz/mini-linear-il/mono/mono/mini/ChangeLog 2007-05-09
16:50:46 UTC (rev 77036)
@@ -1,5 +1,7 @@
2007-05-09 Zoltan Varga <[EMAIL PROTECTED]>
+ * mini.c (compare_by_interval_start_pos_func): Fix comparison of empty
intervals.
+
* mini-codegen.c (mono_spillvar_offset): Avoid an assert here.
* method-to-ir.c (mono_method_to_ir2): Don't print after-method-to-ir
IR in inlined
Modified: branches/vargaz/mini-linear-il/mono/mono/mini/method-to-ir.c
===================================================================
--- branches/vargaz/mini-linear-il/mono/mono/mini/method-to-ir.c
2007-05-09 16:50:33 UTC (rev 77035)
+++ branches/vargaz/mini-linear-il/mono/mono/mini/method-to-ir.c
2007-05-09 16:50:46 UTC (rev 77036)
@@ -10107,7 +10107,7 @@
* parts of the tree could be separated by other instructions, killing the
tree
* arguments, or stores killing loads etc. Also, should we fold loads into
other
* instructions if the result of the load is used multiple times ?
- * - LAST MERGE: 76948.
+ * - LAST MERGE: 77034.
*/
/*
Modified: branches/vargaz/mini-linear-il/mono/mono/mini/mini.c
===================================================================
--- branches/vargaz/mini-linear-il/mono/mono/mini/mini.c 2007-05-09
16:50:33 UTC (rev 77035)
+++ branches/vargaz/mini-linear-il/mono/mono/mini/mini.c 2007-05-09
16:50:46 UTC (rev 77036)
@@ -8560,13 +8560,14 @@
MonoMethodVar *v1 = (MonoMethodVar*)a;
MonoMethodVar *v2 = (MonoMethodVar*)b;
- if (v1->interval->range && v2->interval->range)
+ if (v1 == v2)
+ return 0;
+ else if (v1->interval->range && v2->interval->range)
return v1->interval->range->from - v2->interval->range->from;
+ else if (v1->interval->range)
+ return -1;
else
- if (v1 == v2)
- return 0;
- else
- return 1;
+ return 1;
}
#if 0
@@ -8610,6 +8611,19 @@
vars = g_list_sort (g_list_copy (vars),
compare_by_interval_start_pos_func);
+ /* Sanity check */
+ /*
+ i = 0;
+ for (unhandled = vars; unhandled; unhandled = unhandled->next) {
+ MonoMethodVar *current = unhandled->data;
+
+ if (current->interval->range) {
+ g_assert (current->interval->range->from >= i);
+ i = current->interval->range->from;
+ }
+ }
+ */
+
offset = 0;
*stack_align = 0;
for (unhandled = vars; unhandled; unhandled = unhandled->next) {
@@ -8691,6 +8705,11 @@
else
pos = current->interval->range->from;
+ LSCAN_DEBUG (printf ("process R%d ", inst->dreg));
+ if (current->interval->range)
+ LSCAN_DEBUG (mono_linterval_print
(current->interval));
+ LSCAN_DEBUG (printf ("\n"));
+
/* Check for intervals in active which expired or
inactive */
changed = TRUE;
/* FIXME: Optimize this */
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches