Renamed the array limit constants: ADIMLIM, ATOTLIM, ARANKLIM, to ECL_ARRAY_{DIMENSION,TOTAL,RANK}_LIMIT

This commit is contained in:
Juan Jose Garcia Ripoll 2012-06-12 21:43:32 +02:00
parent 95aaab87a5
commit dac086195d
8 changed files with 28 additions and 24 deletions

View file

@ -96,7 +96,7 @@ ecl_to_index(cl_object n)
switch (type_of(n)) {
case t_fixnum: {
cl_fixnum out = ecl_fixnum(n);
if (out < 0 || out >= ADIMLIM)
if (out < 0 || out >= ECL_ARRAY_DIMENSION_LIMIT)
FEtype_error_index(Cnil, out);
return out;
}
@ -409,7 +409,7 @@ si_make_pure_array(cl_object etype, cl_object dims, cl_object adj,
cl_list(3, @'or', @'list', @'fixnum'));
}
r = ecl_length(dims);
if (ecl_unlikely(r >= ARANKLIM)) {
if (ecl_unlikely(r >= ECL_ARRAY_RANK_LIMIT)) {
FEerror("The array rank, ~R, is too large.", 1, ecl_make_fixnum(r));
} else if (r == 1) {
return si_make_vector(etype, ECL_CONS_CAR(dims), adj, fillp,
@ -429,17 +429,17 @@ si_make_pure_array(cl_object etype, cl_object dims, cl_object adj,
cl_object d = ECL_CONS_CAR(dims);
if (ecl_unlikely(!ECL_FIXNUMP(d) ||
ecl_fixnum_minusp(d) ||
ecl_fixnum_greater(d, ecl_make_fixnum(ADIMLIM))))
ecl_fixnum_greater(d, ecl_make_fixnum(ECL_ARRAY_DIMENSION_LIMIT))))
{
cl_object type = ecl_make_integer_type(ecl_make_fixnum(0),
ecl_make_fixnum(ADIMLIM));
ecl_make_fixnum(ECL_ARRAY_DIMENSION_LIMIT));
FEwrong_type_nth_arg(@[make-array], 1, d, type);
}
j = ecl_fixnum(d);
s *= (x->array.dims[i] = j);
if (ecl_unlikely(s > ATOTLIM)) {
if (ecl_unlikely(s > ECL_ARRAY_TOTAL_LIMIT)) {
cl_object type = ecl_make_integer_type(ecl_make_fixnum(0),
ecl_make_fixnum(ATOTLIM));
ecl_make_fixnum(ECL_ARRAY_TOTAL_LIMIT));
FEwrong_type_key_arg(@[make-array], @[array-total-size],
ecl_make_fixnum(s), type);
}
@ -471,9 +471,9 @@ si_make_vector(cl_object etype, cl_object dim, cl_object adj,
AGAIN:
aet = ecl_symbol_to_elttype(etype);
if (ecl_unlikely(!ECL_FIXNUMP(dim) || ecl_fixnum_minusp(dim) ||
ecl_fixnum_greater(dim, ADIMLIM))) {
ecl_fixnum_greater(dim, ECL_ARRAY_DIMENSION_LIMIT))) {
cl_object type = ecl_make_integer_type(ecl_make_fixnum(0),
ecl_make_fixnum(ADIMLIM));
ecl_make_fixnum(ECL_ARRAY_DIMENSION_LIMIT));
FEwrong_type_nth_arg(@[make-array], 1, dim, type);
}
d = ecl_fixnum(dim);

View file

