mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-08 18:23:37 -08:00
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:
parent
10fbd27569
commit
a9e4edf4d0
45 changed files with 634 additions and 584 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue