The calling conventions have been changed. SI::C-ARGUMENTS-LIMIT and

LAMBDA-PARAMETERS-LIMIT are both 64. Up to C-ARGUMENTS-LIMIT may be
passed to a function using C calling conventions. If the function is
to retrieve more arguments, (for instance through a &rest variable),
this can be done, but then the arguments have to be pushed on the lisp
stack. This method allows us to raise the CALL-ARGUMENTS-LIMIT up to
MOST-POSITIVE-FIXNUM. From a users point of view, there is no visible
change, excep the fact that a function may receive more arguments.

The function apply() has been replaced with cl_apply_from_stack().
The former took a pointer to the list of arguments. The latter assumes
that the last "narg" elements on the lisp stack are the arguments of
the function.
This commit is contained in:
jjgarcia 2002-10-21 09:27:58 +00:00
parent 10fbd27569
commit a9e4edf4d0
45 changed files with 634 additions and 584 deletions

View file

@ -65,7 +65,7 @@ object_to_index(cl_object n)
if (r != x->array.rank)
FEerror("Wrong number of indices.", 0);
for (i = j = 0; i < r; i++) {
index = cl_nextarg(indx);
index = cl_va_arg(indx);
if ((s = fixnnint(index)) >= x->array.dims[i])
FEerror("The ~:R index, ~S, to the array~%\
~S is too large.", 3, MAKE_FIXNUM(i+1), index, x);
@ -78,7 +78,7 @@ object_to_index(cl_object n)
case t_bitvector:
if (r != 1)
FEerror("Wrong number of indices.", 0);
index = cl_nextarg(indx);
index = cl_va_arg(indx);
j = fixnnint(index);
if (j >= x->vector.dim)
FEerror("The first index, ~S, to the array ~S is too large.",
@ -162,7 +162,7 @@ aref1(cl_object v, cl_index index)
if (r != x->array.rank)
FEerror("Wrong number of indices.", 0);
for (i = j = 0; i < r; i++) {
index = cl_nextarg(dims);
index = cl_va_arg(dims);
if ((s = fixnnint(index)) >= x->array.dims[i])
FEerror("The ~:R index, ~S, to the array ~S is too large.",
3, MAKE_FIXNUM(i+1), index, x);
@ -175,7 +175,7 @@ aref1(cl_object v, cl_index index)
case t_bitvector:
if (r != 1)
FEerror("Wrong number of indices.", 0);
index = cl_nextarg(dims);
index = cl_va_arg(dims);
j = fixnnint(index);
if (j >= x->vector.dim)
FEerror("The first index, ~S, to the array ~S is too large.",
@ -284,7 +284,7 @@ aset1(cl_object v, cl_index index, cl_object val)
if (r >= ARANKLIM)
FEerror("The array rank, ~R, is too large.", 1, MAKE_FIXNUM(r));
for (i = 0, s = 1; i < r; i++) {
cl_object index = cl_nextarg(dims);
cl_object index = cl_va_arg(dims);
if ((j = fixnnint(index)) > ADIMLIM)
FEerror("The ~:R array dimension, ~D, is too large.",
2, MAKE_FIXNUM(i+1), index);