diff --git a/library/bootstrap/init.factor b/library/bootstrap/init.factor index 338ce5be6f..1b1fe7b282 100644 --- a/library/bootstrap/init.factor +++ b/library/bootstrap/init.factor @@ -14,4 +14,4 @@ parser threads words ; init-error-handler default-cli-args parse-command-line - "null-stdio" get [ T{ null-stream f } stdio set ] when ; + "null-stdio" get [ T{ null-stream } stdio set ] when ; diff --git a/library/test/math/float.factor b/library/test/math/float.factor index 2bc397039b..744edfde89 100644 --- a/library/test/math/float.factor +++ b/library/test/math/float.factor @@ -32,3 +32,6 @@ USE: test [ t ] [ pi double>bits bits>double pi = ] unit-test [ t ] [ e double>bits bits>double e = ] unit-test + +[ 2.0 ] [ 1.0 1+ ] unit-test +[ 0.0 ] [ 1.0 1- ] unit-test diff --git a/native/array.c b/native/array.c index 6b7dd068fb..ce70bea2c2 100644 --- a/native/array.c +++ b/native/array.c @@ -2,7 +2,7 @@ /* the array is full of undefined data, and must be correctly filled before the next GC. */ -F_ARRAY* allot_array(CELL type, CELL capacity) +F_ARRAY* allot_array(CELL type, F_FIXNUM capacity) { F_ARRAY *array; @@ -20,7 +20,7 @@ either be F or a fixnum. if you want to use pass a pointer, you _must_ hit the write barrier manually with a write_barrier() call with the returned object. */ -F_ARRAY* array(CELL type, CELL capacity, CELL fill) +F_ARRAY* array(CELL type, F_FIXNUM capacity, CELL fill) { int i; F_ARRAY* array = allot_array(type, capacity); for(i = 0; i < capacity; i++) @@ -30,27 +30,27 @@ F_ARRAY* array(CELL type, CELL capacity, CELL fill) void primitive_array(void) { - CELL size = to_fixnum(dpop()); + F_FIXNUM size = to_fixnum(dpop()); maybe_gc(array_size(size)); dpush(tag_object(array(ARRAY_TYPE,size,F))); } void primitive_tuple(void) { - CELL size = to_fixnum(dpop()); + F_FIXNUM size = to_fixnum(dpop()); maybe_gc(array_size(size)); dpush(tag_object(array(TUPLE_TYPE,size,F))); } void primitive_byte_array(void) { - CELL size = to_fixnum(dpop()); + F_FIXNUM size = to_fixnum(dpop()); maybe_gc(array_size(size)); dpush(tag_object(array(BYTE_ARRAY_TYPE,size,0))); } /* see note about fill in array() */ -F_ARRAY* resize_array(F_ARRAY* array, CELL capacity, CELL fill) +F_ARRAY* resize_array(F_ARRAY* array, F_FIXNUM capacity, CELL fill) { int i; F_ARRAY* new_array; @@ -72,7 +72,7 @@ F_ARRAY* resize_array(F_ARRAY* array, CELL capacity, CELL fill) void primitive_resize_array(void) { F_ARRAY* array; - CELL capacity = to_fixnum(dpeek2()); + F_FIXNUM capacity = to_fixnum(dpeek2()); maybe_gc(array_size(capacity)); array = untag_array(dpop()); drepl(tag_object(resize_array(array,capacity,F))); diff --git a/native/array.h b/native/array.h index 73e0be9501..b2dbbad44c 100644 --- a/native/array.h +++ b/native/array.h @@ -25,14 +25,14 @@ INLINE CELL array_size(CELL size) return align8(sizeof(F_ARRAY) + size * CELLS); } -F_ARRAY* allot_array(CELL type, CELL capacity); -F_ARRAY* array(CELL type, CELL capacity, CELL fill); +F_ARRAY* allot_array(CELL type, F_FIXNUM capacity); +F_ARRAY* array(CELL type, F_FIXNUM capacity, CELL fill); void primitive_array(void); void primitive_tuple(void); void primitive_byte_array(void); -F_ARRAY* resize_array(F_ARRAY* array, CELL capacity, CELL fill); +F_ARRAY* resize_array(F_ARRAY* array, F_FIXNUM capacity, CELL fill); void primitive_resize_array(void); void primitive_array_to_tuple(void); void primitive_tuple_to_array(void); diff --git a/native/vector.c b/native/vector.c index 0740f5d9d8..927a491171 100644 --- a/native/vector.c +++ b/native/vector.c @@ -2,10 +2,7 @@ F_VECTOR* vector(F_FIXNUM capacity) { - F_VECTOR* vector; - if(capacity < 0) - general_error(ERROR_NEGATIVE_ARRAY_SIZE,tag_fixnum(capacity)); - vector = allot_object(VECTOR_TYPE,sizeof(F_VECTOR)); + F_VECTOR* vector = allot_object(VECTOR_TYPE,sizeof(F_VECTOR)); vector->top = tag_fixnum(0); vector->array = tag_object(array(ARRAY_TYPE,capacity,F)); return vector;