Modified:
trunk/mono/mono/mini/ChangeLog
trunk/mono/mono/mini/iltests.il.in
trunk/mono/mono/mini/method-to-ir.c
Log:
2009-09-19 Zoltan Varga <var...@gmail.com>
* method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
to NEWARR.
* iltests.il.in: Add a new test.
Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog 2009-09-19 17:34:16 UTC (rev 142258)
+++ trunk/mono/mono/mini/ChangeLog 2009-09-19 18:48:20 UTC (rev 142259)
@@ -1,3 +1,10 @@
+2009-09-19 Zoltan Varga <var...@gmail.com>
+
+ * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
+ to NEWARR.
+
+ * iltests.il.in: Add a new test.
+
2009-09-18 Zoltan Varga <var...@gmail.com>
* aot-compiler.c (add_generic_instances): Add more instances of
Modified: trunk/mono/mono/mini/iltests.il.in
===================================================================
--- trunk/mono/mono/mini/iltests.il.in 2009-09-19 17:34:16 UTC (rev 142258)
+++ trunk/mono/mono/mini/iltests.il.in 2009-09-19 18:48:20 UTC (rev 142259)
@@ -2354,5 +2354,14 @@
ldc.i4.0
ret
}
-
+
+ .method public static default int32 test_0_newarr_i8 () cil managed
+ {
+ ldc.i4 1000
+ conv.i8
+ newarr [mscorlib]System.Boolean
+ pop
+ ldc.i4 0
+ ret
+ }
}
Modified: trunk/mono/mono/mini/method-to-ir.c
===================================================================
--- trunk/mono/mono/mini/method-to-ir.c 2009-09-19 17:34:16 UTC (rev 142258)
+++ trunk/mono/mono/mini/method-to-ir.c 2009-09-19 18:48:20 UTC (rev 142259)
@@ -8425,6 +8425,15 @@
if (cfg->generic_sharing_context)
context_used = mono_class_check_context_used (klass);
+ if (sp [0]->type == STACK_I8 || (SIZEOF_VOID_P == 8 && sp [0]->type == STACK_PTR)) {
+ MONO_INST_NEW (cfg, ins, OP_LCONV_TO_I4);
+ ins->sreg1 = sp [0]->dreg;
+ ins->type = STACK_I4;
+ ins->dreg = alloc_ireg (cfg);
+ MONO_ADD_INS (cfg->cbb, ins);
+ *sp = ins;
+ }
+
if (context_used) {
MonoInst *args [2];