660 |
else |
else |
661 |
FEerror("~S is an illegal hash-table test function.",1, test); |
FEerror("~S is an illegal hash-table test function.",1, test); |
662 |
|
|
663 |
if (type_of(size)!=t_fixnum || fix(size)<=0) |
if (type_of(size)!=t_fixnum || fix(size)<0) |
664 |
FEerror("~S is an illegal hash-table size.", 1, size); |
FEerror("~S is an illegal hash-table size.", 1, size); |
665 |
|
|
666 |
err=0; |
err=0; |
684 |
switch(type_of(rehash_threshold)) { |
switch(type_of(rehash_threshold)) { |
685 |
case t_fixnum: |
case t_fixnum: |
686 |
max_ent=fix(rehash_threshold); |
max_ent=fix(rehash_threshold); |
687 |
if (max_ent<=0 || max_ent>=fix(size)) err=1; |
if (max_ent<0 || max_ent>fix(size)) err=1; |
688 |
break; |
break; |
689 |
case t_shortfloat: |
case t_shortfloat: |
690 |
max_ent=(fixnum)(sf(rehash_threshold)*fix(size)+0.5); |
max_ent=(fixnum)(sf(rehash_threshold)*fix(size)+0.5); |
691 |
if (sf(rehash_threshold)<=0.0 || sf(rehash_threshold)>=1.0) err=1; |
if (sf(rehash_threshold)<0.0 || sf(rehash_threshold)>1.0) err=1; |
692 |
break; |
break; |
693 |
case t_longfloat: |
case t_longfloat: |
694 |
max_ent=(fixnum)(lf(rehash_threshold)*fix(size)+0.5); |
max_ent=(fixnum)(lf(rehash_threshold)*fix(size)+0.5); |
695 |
if (lf(rehash_threshold)<=0.0 || lf(rehash_threshold)>=1.0) err=1; |
if (lf(rehash_threshold)<0.0 || lf(rehash_threshold)>1.0) err=1; |
696 |
break; |
break; |
697 |
|
case t_ratio: |
698 |
|
{ |
699 |
|
double d=number_to_double(rehash_threshold); |
700 |
|
max_ent=(fixnum)(d*fix(size)+0.5); |
701 |
|
if (d<0.0 || d>1.0) err=1; |
702 |
|
break; |
703 |
|
} |
704 |
|
|
705 |
default: |
default: |
706 |
max_ent = (7 * fix(size)) / 10; /* Default to 70% */ |
max_ent = (7 * fix(size)) / 10; /* Default to 70% */ |
707 |
err=1; |
err=1; |