+Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
+
+ * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
+ case until bug #59509 is fixed (shows up in #60332).
+
Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
* mini.c: make sure the needed wrappers are compiled, too, with
/* allow room for the vararg method args: void* and long/double */
if (mono_jit_trace_calls != NULL && mono_trace_eval (m->method))
m->param_area = MAX (m->param_area, sizeof (gpointer)*8);
+ /* this is bug #60332: remove when #59509 is fixed, so no weird vararg
+ * call convs needs to be handled this way.
+ */
+ if (m->flags & MONO_CFG_HAS_VARARGS)
+ m->param_area = MAX (m->param_area, sizeof (gpointer)*8);
header = ((MonoMethodNormal *)m->method)->header;
}
temp = mono_emit_native_call (cfg, bblock, mono_icall_get_wrapper (info), info->sig, sp, ip, FALSE);
+ cfg->flags |= MONO_CFG_HAS_VARARGS;
NEW_TEMPLOAD (cfg, addr, temp);
return addr;
if (cmethod->klass->parent == mono_defaults.array_class) {
NEW_METHODCONST (cfg, *sp, cmethod);
temp = mono_emit_native_call (cfg, bblock, mono_array_new_va, fsig, sp, ip, FALSE);
+ cfg->flags |= MONO_CFG_HAS_VARARGS;
} else if (cmethod->string_ctor) {
/* we simply pass a null pointer */
typedef enum {
MONO_CFG_HAS_ALLOCA = 1 << 0,
MONO_CFG_HAS_CALLS = 1 << 1,
- MONO_CFG_HAS_LDELEMA = 1 << 2
+ MONO_CFG_HAS_LDELEMA = 1 << 2,
+ MONO_CFG_HAS_VARARGS = 1 << 3
} MonoCompileFlags;
typedef struct {