@ -823,10 +823,10 @@ cl__make_hash_table(cl_object test, cl_object size, cl_object rehash_size,
}
if (ecl_unlikely(!ECL_FIXNUMP(size) ||
ecl_fixnum_minusp(size) ||
ecl_fixnum_geq(size,ecl_make_fixnum(ATOTLIM)))) {
ecl_fixnum_geq(size,ecl_make_fixnum(ECL_ARRAY_TOTAL_LIMIT)))) {
FEwrong_type_key_arg(@[make-hash-table], @[:size], size,
ecl_make_integer_type(ecl_make_fixnum(0),
ecl_make_fixnum(ATOTLIM)));
ecl_make_fixnum(ECL_ARRAY_TOTAL_LIMIT)));
}
hsize = ecl_fixnum(size);
if (hsize < 16) {

View file

@ -23,7 +23,7 @@ write_array_inner(bool vector, cl_object x, cl_object stream)
{
cl_env_ptr env = ecl_process_env();
const cl_index *adims;
cl_index subscripts[ARANKLIM];
cl_index subscripts[ECL_ARRAY_RANK_LIMIT];
cl_fixnum n, j, m, k, i;
cl_fixnum print_length;
cl_fixnum print_level;

View file

@ -821,7 +821,7 @@ sharp_left_parenthesis_reader(cl_object in, cl_object c, cl_object d)
cl_object last;
cl_index dim, i;
unlikely_if (!ECL_FIXNUMP(d) || ((dim = ecl_fixnum(d)) < 0) ||
(dim > ADIMLIM)) {
(dim > ECL_ARRAY_DIMENSION_LIMIT)) {
FEreader_error("Invalid dimension size ~D in #()", in, 1, d);
}
v = ecl_alloc_simple_vector(dim, ecl_aet_object);
@ -879,7 +879,7 @@ sharp_asterisk_reader(cl_object in, cl_object c, cl_object d)
dim = dimcount;
} else {
unlikely_if (!ECL_FIXNUMP(d) || ((dim = ecl_fixnum(d)) < 0) ||
(dim > ADIMLIM))
(dim > ECL_ARRAY_DIMENSION_LIMIT))
{
FEreader_error("Wrong vector dimension size ~D in #*.",
in, 1, d);

View file

@ -188,17 +188,17 @@ cl_symbols[] = {
{"ARITHMETIC-ERROR-OPERATION", CL_ORDINARY, NULL, -1, OBJNULL},
{"ARRAY", CL_ORDINARY, NULL, -1, OBJNULL},
{"ARRAY-DIMENSION", CL_ORDINARY, cl_array_dimension, 2, OBJNULL},
{"ARRAY-DIMENSION-LIMIT", CL_CONSTANT, NULL, -1, ecl_make_fixnum(ADIMLIM)},
{"ARRAY-DIMENSION-LIMIT", CL_CONSTANT, NULL, -1, ecl_make_fixnum(ECL_ARRAY_DIMENSION_LIMIT)},
{"ARRAY-DIMENSIONS", CL_ORDINARY, ECL_NAME(cl_array_dimensions), 1, OBJNULL},
{"ARRAY-DISPLACEMENT", CL_ORDINARY, cl_array_displacement, 1, OBJNULL},
{"ARRAY-ELEMENT-TYPE", CL_ORDINARY, cl_array_element_type, 1, OBJNULL},
{"ARRAY-HAS-FILL-POINTER-P", CL_ORDINARY, cl_array_has_fill_pointer_p, 1, OBJNULL},
{"ARRAY-IN-BOUNDS-P", CL_ORDINARY, ECL_NAME(cl_array_in_bounds_p), -1, OBJNULL},
{"ARRAY-RANK", CL_ORDINARY, cl_array_rank, 1, OBJNULL},
{"ARRAY-RANK-LIMIT", CL_CONSTANT, NULL, -1, ecl_make_fixnum(ARANKLIM)},
{"ARRAY-RANK-LIMIT", CL_CONSTANT, NULL, -1, ecl_make_fixnum(ECL_ARRAY_RANK_LIMIT)},
{"ARRAY-ROW-MAJOR-INDEX", CL_ORDINARY, ECL_NAME(cl_array_row_major_index), -1, OBJNULL},
{"ARRAY-TOTAL-SIZE", CL_ORDINARY, cl_array_total_size, 1, OBJNULL},
{"ARRAY-TOTAL-SIZE-LIMIT", CL_CONSTANT, NULL, -1, ecl_make_fixnum(ATOTLIM)},
{"ARRAY-TOTAL-SIZE-LIMIT", CL_CONSTANT, NULL, -1, ecl_make_fixnum(ECL_ARRAY_TOTAL_LIMIT)},
{"ARRAYP", CL_ORDINARY, cl_arrayp, 1, OBJNULL},
{"ASH", CL_ORDINARY, cl_ash, 2, OBJNULL},
{"ASIN", CL_ORDINARY, ECL_NAME(cl_asin), 1, OBJNULL},

View file

@ -30,13 +30,13 @@ extend_vector(cl_object v, cl_index amount)
if (!ECL_ADJUSTABLE_ARRAY_P(v))
FEerror("vector-push-extend: the array ~S is not adjustable.",
1, v);
if (v->vector.dim >= ADIMLIM)
if (v->vector.dim >= ECL_ARRAY_DIMENSION_LIMIT)
FEerror("Can't extend the array.", 0);
if (amount == 0)
amount = v->vector.dim / 2 + 1;
new_length = v->vector.dim + amount;
if (new_length > ADIMLIM)
new_length = ADIMLIM;
if (new_length > ECL_ARRAY_DIMENSION_LIMIT)
new_length = ECL_ARRAY_DIMENSION_LIMIT;
other = si_make_vector(cl_array_element_type(v),
ecl_make_fixnum(new_length), Ct,
ecl_make_fixnum(v->vector.fillp),

View file

@ -172,13 +172,13 @@ typedef unsigned char ecl_base_char;
/*
* Array limits
*/
#define ARANKLIM 64 /* array rank limit */
#define ECL_ARRAY_RANK_LIMIT 64 /* array rank limit */
#ifdef GBC_BOEHM
#define ADIMLIM @CL_FIXNUM_MAX@ /* array dimension limit */
#define ATOTLIM @CL_FIXNUM_MAX@ /* array total limit */
#define ECL_ARRAY_DIMENSION_LIMIT @CL_FIXNUM_MAX@
#define ECL_ARRAY_TOTAL_LIMIT @CL_FIXNUM_MAX@
#else
#define ADIMLIM 16*1024*1024 /* array dimension limit */
#define ATOTLIM 16*1024*1024 /* array total limit */
#define ECL_ARRAY_DIMENSION_LIMIT 16*1024*1024
#define ECL_ARRAY_TOTAL_LIMIT 16*1024*1024
#endif
/*

View file

@ -122,3 +122,7 @@
#define ecl_make_unsigned_long_Long(o) ecl_make_ulong_long(o)
#define ecl_to_unsigned_long_long(o) ecl_to_ulong_long(o)
#define ADIMLIM ECL_ARRAY_DIMENSION_LIMIT
#define ATOTLIM ECL_ARRAY_TOTAL_LIMIT
#define ARANKLIM ECL_ARRAY_RANK_LIMIT