else
src_slot = map_stack_slot (ainfo->offset / 4);
g_assert (ndst < 256);
- g_assert (src_slot < 16);
- src [0] = (ndst << 4) | src_slot;
+ g_assert (src_slot < 256);
+ src [0] = (ndst << 8) | src_slot;
if (ainfo2->storage == RegTypeGeneral && ainfo2->size != 0 && ainfo2->size != 4) {
/* Have to load less than 4 bytes */
ndst = get_arg_slots (ainfo2, &dst);
}
if (nsrc)
- src [0] |= (arg_marshal << 16);
+ src [0] |= (arg_marshal << 24);
nslots = MIN (nsrc, ndst);
for (i = 0; i < nslots; ++i)
for (i = 0; i < info->map_count; ++i) {
int src = info->map [i * 2];
int dst = info->map [(i * 2) + 1];
- int arg_marshal = (src >> 16) & 0xff;
+ int arg_marshal = (src >> 24) & 0xff;
switch (arg_marshal) {
case GSHAREDVT_ARG_NONE:
break;
case GSHAREDVT_ARG_BYREF_TO_BYVAL: {
/* gsharedvt argument passed by value */
- int nslots = (src >> 4) & 0xff;
- int src_slot = src & 0xf;
+ int nslots = (src >> 8) & 0xff;
+ int src_slot = src & 0xff;
int j;
gpointer *addr = caller [src_slot];
break;
}
case GSHAREDVT_ARG_BYREF_TO_BYVAL_I1: {
- int src_slot = src & 0xf;
+ int src_slot = src & 0xff;
gpointer *addr = caller [src_slot];
callee [dst] = GINT_TO_POINTER ((int)*(gint8*)addr);
break;
}
case GSHAREDVT_ARG_BYREF_TO_BYVAL_I2: {
- int src_slot = src & 0xf;
+ int src_slot = src & 0xff;
gpointer *addr = caller [src_slot];
callee [dst] = GINT_TO_POINTER ((int)*(gint16*)addr);
break;
}
case GSHAREDVT_ARG_BYREF_TO_BYVAL_U1: {
- int src_slot = src & 0xf;
+ int src_slot = src & 0xff;
gpointer *addr = caller [src_slot];
callee [dst] = GUINT_TO_POINTER ((guint)*(guint8*)addr);
break;
}
case GSHAREDVT_ARG_BYREF_TO_BYVAL_U2: {
- int src_slot = src & 0xf;
+ int src_slot = src & 0xff;
gpointer *addr = caller [src_slot];
callee [dst] = GUINT_TO_POINTER ((guint)*(guint16*)addr);