183 |
starting at BASE. This pushes on the CallHist, and puts the args onto |
starting at BASE. This pushes on the CallHist, and puts the args onto |
184 |
the arg stack, so that debuggers may examine them. It sets |
the arg stack, so that debuggers may examine them. It sets |
185 |
fcall.nvalues appropriately. */ |
fcall.nvalues appropriately. */ |
186 |
{ object res,*abase; |
{ object res=OBJNULL,*abase=NULL; |
187 |
int i; |
int i=0; |
188 |
object *oldtop = vs_top; |
object *oldtop = vs_top; |
189 |
unsigned int atypes; |
unsigned int atypes=0; |
190 |
if (oldtop == base) vs_top += nargs; |
if (oldtop == base) vs_top += nargs; |
191 |
else |
else |
192 |
{ object *b = base; |
{ object *b = base; |
207 |
FEtoo_many_arguments(base,vs_top); |
FEtoo_many_arguments(base,vs_top); |
208 |
atypes = F_TYPES(fun->sfn.sfn_argd) >> F_TYPE_WIDTH; |
atypes = F_TYPES(fun->sfn.sfn_argd) >> F_TYPE_WIDTH; |
209 |
if (atypes==0) {abase = base;} |
if (atypes==0) {abase = base;} |
210 |
else { abase = alloca(nargs*sizeof(object)); |
else { abase = ZALLOCA(nargs*sizeof(object)); |
211 |
assert(abase); |
assert(abase); |
212 |
for (i=0; i < nargs ; i++, atypes >>= F_TYPE_WIDTH) |
for (i=0; i < nargs ; i++, atypes >>= F_TYPE_WIDTH) |
213 |
{ object next = base[i]; |
{ object next = base[i]; |