Chez Scheme: add flvectors

To make room in the type encoding, remove immutable fxvectors from
Chez Scheme --- which had been added just to go along with immutable
strings, vectors, and bytevectors, but immutable fxvectors do not seem
useful, and they have no counterpart in Racket.
This commit is contained in:
Matthew Flatt 2020-11-06 19:31:16 -07:00
parent 128174594e
commit 2b945d12fb
60 changed files with 1267 additions and 541 deletions

View File

@ -338,7 +338,7 @@ RACKET_FOR_BOOTFILES = $(RACKET)
RACKET_FOR_BUILD = $(RACKET)
# This branch name changes each time the pb boot files are updated:
PB_BRANCH == circa-7.9.0.3-2
PB_BRANCH == circa-7.9.0.4-1
PB_REPO = https://github.com/racket/pb
# Alternative source for Chez Scheme boot files, normally set by

View File

@ -47,7 +47,7 @@ RACKETCS_SUFFIX =
RACKET =
RACKET_FOR_BOOTFILES = $(RACKET)
RACKET_FOR_BUILD = $(RACKET)
PB_BRANCH = circa-7.9.0.3-2
PB_BRANCH = circa-7.9.0.4-1
PB_REPO = https://github.com/racket/pb
EXTRA_REPOS_BASE =
CS_CROSS_SUFFIX =
@ -306,14 +306,14 @@ maybe-fetch-pb-as-is:
echo done
fetch-pb-from:
mkdir -p racket/src/ChezScheme/boot
if [ ! -d racket/src/ChezScheme/boot/pb ] ; then git clone -q -b circa-7.9.0.3-2 $(PB_REPO) racket/src/ChezScheme/boot/pb ; else cd racket/src/ChezScheme/boot/pb && git fetch -q origin circa-7.9.0.3-2:remotes/origin/circa-7.9.0.3-2 ; fi
cd racket/src/ChezScheme/boot/pb && git checkout -q circa-7.9.0.3-2
if [ ! -d racket/src/ChezScheme/boot/pb ] ; then git clone -q -b circa-7.9.0.4-1 $(PB_REPO) racket/src/ChezScheme/boot/pb ; else cd racket/src/ChezScheme/boot/pb && git fetch -q origin circa-7.9.0.4-1:remotes/origin/circa-7.9.0.4-1 ; fi
cd racket/src/ChezScheme/boot/pb && git checkout -q circa-7.9.0.4-1
pb-stage:
cd racket/src/ChezScheme/boot/pb && git branch circa-7.9.0.3-2
cd racket/src/ChezScheme/boot/pb && git checkout circa-7.9.0.3-2
cd racket/src/ChezScheme/boot/pb && git branch circa-7.9.0.4-1
cd racket/src/ChezScheme/boot/pb && git checkout circa-7.9.0.4-1
cd racket/src/ChezScheme/boot/pb && git add . && git commit --amend -m "new build"
pb-push:
cd racket/src/ChezScheme/boot/pb && git push -u origin circa-7.9.0.3-2
cd racket/src/ChezScheme/boot/pb && git push -u origin circa-7.9.0.4-1
win-cs-base:
IF "$(RACKET_FOR_BUILD)" == "" $(MAKE) win-bc-then-cs-base SETUP_BOOT_MODE=--boot WIN32_BUILD_LEVEL=bc PLAIN_RACKET=racket\racketbc DISABLE_STATIC_LIBS="$(DISABLE_STATIC_LIBS)" EXTRA_REPOS_BASE="$(EXTRA_REPOS_BASE)" JOB_OPTIONS="$(JOB_OPTIONS)" PLT_SETUP_OPTIONS="$(PLT_SETUP_OPTIONS)" RACKETBC_SUFFIX="$(RACKETBC_SUFFIX)" RACKETCS_SUFFIX="$(RACKETCS_SUFFIX)"
IF not "$(RACKET_FOR_BUILD)" == "" $(MAKE) win-just-cs-base SETUP_BOOT_MODE=--chain DISABLE_STATIC_LIBS="$(DISABLE_STATIC_LIBS)" EXTRA_REPOS_BASE="$(EXTRA_REPOS_BASE)" JOB_OPTIONS="$(JOB_OPTIONS)" PLT_SETUP_OPTIONS="$(PLT_SETUP_OPTIONS)" RACKETCS_SUFFIX="$(RACKETCS_SUFFIX)" RACKET_FOR_BUILD="$(RACKET_FOR_BUILD)"

View File

@ -12,7 +12,7 @@
(define collection 'multi)
(define version "7.9.0.3")
(define version "7.9.0.4")
(define deps `("racket-lib"
["racket" #:version ,version]))

View File

@ -4,6 +4,7 @@
(Section 'basic)
(require racket/flonum
racket/fixnum
racket/function
racket/list
racket/symbol
@ -2386,6 +2387,7 @@
[a (make-a 1 (make-a 2 3))]
[b (box (list 1 2 3))]
[fl (flvector 1.0 +nan.0 0.0)]
[fx (fxvector 1 -2 0)]
[cyclic-list (read (open-input-string "#2=(#1=(#2#) #2#)"))])
(test 0 hash-count h1)
@ -2400,7 +2402,8 @@
(hash-set! h1 (save 3/45) 'rational)
(hash-set! h1 (save 3+45i) 'complex)
(hash-set! h1 (save (integer->char 955)) 'char)
(hash-set! h1 (save fl) 'flvector))]
(hash-set! h1 (save fl) 'flvector)
(hash-set! h1 (save fx) 'fxvector))]
[puts2 (lambda ()
(hash-set! h1 (save (list 5 7)) 'another-list)
(hash-set! h1 (save 3+0.0i) 'izi-complex)
@ -2416,7 +2419,7 @@
(puts1))
(begin
(puts1)
(test 8 hash-count h1)
(test 9 hash-count h1)
(puts2))))
(when reorder?
@ -2428,7 +2431,7 @@
(loop (add1 i))
(hash-remove! h1 i))))
(test 15 hash-count h1)
(test 16 hash-count h1)
(test 'list hash-ref h1 l)
(test 'list hash-ref h1 (list 1 2 3))
(test 'another-list hash-ref h1 (list 5 7))
@ -2448,6 +2451,7 @@
(test 'box hash-ref h1 #&(1 2 3))
(test 'char hash-ref h1 (integer->char 955))
(test 'flvector hash-ref h1 (flvector 1.0 +nan.0 0.0))
(test 'fxvector hash-ref h1 (fxvector 1 -2 0))
(test 'cyclic-list hash-ref h1 cyclic-list)
(test #t
andmap
@ -2468,14 +2472,15 @@
(#\u3BB . char)
(#&(1 2 3) . box)
(,(flvector 1.0 +nan.0 0.0) . flvector)
(,(fxvector 1 -2 0) . fxvector)
(,cyclic-list . cyclic-list)))
(hash-remove! h1 (list 1 2 3))
(test 14 hash-count h1)
(test 15 hash-count h1)
(test 'not-there hash-ref h1 l (lambda () 'not-there))
(let ([c 0])
(hash-for-each h1 (lambda (k v) (set! c (add1 c))))
(test 14 'count c))
(test 15 'count c))
;; return the hash table:
h1))

View File

@ -60,6 +60,10 @@ void S_alloc_init() {
find_room(tc, space_new, 0, type_typed_object, size_fxvector(0), S_G.null_fxvector);
FXVECTOR_TYPE(S_G.null_fxvector) = (0 << fxvector_length_offset) | type_fxvector;
S_protect(&S_G.null_flvector);
find_room(tc, space_new, 0, type_typed_object, size_flvector(0), S_G.null_flvector);
FXVECTOR_TYPE(S_G.null_flvector) = (0 << flvector_length_offset) | type_flvector;
S_protect(&S_G.null_bytevector);
find_room(tc, space_new, 0, type_typed_object, size_bytevector(0), S_G.null_bytevector);
BYTEVECTOR_TYPE(S_G.null_bytevector) = (0 << bytevector_length_offset) | type_bytevector;
@ -72,10 +76,6 @@ void S_alloc_init() {
find_room(tc, space_new, 0, type_typed_object, size_vector(0), S_G.null_immutable_vector);
VECTTYPE(S_G.null_immutable_vector) = (0 << vector_length_offset) | type_vector | vector_immutable_flag;
S_protect(&S_G.null_immutable_fxvector);
find_room(tc, space_new, 0, type_typed_object, size_fxvector(0), S_G.null_immutable_fxvector);
FXVECTOR_TYPE(S_G.null_immutable_fxvector) = (0 << fxvector_length_offset) | type_fxvector | fxvector_immutable_flag;
S_protect(&S_G.null_immutable_bytevector);
find_room(tc, space_new, 0, type_typed_object, size_bytevector(0), S_G.null_immutable_bytevector);
BYTEVECTOR_TYPE(S_G.null_immutable_bytevector) = (0 << bytevector_length_offset) | type_bytevector | bytevector_immutable_flag;
@ -695,6 +695,23 @@ ptr S_fxvector(n) iptr n; {
return p;
}
ptr S_flvector(n) iptr n; {
ptr tc;
ptr p; iptr d;
if (n == 0) return S_G.null_flvector;
if ((uptr)n > (uptr)maximum_flvector_length)
S_error("", "invalid flvector size request");
tc = get_thread_context();
d = size_flvector(n);
newspace_find_room(tc, type_typed_object, d, p);
FLVECTOR_TYPE(p) = (n << flvector_length_offset) | type_flvector;
return p;
}
ptr S_bytevector(n) iptr n; {
return S_bytevector2(get_thread_context(), n, 0);
}
@ -724,14 +741,6 @@ ptr S_null_immutable_vector() {
return v;
}
ptr S_null_immutable_fxvector() {
ptr tc = get_thread_context();
ptr v;
find_room(tc, space_new, 0, type_typed_object, size_fxvector(0), v);
VECTTYPE(v) = (0 << fxvector_length_offset) | type_fxvector | fxvector_immutable_flag;
return v;
}
ptr S_null_immutable_bytevector() {
ptr tc = get_thread_context();
ptr v;

View File

@ -86,6 +86,7 @@ extern ptr S_tlc PROTO((ptr keyval, ptr tconc, ptr next));
extern ptr S_vector_in PROTO((ptr tc, ISPC s, IGEN g, iptr n));
extern ptr S_vector PROTO((iptr n));
extern ptr S_fxvector PROTO((iptr n));
extern ptr S_flvector PROTO((iptr n));
extern ptr S_bytevector PROTO((iptr n));
extern ptr S_bytevector2 PROTO((ptr tc, iptr n, IBOOL immobile));
extern ptr S_null_immutable_vector PROTO((void));

View File

@ -48,6 +48,8 @@
*
* -> {fxvector}<uptr n><iptr elt1>...<iptr eltn>
*
* -> {flvector}<uptr n><uptr elthi1><uptr eltlo1>...<uptr elthin><uptr eltlon>
*
* -> {bytevector}<uptr n><octet elt1>...<octet eltn>
*
* -> {immediate}<uptr>
@ -748,14 +750,13 @@ static void faslin(ptr tc, ptr *x, ptr t, ptr *pstrbuf, faslFile f) {
while (n--) faslin(tc, p++, t, pstrbuf, f);
if (ty == fasl_type_immutable_vector) {
if (Svector_length(*x) == 0)
*x = NULLIMMUTABLEVECTOR(tc);
*x = S_G.null_immutable_vector;
else
VECTTYPE(*x) |= vector_immutable_flag;
}
return;
}
case fasl_type_fxvector:
case fasl_type_immutable_fxvector: {
case fasl_type_fxvector: {
iptr n; ptr *p;
n = uptrin(f);
*x = S_fxvector(n);
@ -765,11 +766,19 @@ static void faslin(ptr tc, ptr *x, ptr t, ptr *pstrbuf, faslFile f) {
if (!FIXRANGE(t)) toolarge(f->uf->path);
*p++ = FIX(t);
}
if (ty == fasl_type_immutable_fxvector) {
if (Sfxvector_length(*x) == 0)
*x = NULLIMMUTABLEFXVECTOR(tc);
else
FXVECTOR_TYPE(*x) |= fxvector_immutable_flag;
return;
}
case fasl_type_flvector: {
iptr n; double *p;
n = uptrin(f);
*x = S_flvector(n);
p = &FLVECTIT(*x, 0);
while (n--) {
ptr fl;
faslin(tc, &fl, t, pstrbuf, f);
if (!Sflonump(fl))
S_error1("", "not a flonum in flvector ~a", f->uf->path);
*p++ = Sflonum_value(fl);
}
return;
}
@ -781,7 +790,7 @@ static void faslin(ptr tc, ptr *x, ptr t, ptr *pstrbuf, faslFile f) {
bytesin(&BVIT(*x,0), n, f);
if (ty == fasl_type_immutable_bytevector) {
if (Sbytevector_length(*x) == 0)
*x = NULLIMMUTABLEBYTEVECTOR(tc);
*x = S_G.null_immutable_bytevector;
else
BYTEVECTOR_TYPE(*x) |= bytevector_immutable_flag;
}
@ -979,7 +988,7 @@ static void faslin(ptr tc, ptr *x, ptr t, ptr *pstrbuf, faslFile f) {
for (i = 0; i != n; i += 1) Sstring_set(str, i, uptrin(f));
if (ty == fasl_type_immutable_string) {
if (n == 0)
str = NULLIMMUTABLESTRING(tc);
str = S_G.null_immutable_string;
else
STRTYPE(str) |= string_immutable_flag;
}

View File

@ -122,6 +122,8 @@ void S_gc_init() {
S_G.countof_size[countof_string] = 0;
INITVECTIT(S_G.countof_names, countof_fxvector) = S_intern((const unsigned char *)"fxvector");
S_G.countof_size[countof_fxvector] = 0;
INITVECTIT(S_G.countof_names, countof_flvector) = S_intern((const unsigned char *)"flvector");
S_G.countof_size[countof_flvector] = 0;
INITVECTIT(S_G.countof_names, countof_bytevector) = S_intern((const unsigned char *)"bytevector");
S_G.countof_size[countof_bytevector] = 0;
INITVECTIT(S_G.countof_names, countof_locked) = S_intern((const unsigned char *)"locked");

View File

@ -113,10 +113,10 @@ EXTERN struct S_G_struct {
ptr null_string;
ptr null_vector;
ptr null_fxvector;
ptr null_flvector;
ptr null_bytevector;
ptr null_immutable_string;
ptr null_immutable_vector;
ptr null_immutable_fxvector;
ptr null_immutable_bytevector;
ptr zero_length_bignum;
seginfo *dirty_segments[DIRTY_SEGMENT_LISTS];

View File

@ -151,6 +151,9 @@ static void create_c_entry_vector() {
S_install_c_entry(CENTRY_Scall_any_results, proc2ptr(S_call_any_results));
S_install_c_entry(CENTRY_segment_info, proc2ptr(S_segment_info));
S_install_c_entry(CENTRY_bignum_mask_test, proc2ptr(S_bignum_mask_test));
S_install_c_entry(CENTRY_null_immutable_vector, TO_PTR(S_G.null_immutable_vector));
S_install_c_entry(CENTRY_null_immutable_bytevector, TO_PTR(S_G.null_immutable_bytevector));
S_install_c_entry(CENTRY_null_immutable_string, TO_PTR(S_G.null_immutable_string));
}
void S_check_c_entry_vector() {

View File

@ -104,11 +104,6 @@ static void main_init() {
i & 0x10 ? 4 : i & 0x20 ? 5 : i & 0x40 ? 6 : i & 0x80 ? 7 : 0);
}
NULLIMMUTABLEVECTOR(tc) = S_G.null_immutable_vector;
NULLIMMUTABLEFXVECTOR(tc) = S_G.null_immutable_fxvector;
NULLIMMUTABLEBYTEVECTOR(tc) = S_G.null_immutable_bytevector;
NULLIMMUTABLESTRING(tc) = S_G.null_immutable_string;
PARAMETERS(tc) = S_G.null_vector;
for (i = 0 ; i < virtual_register_count ; i += 1) {
VIRTREG(tc, i) = FIX(0);

View File

@ -268,6 +268,7 @@ typedef struct _bucket_pointer_list {
#define size_closure(n) ptr_align(header_size_closure + (n)*ptr_bytes)
#define size_string(n) ptr_align(header_size_string + (n)*string_char_bytes)
#define size_fxvector(n) ptr_align(header_size_fxvector + (n)*ptr_bytes)
#define size_flvector(n) ptr_align(header_size_fxvector + (n)*sizeof(double))
#define size_bytevector(n) ptr_align(header_size_bytevector + (n))
#define size_bignum(n) ptr_align(header_size_bignum + (n)*bigit_bytes)
#define size_code(n) ptr_align(header_size_code + (n))

View File

@ -1319,10 +1319,10 @@ static void vfasl_check_install_library_entry(vfasl_info *vfi, ptr name)
static ptr *singleton_refs[] = { &S_G.null_string,
&S_G.null_vector,
&S_G.null_fxvector,
&S_G.null_flvector,
&S_G.null_bytevector,
&S_G.null_immutable_string,
&S_G.null_immutable_vector,
&S_G.null_immutable_fxvector,
&S_G.null_immutable_bytevector,
&S_G.eqp,
&S_G.eqvp,

View File

@ -759,12 +759,6 @@ The storage management system also takes advantage of the fact that
fxvectors contain no pointers to place them in an area of memory that
does not have to be traced during collection.
\index{immutable fxvectors}\index{mutable fxvectors}%
All fxvectors are mutable by default, including constants.
A program can create immutable fxvectors via
\index{\scheme{fxvector->immutable-fxvector}}\scheme{fxvector->immutable-fxvector}.
Any attempt to modify an immutable fxvector causes an exception to be raised.
See also \scheme{vector-set-fixnum!} above.
%----------------------------------------------------------------------------
@ -857,7 +851,6 @@ the length of \var{fxvector}.
\endentryheader
\noindent
\var{fxvector} must be mutable.
\var{n} must be a nonnegative fixnum strictly less than
the length of \var{fxvector}.
\scheme{fxvector-set!} changes the \var{n}th element of \var{fxvector} to \var{fixnum}.
@ -877,7 +870,6 @@ the length of \var{fxvector}.
\endentryheader
\noindent
\var{fxvector} must be mutable.
\scheme{fxvector-fill!} replaces each element of \var{fxvector} with \var{fixnum}.
\schemedisplay
@ -940,40 +932,203 @@ as \var{fxvector}.
(eq? v (fxvector-copy v))) ;=> #f
\endschemedisplay
\section{Flonum-Only Vectors\label{SECTFLVECTORS}}
\index{flvectors}%
Flonum-only vectors, or ``flvectors,'' are like vectors but contain
only flonums.
Flvectors are written with the \scheme{#vfl} prefix in place of the
\scheme{#} prefix for vectors, e.g., \scheme{#vfl(1.0 2.0 3.0)} or
\scheme{#10vfl(2.0)}.
The flvector syntax is disabled in an input stream after \scheme{#!r6rs}
has been seen by the reader, unless \scheme{#!chezscheme} has been seen
more recently.
The length and indices of an flvector are always fixnums.
Updating an flvector is generally less expensive than updating a vector,
since for vectors, the system records potential assignments from older to
younger objects to support generational garbage collection.
An flvector stores a flonum's representation directly, instead of a reference to a
flonum, so flonum identity is fresh when it is extracted from an flvector.
The storage management system also takes advantage of the fact that
flvectors contain no pointers to place them in an area of memory that
does not have to be traced during collection.
%----------------------------------------------------------------------------
\entryheader
\formdef{mutable-fxvector?}{\categoryprocedure}{(mutable-fxvector? \var{obj})}
\returns \scheme{#t} if \var{obj} is a mutable fxvector, \scheme{#f} otherwise
\formdef{immutable-fxvector?}{\categoryprocedure}{(immutable-fxvector? \var{obj})}
\returns \scheme{#t} if \var{obj} is an immutable fxvector, \scheme{#f} otherwise
\formdef{flvector?}{\categoryprocedure}{(flvector? \var{obj})}
\returns \scheme{#t} if \var{obj} is an flvector, \scheme{#f} otherwise
\listlibraries
\endentryheader
\noskip\schemedisplay
(mutable-fxvector? (fxvector 1 2 3)) ;=> #t
(mutable-fxvector? (fxvector->immutable-fxvector (fxvector 1 2 3))) ;=> #f
(immutable-fxvector? (fxvector 1 2 3)) ;=> #f
(immutable-fxvector? (fxvector->immutable-fxvector (fxvector 1 2 3))) ;=> #t
(immutable-fxvector? (cons 3 4)) ;=> #f
(flvector? #vfl()) ;=> #t
(flvector? #vfl(1.0 2.0 3.0)) ;=> #t
(flvector? (flvector 1.0 2.0 3.0)) ;=> #t
(flvector? '#(a b c)) ;=> #f
(flvector? '(a b c)) ;=> #f
(flvector? "abc") ;=> #f
\endschemedisplay
%----------------------------------------------------------------------------
\entryheader
\formdef{fxvector->immutable-fxvector}{\categoryprocedure}{(fxvector->immutable-fxvector \var{fxvector})}
\returns either an immutable copy of \var{fxvector} or \var{fxvector} itself
\formdef{flvector}{\categoryprocedure}{(flvector \var{flonum} \dots)}
\returns an flvector of the fixnums \scheme{\var{flonum} \dots}
\listlibraries
\endentryheader
\noskip\schemedisplay
(flvector) ;=> #vfl()
(flvector 1.0 3.0 5.0) ;=> #vfl(1.0 3.0 5.0)
\endschemedisplay
%----------------------------------------------------------------------------
\entryheader
\formdef{make-flvector}{\categoryprocedure}{(make-flvector \var{n})}
\formdef{make-flvector}{\categoryprocedure}{(make-flvector \var{n} \var{flonum})}
\returns an flvector of length \var{n}
\listlibraries
\endentryheader
\noindent
\index{immutable fxvectors}\index{mutable fxvectors}%
The result is \var{fxvector} itself if \var{fxvector}
is immutable; otherwise, the result is an immutable fxvector with the same content as \var{fxvector}.
\var{n} must be a fixnum.
If \var{flonum} is supplied, each element of the flvector is initialized
to \var{flonum}; otherwise, the elements are unspecified.
\schemedisplay
(define v (fxvector->immutable-fxvector (fxvector 1 2 3)))
(fxvector-set! v 0 0) ;=> \var{exception: not mutable}
(make-flvector 0) ;=> #vfl()
(make-flvector 0 7.0) ;=> #vfl()
(make-flvector 5 7.0) ;=> #vfl(7.0 7.0 7.0 7.0 7.0)
\endschemedisplay
%----------------------------------------------------------------------------
\entryheader
\formdef{flvector-length}{\categoryprocedure}{(flvector-length \var{flvector})}
\returns the number of elements in \var{flvector}
\listlibraries
\endentryheader
\schemedisplay
(flvector-length #vfl()) ;=> 0
(flvector-length #vfl(1.0 2.0 3.0)) ;=> 3
(flvector-length #10vfl(1.0 2.0 3.0)) ;=> 10
(flvector-length (flvector 1.0 2.0 3.0 4.0)) ;=> 4
(flvector-length (make-flvector 300)) ;=> 300
\endschemedisplay
%----------------------------------------------------------------------------
\entryheader
\formdef{flvector-ref}{\categoryprocedure}{(flvector-ref \var{flvector} \var{n})}
\returns the \var{n}th element (zero-based) of \var{flvector}
\listlibraries
\endentryheader
\noindent
\var{n} must be a nonnegative fixnum strictly less than
the length of \var{flvector}.
\schemedisplay
(flvector-ref #vfl(-1.0 2.0 4.0 7.0) 0) ;=> -1.0
(flvector-ref #vfl(-1.0 2.0 4.0 7.0) 1) ;=> 2.0
(flvector-ref #vfl(-1.0 2.0 4.0 7.0) 3) ;=> 7.0
\endschemedisplay
%----------------------------------------------------------------------------
\entryheader
\formdef{flvector-set!}{\categoryprocedure}{(flvector-set! \var{flvector} \var{n} \var{flonum})}
\returns unspecified
\listlibraries
\endentryheader
\noindent
\var{n} must be a nonnegative fixnum strictly less than
the length of \var{flvector}.
\scheme{flvector-set!} changes the \var{n}th element of \var{flvector} to \var{flonum}.
\schemedisplay
(let ([v (flvector 1.0 2.0 3.0 4.0 5.0)])
(flvector-set! v 2 (fx- (flvector-ref v 2)))
v) ;=> #vfl(1.0 2.0 -3.0 4.0 5.0)
\endschemedisplay
%----------------------------------------------------------------------------
\entryheader
\formdef{flvector-fill!}{\categoryprocedure}{(flvector-fill! \var{flvector} \var{flonum})}
\returns unspecified
\listlibraries
\endentryheader
\noindent
\scheme{flvector-fill!} replaces each element of \var{flvector} with \var{flonum}.
\schemedisplay
(let ([v (flvector 1.0 2.0 3.0)])
(flvector-fill! v 0.0)
v) ;=> #vfl(0.0 0.0 0.0)
\endschemedisplay
%----------------------------------------------------------------------------
\entryheader
\formdef{flvector->list}{\categoryprocedure}{(flvector->list \var{flvector})}
\returns a list of the elements of \var{flvector}
\listlibraries
\endentryheader
\schemedisplay
(flvector->list (flvector)) ;=> ()
(flvector->list #vfl(7.0 5.0 2.0)) ;=> (7.0 5.0 2.0)
(let ([v #vfl(1.0 2.0 3.0 4.0 5.0)])
(apply fl* (flvector->list v))) ;=> 120.0
\endschemedisplay
%----------------------------------------------------------------------------
\entryheader
\formdef{list->flvector}{\categoryprocedure}{(list->flvector \var{list})}
\returns an flvector of the elements of \var{list}
\listlibraries
\endentryheader
\noindent
\var{list} must consist entirely of flonums.
\schemedisplay
(list->flvector '()) ;=> #vfl()
(list->flvector '(3.0 5.0 7.0)) ;=> #vfl(3.0 5.0 7.0)
(let ([v #vfl(1.0 2.0 3.0 4.0 5.0)])
(let ([ls (flvector->list v)])
(list->flvector (map fx* ls ls)))) ;=> #vfl(1.0 4.0 9.0 16.0 25.0)
\endschemedisplay
%----------------------------------------------------------------------------
\entryheader
\formdef{flvector-copy}{\categoryprocedure}{(flvector-copy \var{flvector})}
\returns a copy of \var{flvector}
\listlibraries
\endnoskipentryheader
\noindent
\scheme{flvector-copy} creates a new flvector with the same length and contents
as \var{flvector}.
\schemedisplay
(flvector-copy #vfl(3.0 4.0 5.0)) ;=> #vfl(3.0 4.0 5.0)
(let ([v #vfl(3.0 4.0 5.0)])
(eq? v (flvector-copy v))) ;=> #f
\endschemedisplay
\section{Bytevectors\label{SECTBYTEVECTORS}}

View File

@ -62,7 +62,7 @@ InstallLZ4Target=
# no changes should be needed below this point #
###############################################################################
Version=csv9.5.3.41
Version=csv9.5.3.42
Include=boot/$m
PetiteBoot=boot/$m/petite.boot
SchemeBoot=boot/$m/scheme.boot

View File

@ -814,11 +814,23 @@
(fxvector? (fxvector 1 2 3 4))
(not (fxvector? '(1 2 3)))
(not (fxvector? '#(1 2 3)))
(not (fxvector? '#vfl(1.0 2.0 3.0)))
(not (fxvector? '#vu8(1 2 3)))
(not (fxvector? "hi there"))
(not (fxvector? 234234))
)
(mat flvector?
(flvector? #vfl(1.0 2.0 3.0))
(flvector? (flvector 1.0 2.0 3.0 4.0))
(not (flvector? '(1 2 3)))
(not (flvector? '#(1.0 2.0 3.0)))
(not (flvector? '#vfx(1 2 3)))
(not (flvector? '#vu8(1 2 3)))
(not (flvector? "hi there"))
(not (flvector? 234234))
)
(mat bytevector?
(bytevector? '#vu8(1 2 3))
(bytevector? (bytevector 1 2 3 4))

View File

@ -207,31 +207,21 @@
)
(mat $fxvector-ref-check?
(let ([fv (make-fxvector 3)] [imm-fv (fxvector->immutable-fxvector (make-fxvector 3))] [not-fv (make-vector 3)])
(let ([fv (make-fxvector 3)] [not-fv (make-vector 3)])
(let ([i-1 -1] [i0 0] [i1 1] [i2 2] [i3 3] [ifalse #f] [ibig (+ (most-positive-fixnum) 1)])
(and
(not (#%$fxvector-ref-check? not-fv i0))
(not (#%$fxvector-ref-check? fv ifalse))
(not (#%$fxvector-ref-check? fv i-1))
(not (#%$fxvector-ref-check? imm-fv i-1))
(#%$fxvector-ref-check? fv 0)
(#%$fxvector-ref-check? fv 1)
(#%$fxvector-ref-check? fv 2)
(#%$fxvector-ref-check? imm-fv 0)
(#%$fxvector-ref-check? imm-fv 1)
(#%$fxvector-ref-check? imm-fv 2)
(#%$fxvector-ref-check? fv i0)
(#%$fxvector-ref-check? fv i1)
(#%$fxvector-ref-check? fv i2)
(#%$fxvector-ref-check? imm-fv i0)
(#%$fxvector-ref-check? imm-fv i1)
(#%$fxvector-ref-check? imm-fv i2)
(not (#%$fxvector-ref-check? fv 3))
(not (#%$fxvector-ref-check? fv i3))
(not (#%$fxvector-ref-check? fv ibig))
(not (#%$fxvector-ref-check? imm-fv 3))
(not (#%$fxvector-ref-check? imm-fv i3))
(not (#%$fxvector-ref-check? imm-fv ibig)))))
(not (#%$fxvector-ref-check? fv ibig)))))
)
(mat fxvector-ref
@ -326,6 +316,161 @@
(error? (fxvector->list '(a b c)))
)
(mat flvector
(equal? (flvector 1.0 2.0 3.0 4.0) '#vfl(1.0 2.0 3.0 4.0))
(eq? (flvector) '#vfl())
(flvector? (flvector 1.0))
(flvector? (flvector -1.0))
(error? (flvector 1))
(error? (flvector 'a))
(error? (flvector 1.0 2.0 'a 4.0))
)
(mat make-flvector
(eqv? (flvector-length (make-flvector 10)) 10)
(eqv? (flvector-length (make-flvector 100)) 100)
(eqv? (flvector-length (make-flvector (+ 100 17))) 117)
(eq? (make-flvector 0) '#vfl())
(let ([x (make-flvector 10)])
(and (= (flvector-length x) 10)
(andmap flonum? (flvector->list x))))
(error? (make-flvector 3 'a))
(error? (make-flvector 10 1))
(error? (make-flvector 10 'a))
(equal? (make-flvector 10 7.0) (flvector 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0))
(equal? (make-flvector (- 4 2) (+ 1.0 1.0)) (flvector 2.0 2.0))
(eqv? (make-flvector (- 4 4) (+ 1.0 1.0)) (flvector))
)
(mat flvector-syntax
(eq? '#vfl() '#vfl())
(eq? '#0vfl() #vfl())
(equal?
'(#vfl(1.0 2.0 3.0) #3vfl(1.0 2.0 3.0) #6vfl(1.0 2.0 3.0))
(list (flvector 1.0 2.0 3.0) (flvector 1.0 2.0 3.0) (flvector 1.0 2.0 3.0 3.0 3.0 3.0)))
(let ([x #10vfl()])
(and (= (flvector-length x) 10)
(andmap flonum? (flvector->list x))))
; the following is invalid because the reader doesn't allow graph marks
; and references within an flvector
; (equal? '(#0=#vfl(#1=33 #2# #1# #2=44 #3#) #2# #3=55)
; '(#vfl(33 44 33 44 55) 44 55))
)
(mat flvector-length
(eqv? (flvector-length '#vfl(3.0 4.0 5.0)) 3)
(eqv? (flvector-length '#100vfl(5.0 4.0 3.0)) 100)
(eqv? (flvector-length '#vfl()) 0)
(error? (flvector-length '(a b c)))
)
(mat $flvector-ref-check?
(let ([fv (make-flvector 3)] [not-fv (make-vector 3)])
(let ([i-1 -1] [i0 0] [i1 1] [i2 2] [i3 3] [ifalse #f] [ibig (+ (most-positive-fixnum) 1)])
(and
(not (#%$flvector-ref-check? not-fv i0))
(not (#%$flvector-ref-check? fv ifalse))
(not (#%$flvector-ref-check? fv i-1))
(#%$flvector-ref-check? fv 0)
(#%$flvector-ref-check? fv 1)
(#%$flvector-ref-check? fv 2)
(#%$flvector-ref-check? fv i0)
(#%$flvector-ref-check? fv i1)
(#%$flvector-ref-check? fv i2)
(not (#%$flvector-ref-check? fv 3))
(not (#%$flvector-ref-check? fv i3))
(not (#%$flvector-ref-check? fv ibig)))))
)
(mat flvector-ref
(eqv? (flvector-ref '#vfl(3.0 4.0 5.0) 0) '3.0)
(eqv? (flvector-ref '#vfl(3.0 4.0 5.0) 1) '4.0)
(eqv? (flvector-ref '#vfl(3.0 4.0 5.0) 2) '5.0)
(error? (flvector-ref '#vfl(3.0 4.0 5.0) 3))
(error? (flvector-ref '#vfl(3.0 4.0 5.0) -1))
(error? (flvector-ref '#vfl(3.0 4.0 5.0) 'a))
(error? (flvector-ref '#(3.0 4.0 5.0) 2))
(error? (flvector-ref '(3.0 4.0 5.0) 2))
)
(mat flvector-set!
(let ((v (flvector '3.0 '4.0 '5.0)))
(and
(begin (flvector-set! v 0 '33.0) (equal? v '#vfl(33.0 4.0 5.0)))
(begin (flvector-set! v 1 '44.0) (equal? v '#vfl(33.0 44.0 5.0)))
(begin (flvector-set! v 2 '55.0) (equal? v '#vfl(33.0 44.0 55.0)))))
(error? (flvector-set! (flvector '3.0 '4.0 '5.0) 3 'd))
(error? (flvector-set! (flvector '3.0 '4.0 '5.0) -1 'd))
(error? (flvector-set! (flvector '3.0 '4.0 '5.0) 'a 'd))
(error? (flvector-set! (flvector '3.0 '4.0 '5.0) 2 'd))
(error? (flvector-set! (list '3.0 '4.0 '5.0) 2 'd))
(error? (flvector-set! (flvector 3.0 4.0 5.0) 1 1))
(error? (flvector-set! (flvector 3.0 4.0 5.0) 0 'a))
(begin
(define test-flvector-set!
(lambda (v i x)
(flvector-set! v i x)))
#t)
(equal?
(let ([v (flvector 3.0 4.0 5.0)])
(test-flvector-set! v 0 -3.0)
(test-flvector-set! v 1 -4.0)
(test-flvector-set! v 2 17.0)
v)
#vfl(-3.0 -4.0 17.0))
(error? (test-flvector-set! (list 3.0 4.0 5.0) 0 9.0))
(error? (test-flvector-set! (vector 3.0 4.0) 0 9.0))
(error? (test-flvector-set! (flvector 3.0 4.0 5.0) 3 9.0))
(error? (test-flvector-set! (flvector 3.0 4.0 5.0) -3 9.0))
(error? (test-flvector-set! (flvector 3.0 4.0 5.0) (+ (most-positive-fixnum) 1) 9.0))
(error? (test-flvector-set! (flvector 3.0 4.0 5.0) (- (most-negative-fixnum) 1) 9.0))
(error? (test-flvector-set! (flvector 3.0 4.0 5.0) 'a 9.0))
(error? (test-flvector-set! (flvector 3.0 4.0 5.0) 2 1))
(error? (test-flvector-set! (flvector 3.0 4.0 5.0) 2 'a))
)
(mat flvector-copy
(equal? (flvector-copy '#vfl()) '#vfl())
(equal? (flvector-copy '#vfl(3.0 4.0 5.0)) '#vfl(3.0 4.0 5.0))
(let* ((x1 (flvector 1.0 2.0 3.0)) (x2 (flvector-copy x1)))
(and (equal? x2 x1) (not (eq? x2 x1))))
(andmap
(lambda (n)
(let ([v (list->flvector (map (lambda (x) (random (inexact x))) (make-list n 1000)))])
(equal? (flvector-copy v) v)))
(map random (make-list 500 2500)))
(error? (flvector-copy '(a b c)))
)
(mat flvector-fill!
(let ([v (flvector-copy '#5vfl(1.0 2.0 3.0 4.0 5.0))])
(and (equal? v '#5vfl(1.0 2.0 3.0 4.0 5.0))
(begin
(flvector-fill! v 9.0)
(equal? v '#5vfl(9.0)))))
(let ([v (flvector-copy '#5vfl(1.0 2.0 3.0 4.0 5.0))])
(and (equal? v '#5vfl(1.0 2.0 3.0 4.0 5.0))
(begin
(flvector-fill! v -17.0)
(equal? v '#5vfl(-17.0)))))
(error? (let ([v (flvector 1.0)]) (flvector-fill! v 'a)))
(error? (let ([v (vector 1.0)]) (flvector-fill! v 3.0)))
)
(mat list->flvector
(equal? (list->flvector '(1.0 2.0 3.0)) '#vfl(1.0 2.0 3.0))
(equal? (list->flvector '()) '#vfl())
(error? (list->flvector '#(a b c)))
(error? (list->flvector '(1.0 2.0 . 3.0)))
(error? (list->flvector (let ([ls (list 1.0 2.0 3.0)]) (set-cdr! (cddr ls) (cdr ls)) ls)))
)
(mat flvector->list
(equal? (flvector->list '#vfl(1.0 2.0 3.0)) '(1.0 2.0 3.0))
(equal? (flvector->list '#vfl()) '())
(error? (flvector->list '(a b c)))
)
(mat vector-map
(error? ; invalid number of arguments
(vector-map))
@ -1226,35 +1371,6 @@
(error? (vector-sort! < immutable-123-vector))
)
(mat fxvector->immutable-fxvector
(begin
(define immutable-123-fxvector
(fxvector->immutable-fxvector (fxvector 1 2 3)))
#t)
(immutable-fxvector? immutable-123-fxvector)
(not (mutable-fxvector? immutable-123-fxvector))
(equal? '#vfx(1 2 3) immutable-123-fxvector)
(eq? immutable-123-fxvector
(fxvector->immutable-fxvector immutable-123-fxvector))
(mutable-fxvector? (make-fxvector 5))
(not (immutable-fxvector? (make-fxvector 5)))
(immutable-fxvector? (fxvector->immutable-fxvector (fxvector)))
(not (mutable-fxvector? (fxvector->immutable-fxvector (fxvector))))
(not (immutable-fxvector? (fxvector)))
(mutable-fxvector? (fxvector))
(not (immutable-fxvector? (fxvector-copy immutable-123-fxvector)))
(error? (fxvector-set! immutable-123-fxvector 0 1))
(error? (fxvector-fill! immutable-123-fxvector 0))
)
(mat vector-cas!
(begin
(define vec1 (vector 1 2 3))

View File

@ -782,6 +782,13 @@
(or (< i 0)
(and (fx= (fxvector-ref x i) (fxvector-ref y i))
(f (1- i))))))]
[(flvector? x)
(and (flvector? y)
(= (flvector-length x) (flvector-length y))
(let f ([i (- (flvector-length x) 1)])
(or (< i 0)
(and (fl= (flvector-ref x i) (flvector-ref y i))
(f (1- i))))))]
[(bytevector? x)
(and (bytevector? y)
(bytevector=? x y))]

View File

@ -1172,6 +1172,12 @@
(check-loop-allocation (lambda (v) (let ([v (fl+ v 1.0)])
(bytevector-ieee-double-native-set! bv 0 v)
(fl* v 0.99)))))
(let ([flv (make-flvector 8 0.0)])
(check-loop-allocation (lambda (v) (fl+ v (flvector-ref flv 0)))))
(let ([flv (make-flvector 8 0.0)])
(check-loop-allocation (lambda (v) (let ([v (fl+ v 1.0)])
(flvector-set! flv 0 v)
(fl* v 0.99)))))
(or (not (enable-cp0))
(let ()
(define-record pseudo-random-generator

View File

@ -1663,6 +1663,7 @@
[(5) (open-output-string)]
[(6) (fxvector 15 55)]
[(7) (lambda () x)]
[(8) (flvector 15.0 55.0)]
[else (box 'top)])))
(let ([ls1 (let f ([n 10000])
(if (fx= n 0)
@ -3038,6 +3039,7 @@
[(5) (open-output-string)]
[(6) (fxvector 15 55)]
[(7) (lambda () x)]
[(8) (flvector 15.0 55.0)]
[else (box 'top)])))
(let ([ls1 (let f ([n 10000])
(if (fx= n 0)

View File

@ -2011,10 +2011,9 @@
(vector 1 'two "three")
(stencil-vector 30 'one 2.0 0+3i "four")
(box 88)
"" '#() '#vu8() (make-fxvector 0)
"" '#() '#vu8() (make-fxvector 0) (make-flvector 0)
(string->immutable-string "") (vector->immutable-vector '#())
(bytevector->immutable-bytevector '#vu8())
(fxvector->immutable-fxvector (make-fxvector 0))))
(bytevector->immutable-bytevector '#vu8())))
(define (same-vfasl-content? v)
(andmap (lambda (a b)
(or (eqv? a b)
@ -4926,21 +4925,18 @@
(mat fasl-immutable
(begin
(define immutable-objs (list (vector->immutable-vector '#(1 2 3))
(fxvector->immutable-fxvector '#vfx(1 2 3))
(string->immutable-string "abc")
(bytevector->immutable-bytevector #vu8(1 2 3))
(box-immutable 1)))
(define immutable-zero-objs (list (vector->immutable-vector '#())
(fxvector->immutable-fxvector '#vfx())
(string->immutable-string "")
(bytevector->immutable-bytevector #vu8())
(box-immutable 1)))
(define (immutable? l)
(and (immutable-vector? (list-ref l 0))
(immutable-fxvector? (list-ref l 1))
(immutable-string? (list-ref l 2))
(immutable-bytevector? (list-ref l 3))
(immutable-box? (list-ref l 4))))
(immutable-string? (list-ref l 1))
(immutable-bytevector? (list-ref l 2))
(immutable-box? (list-ref l 3))))
(define (round-trip l)
(let-values ([(o get) (open-bytevector-output-port)])
(fasl-write l o)
@ -4976,7 +4972,6 @@
;; Make sure `fasl-read` didn't mark "mutable" null values
;; as immutable:
(mutable-vector? '#())
(mutable-fxvector? '#vfx())
(mutable-string? "")
(mutable-bytevector? '#vu8())

View File

@ -1,7 +1,7 @@
*** errors-compile-0-f-f-f 2020-06-03 12:04:45.000000000 -0600
--- errors-compile-0-f-t-f 2020-06-03 11:23:43.000000000 -0600
*** errors-compile-0-f-f-f 2020-11-07 07:25:50.000000000 -0700
--- errors-compile-0-f-t-f 2020-11-07 06:47:03.000000000 -0700
***************
*** 198,204 ****
*** 200,206 ****
3.mo:Expected error in mat dipa-letrec: "attempt to reference undefined variable a".
3.mo:Expected error in mat dipa-letrec: "attempt to reference undefined variable c".
3.mo:Expected error in mat dipa-letrec: "attempt to reference undefined variable m".
@ -9,7 +9,7 @@
3.mo:Expected error in mat dipa-letrec: "attempt to reference undefined variable y".
3.mo:Expected error in mat dipa-letrec: "attempt to reference undefined variable a".
3.mo:Expected error in mat dipa-letrec: "attempt to reference undefined variable a".
--- 198,204 ----
--- 200,206 ----
3.mo:Expected error in mat dipa-letrec: "attempt to reference undefined variable a".
3.mo:Expected error in mat dipa-letrec: "attempt to reference undefined variable c".
3.mo:Expected error in mat dipa-letrec: "attempt to reference undefined variable m".
@ -18,7 +18,7 @@
3.mo:Expected error in mat dipa-letrec: "attempt to reference undefined variable a".
3.mo:Expected error in mat dipa-letrec: "attempt to reference undefined variable a".
***************
*** 217,223 ****
*** 219,225 ****
3.mo:Expected error in mat cpvalid: "attempt to reference undefined variable b".
3.mo:Expected error in mat cpvalid: "attempt to reference undefined variable a".
3.mo:Expected error in mat cpvalid: "attempt to reference undefined variable g".
@ -26,7 +26,7 @@
3.mo:Expected error in mat cpvalid: "attempt to reference undefined variable f".
3.mo:Expected error in mat cpvalid: "attempt to reference undefined variable c".
3.mo:Expected warning in mat cpvalid: "possible attempt to reference undefined variable x".
--- 217,223 ----
--- 219,225 ----
3.mo:Expected error in mat cpvalid: "attempt to reference undefined variable b".
3.mo:Expected error in mat cpvalid: "attempt to reference undefined variable a".
3.mo:Expected error in mat cpvalid: "attempt to reference undefined variable g".
@ -35,7 +35,7 @@
3.mo:Expected error in mat cpvalid: "attempt to reference undefined variable c".
3.mo:Expected warning in mat cpvalid: "possible attempt to reference undefined variable x".
***************
*** 264,273 ****
*** 266,275 ****
3.mo:Expected error in mat mrvs: "returned three values to single value return context".
3.mo:Expected error in mat mrvs: "returned three values to single value return context".
3.mo:Expected error in mat mrvs: "returned zero values to single value return context".
@ -46,7 +46,7 @@
3.mo:Expected error in mat mrvs: "variable $mrvs-foo is not bound".
3.mo:Expected error in mat mrvs: "attempt to apply non-procedure 17".
3.mo:Expected error in mat mrvs: "returned two values to single value return context".
--- 264,273 ----
--- 266,275 ----
3.mo:Expected error in mat mrvs: "returned three values to single value return context".
3.mo:Expected error in mat mrvs: "returned three values to single value return context".
3.mo:Expected error in mat mrvs: "returned zero values to single value return context".
@ -58,7 +58,7 @@
3.mo:Expected error in mat mrvs: "attempt to apply non-procedure 17".
3.mo:Expected error in mat mrvs: "returned two values to single value return context".
***************
*** 4034,4040 ****
*** 4037,4043 ****
misc.mo:Expected error in mat cpletrec: "foreign-procedure: no entry for "foo"".
misc.mo:Expected error in mat cpletrec: "attempt to reference undefined variable q".
misc.mo:Expected error in mat cpletrec: "attempt to reference undefined variable bar".
@ -66,7 +66,7 @@
misc.mo:Expected error in mat cpletrec: "attempt to reference undefined variable b".
misc.mo:Expected error in mat cpletrec: "attempt to reference undefined variable b".
misc.mo:Expected error in mat cpletrec: "attempt to reference undefined variable a".
--- 4034,4040 ----
--- 4037,4043 ----
misc.mo:Expected error in mat cpletrec: "foreign-procedure: no entry for "foo"".
misc.mo:Expected error in mat cpletrec: "attempt to reference undefined variable q".
misc.mo:Expected error in mat cpletrec: "attempt to reference undefined variable bar".
@ -75,7 +75,7 @@
misc.mo:Expected error in mat cpletrec: "attempt to reference undefined variable b".
misc.mo:Expected error in mat cpletrec: "attempt to reference undefined variable a".
***************
*** 7612,7619 ****
*** 7666,7673 ****
7.mo:Expected error in mat bytes-allocated: "bytes-allocated: invalid space gnu".
7.mo:Expected error in mat error: "a: hit me!".
7.mo:Expected error in mat error: "f: n is 0".
@ -84,7 +84,7 @@
record.mo:Expected error in mat record2: "invalid value 3 for foreign type double-float".
record.mo:Expected error in mat record2: "3 is not of type #<record type fudge>".
record.mo:Expected error in mat record2: "make-record-type: invalid field list ((immutable double-float a) . b)".
--- 7612,7619 ----
--- 7666,7673 ----
7.mo:Expected error in mat bytes-allocated: "bytes-allocated: invalid space gnu".
7.mo:Expected error in mat error: "a: hit me!".
7.mo:Expected error in mat error: "f: n is 0".
@ -94,7 +94,7 @@
record.mo:Expected error in mat record2: "3 is not of type #<record type fudge>".
record.mo:Expected error in mat record2: "make-record-type: invalid field list ((immutable double-float a) . b)".
***************
*** 7621,7635 ****
*** 7675,7689 ****
record.mo:Expected error in mat type-descriptor: "invalid syntax (type-descriptor 3)".
record.mo:Expected error in mat type-descriptor: "type-descriptor: unrecognized record car".
record.mo:Expected error in mat record3: "variable set-fudge-a! is not bound".
@ -110,7 +110,7 @@
record.mo:Expected error in mat record9: "record-reader: invalid input #f".
record.mo:Expected error in mat record9: "record-reader: invalid second argument fudge".
record.mo:Expected error in mat record9: "record-reader: invalid second argument fudge".
--- 7621,7635 ----
--- 7675,7689 ----
record.mo:Expected error in mat type-descriptor: "invalid syntax (type-descriptor 3)".
record.mo:Expected error in mat type-descriptor: "type-descriptor: unrecognized record car".
record.mo:Expected error in mat record3: "variable set-fudge-a! is not bound".
@ -127,7 +127,7 @@
record.mo:Expected error in mat record9: "record-reader: invalid second argument fudge".
record.mo:Expected error in mat record9: "record-reader: invalid second argument fudge".
***************
*** 7642,7667 ****
*** 7696,7721 ****
record.mo:Expected error in mat record10: "read: unresolvable cycle constructing record of type #<record type bar> at char 3 of #<input port string>".
record.mo:Expected error in mat record16: "read: unresolvable cycle constructing record of type #<record type bazar> at char 3 of #<input port string>".
record.mo:Expected error in mat record16: "read: unresolvable cycle constructing record of type #<record type bazar> at char 3 of #<input port string>".
@ -154,7 +154,7 @@
record.mo:Expected error in mat foreign-data: "foreign-alloc: 0 is not a positive fixnum".
record.mo:Expected error in mat foreign-data: "foreign-alloc: <int> is not a positive fixnum".
record.mo:Expected error in mat foreign-data: "foreign-alloc: -5 is not a positive fixnum".
--- 7642,7667 ----
--- 7696,7721 ----
record.mo:Expected error in mat record10: "read: unresolvable cycle constructing record of type #<record type bar> at char 3 of #<input port string>".
record.mo:Expected error in mat record16: "read: unresolvable cycle constructing record of type #<record type bazar> at char 3 of #<input port string>".
record.mo:Expected error in mat record16: "read: unresolvable cycle constructing record of type #<record type bazar> at char 3 of #<input port string>".
@ -182,7 +182,7 @@
record.mo:Expected error in mat foreign-data: "foreign-alloc: <int> is not a positive fixnum".
record.mo:Expected error in mat foreign-data: "foreign-alloc: -5 is not a positive fixnum".
***************
*** 7792,7830 ****
*** 7846,7884 ****
record.mo:Expected error in mat record22: "invalid field specifier (immutable creepy q)".
record.mo:Expected error in mat record22: "invalid field specifier (immutable creepy q)".
record.mo:Expected error in mat record23: "make-record-type: cannot extend sealed record type #<record type foo>".
@ -222,7 +222,7 @@
record.mo:Expected error in mat record?: "record?: 4 is not a record type descriptor".
record.mo:Expected error in mat record?: "record?: a is not a record type descriptor".
record.mo:Expected error in mat record?: "record?: #(1) is not a record type descriptor".
--- 7792,7830 ----
--- 7846,7884 ----
record.mo:Expected error in mat record22: "invalid field specifier (immutable creepy q)".
record.mo:Expected error in mat record22: "invalid field specifier (immutable creepy q)".
record.mo:Expected error in mat record23: "make-record-type: cannot extend sealed record type #<record type foo>".
@ -263,7 +263,7 @@
record.mo:Expected error in mat record?: "record?: a is not a record type descriptor".
record.mo:Expected error in mat record?: "record?: #(1) is not a record type descriptor".
***************
*** 7839,7895 ****
*** 7893,7949 ****
record.mo:Expected error in mat r6rs-records-procedural: "make-record-constructor-descriptor: invalid protocol flimflam".
record.mo:Expected error in mat r6rs-records-procedural: "attempt to apply non-procedure not-a-procedure".
record.mo:Expected error in mat r6rs-records-procedural: "attempt to apply non-procedure spam".
@ -321,7 +321,7 @@
record.mo:Expected error in mat r6rs-records-syntactic: "define-record-type: incompatible record type cpoint - different parent".
record.mo:Expected error in mat r6rs-records-syntactic: "define-record-type: incompatible record type cpoint - different parent".
record.mo:Expected error in mat r6rs-records-syntactic: "cannot extend define-record-type parent fratrat".
--- 7839,7895 ----
--- 7893,7949 ----
record.mo:Expected error in mat r6rs-records-procedural: "make-record-constructor-descriptor: invalid protocol flimflam".
record.mo:Expected error in mat r6rs-records-procedural: "attempt to apply non-procedure not-a-procedure".
record.mo:Expected error in mat r6rs-records-procedural: "attempt to apply non-procedure spam".

View File

@ -1,5 +1,5 @@
*** errors-compile-0-f-f-f 2020-08-04 20:40:20.000000000 -0600
--- errors-compile-0-t-f-f 2020-08-04 20:09:15.000000000 -0600
*** errors-compile-0-f-f-f 2020-11-07 07:25:50.000000000 -0700
--- errors-compile-0-t-f-f 2020-11-07 06:55:58.000000000 -0700
***************
*** 168,174 ****
3.mo:Expected error in mat case-lambda: "incorrect number of arguments 2 to #<procedure foo>".
@ -3861,7 +3861,7 @@
misc.mo:Expected error in mat compiler3: "incorrect argument count in call (consumer 1 2)".
misc.mo:Expected error in mat compiler3: "variable goto is not bound".
***************
*** 4059,4065 ****
*** 4060,4066 ****
misc.mo:Expected error in mat $fasl-file-equal?: "$fasl-file-equal?: failed for probably-does-not-exist: no such file or directory".
misc.mo:Expected error in mat $fasl-file-equal?: "$fasl-file-equal?: failed for probably-does-not-exist: no such file or directory".
misc.mo:Expected error in mat $fasl-file-equal?: "$fasl-file-equal?: record comparison failed while comparing testfile-fatfib1.so and testfile-fatfib3.so within fasl entry 4".
@ -3869,7 +3869,7 @@
misc.mo:Expected error in mat cost-center: "with-cost-center: foo is not a cost center".
misc.mo:Expected error in mat cost-center: "with-cost-center: bar is not a procedure".
misc.mo:Expected error in mat cost-center: "cost-center-instruction-count: 5 is not a cost center".
--- 4059,4065 ----
--- 4060,4066 ----
misc.mo:Expected error in mat $fasl-file-equal?: "$fasl-file-equal?: failed for probably-does-not-exist: no such file or directory".
misc.mo:Expected error in mat $fasl-file-equal?: "$fasl-file-equal?: failed for probably-does-not-exist: no such file or directory".
misc.mo:Expected error in mat $fasl-file-equal?: "$fasl-file-equal?: record comparison failed while comparing testfile-fatfib1.so and testfile-fatfib3.so within fasl entry 4".
@ -3878,7 +3878,7 @@
misc.mo:Expected error in mat cost-center: "with-cost-center: bar is not a procedure".
misc.mo:Expected error in mat cost-center: "cost-center-instruction-count: 5 is not a cost center".
***************
*** 4113,4120 ****
*** 4114,4121 ****
misc.mo:Expected error in mat apropos: "apropos: 3 is not a symbol or string".
misc.mo:Expected error in mat apropos: "apropos: (hit me) is not a symbol or string".
misc.mo:Expected error in mat apropos: "apropos-list: b is not an environment".
@ -3887,7 +3887,7 @@
misc.mo:Expected error in mat apropos: "variable $apropos-unbound1 is not bound".
misc.mo:Expected error in mat apropos: "variable $apropos-unbound2 is not bound".
misc.mo:Expected error in mat simplify-if: "textual-port?: a is not a port".
--- 4113,4120 ----
--- 4114,4121 ----
misc.mo:Expected error in mat apropos: "apropos: 3 is not a symbol or string".
misc.mo:Expected error in mat apropos: "apropos: (hit me) is not a symbol or string".
misc.mo:Expected error in mat apropos: "apropos-list: b is not an environment".
@ -3897,7 +3897,7 @@
misc.mo:Expected error in mat apropos: "variable $apropos-unbound2 is not bound".
misc.mo:Expected error in mat simplify-if: "textual-port?: a is not a port".
***************
*** 4129,4144 ****
*** 4130,4145 ****
misc.mo:Expected error in mat pariah: "invalid syntax (pariah)".
misc.mo:Expected error in mat pariah: "invalid syntax (pariah . 17)".
misc.mo:Expected error in mat procedure-arity-mask: "procedure-arity-mask: 17 is not a procedure".
@ -3914,7 +3914,7 @@
misc.mo:Expected error in mat wrapper-procedure: "make-arity-wrapper-procedure: 1 is not a procedure".
misc.mo:Expected error in mat wrapper-procedure: "make-arity-wrapper-procedure: not-a-procedure is not a procedure".
misc.mo:Expected error in mat wrapper-procedure: "make-arity-wrapper-procedure: not-an-exact-integer is not an arity mask".
--- 4129,4144 ----
--- 4130,4145 ----
misc.mo:Expected error in mat pariah: "invalid syntax (pariah)".
misc.mo:Expected error in mat pariah: "invalid syntax (pariah . 17)".
misc.mo:Expected error in mat procedure-arity-mask: "procedure-arity-mask: 17 is not a procedure".
@ -3932,7 +3932,7 @@
misc.mo:Expected error in mat wrapper-procedure: "make-arity-wrapper-procedure: not-a-procedure is not a procedure".
misc.mo:Expected error in mat wrapper-procedure: "make-arity-wrapper-procedure: not-an-exact-integer is not an arity mask".
***************
*** 4148,4179 ****
*** 4149,4180 ****
misc.mo:Expected error in mat wrapper-procedure: "wrapper-procedure-data: 1 is not a wrapper procedure".
misc.mo:Expected error in mat wrapper-procedure: "wrapper-procedure-data: #<procedure> is not a wrapper procedure".
misc.mo:Expected error in mat wrapper-procedure: "wrapper-procedure-data: #<procedure> is not a wrapper procedure".
@ -3965,7 +3965,7 @@
cp0.mo:Expected error in mat cp0-regression: "attempt to reference undefined variable x".
cp0.mo:Expected error in mat cp0-regression: "incorrect argument count in call (g)".
cp0.mo:Expected error in mat cp0-regression: "incorrect argument count in call (cont0 (quote x))".
--- 4148,4179 ----
--- 4149,4180 ----
misc.mo:Expected error in mat wrapper-procedure: "wrapper-procedure-data: 1 is not a wrapper procedure".
misc.mo:Expected error in mat wrapper-procedure: "wrapper-procedure-data: #<procedure> is not a wrapper procedure".
misc.mo:Expected error in mat wrapper-procedure: "wrapper-procedure-data: #<procedure> is not a wrapper procedure".
@ -3999,7 +3999,7 @@
cp0.mo:Expected error in mat cp0-regression: "incorrect argument count in call (g)".
cp0.mo:Expected error in mat cp0-regression: "incorrect argument count in call (cont0 (quote x))".
***************
*** 4187,4195 ****
*** 4188,4196 ****
cp0.mo:Expected error in mat cp0-regression: "condition: #f is not a condition".
cp0.mo:Expected error in mat cp0-regression: "apply: 0 is not a proper list".
cp0.mo:Expected error in mat cp0-regression: "apply: 2 is not a proper list".
@ -4009,7 +4009,7 @@
cp0.mo:Expected error in mat expand-output: "expand-output: #t is not a textual output port or #f".
cp0.mo:Expected error in mat expand-output: "expand-output: #<binary output port bytevector> is not a textual output port or #f".
cp0.mo:Expected error in mat expand/optimize-output: "expand/optimize-output: #t is not a textual output port or #f".
--- 4187,4195 ----
--- 4188,4196 ----
cp0.mo:Expected error in mat cp0-regression: "condition: #f is not a condition".
cp0.mo:Expected error in mat cp0-regression: "apply: 0 is not a proper list".
cp0.mo:Expected error in mat cp0-regression: "apply: 2 is not a proper list".
@ -4020,20 +4020,20 @@
cp0.mo:Expected error in mat expand-output: "expand-output: #<binary output port bytevector> is not a textual output port or #f".
cp0.mo:Expected error in mat expand/optimize-output: "expand/optimize-output: #t is not a textual output port or #f".
***************
*** 4253,4261 ****
5_6.mo:Expected error in mat list->fxvector: "list->fxvector: (1 2 . 3) is not a proper list".
5_6.mo:Expected error in mat list->fxvector: "list->fxvector: (1 2 3 2 3 2 ...) is circular".
5_6.mo:Expected error in mat fxvector->list: "fxvector->list: (a b c) is not an fxvector".
*** 4289,4297 ****
5_6.mo:Expected error in mat list->flvector: "list->flvector: (1.0 2.0 . 3.0) is not a proper list".
5_6.mo:Expected error in mat list->flvector: "list->flvector: (1.0 2.0 3.0 2.0 3.0 2.0 ...) is circular".
5_6.mo:Expected error in mat flvector->list: "flvector->list: (a b c) is not an flvector".
! 5_6.mo:Expected error in mat vector-map: "incorrect argument count in call (vector-map)".
! 5_6.mo:Expected error in mat vector-map: "incorrect argument count in call (vector-map (quote #()))".
! 5_6.mo:Expected error in mat vector-map: "incorrect argument count in call (vector-map +)".
5_6.mo:Expected error in mat vector-map: "vector-map: #() is not a procedure".
5_6.mo:Expected error in mat vector-map: "vector-map: #() is not a procedure".
5_6.mo:Expected error in mat vector-map: "vector-map: #() is not a procedure".
--- 4253,4261 ----
5_6.mo:Expected error in mat list->fxvector: "list->fxvector: (1 2 . 3) is not a proper list".
5_6.mo:Expected error in mat list->fxvector: "list->fxvector: (1 2 3 2 3 2 ...) is circular".
5_6.mo:Expected error in mat fxvector->list: "fxvector->list: (a b c) is not an fxvector".
--- 4289,4297 ----
5_6.mo:Expected error in mat list->flvector: "list->flvector: (1.0 2.0 . 3.0) is not a proper list".
5_6.mo:Expected error in mat list->flvector: "list->flvector: (1.0 2.0 3.0 2.0 3.0 2.0 ...) is circular".
5_6.mo:Expected error in mat flvector->list: "flvector->list: (a b c) is not an flvector".
! 5_6.mo:Expected error in mat vector-map: "incorrect number of arguments 0 to #<procedure vector-map>".
! 5_6.mo:Expected error in mat vector-map: "incorrect number of arguments 1 to #<procedure vector-map>".
! 5_6.mo:Expected error in mat vector-map: "incorrect number of arguments 1 to #<procedure vector-map>".
@ -4041,7 +4041,7 @@
5_6.mo:Expected error in mat vector-map: "vector-map: #() is not a procedure".
5_6.mo:Expected error in mat vector-map: "vector-map: #() is not a procedure".
***************
*** 4270,4278 ****
*** 4306,4314 ****
5_6.mo:Expected error in mat vector-map: "vector-map: lengths of input vectors #() and #(x) differ".
5_6.mo:Expected error in mat vector-map: "vector-map: lengths of input vectors #(y) and #() differ".
5_6.mo:Expected error in mat vector-map: "vector-map: lengths of input vectors #(y) and #() differ".
@ -4051,7 +4051,7 @@
5_6.mo:Expected error in mat vector-for-each: "vector-for-each: #() is not a procedure".
5_6.mo:Expected error in mat vector-for-each: "vector-for-each: #() is not a procedure".
5_6.mo:Expected error in mat vector-for-each: "vector-for-each: #() is not a procedure".
--- 4270,4278 ----
--- 4306,4314 ----
5_6.mo:Expected error in mat vector-map: "vector-map: lengths of input vectors #() and #(x) differ".
5_6.mo:Expected error in mat vector-map: "vector-map: lengths of input vectors #(y) and #() differ".
5_6.mo:Expected error in mat vector-map: "vector-map: lengths of input vectors #(y) and #() differ".
@ -4062,7 +4062,7 @@
5_6.mo:Expected error in mat vector-for-each: "vector-for-each: #() is not a procedure".
5_6.mo:Expected error in mat vector-for-each: "vector-for-each: #() is not a procedure".
***************
*** 4287,4304 ****
*** 4323,4340 ****
5_6.mo:Expected error in mat vector-for-each: "vector-for-each: lengths of input vectors #() and #(x) differ".
5_6.mo:Expected error in mat vector-for-each: "vector-for-each: lengths of input vectors #(y) and #() differ".
5_6.mo:Expected error in mat vector-for-each: "vector-for-each: lengths of input vectors #(y) and #() differ".
@ -4081,7 +4081,7 @@
5_6.mo:Expected error in mat vector-sort!: "vector-sort!: 3 is not a mutable vector".
5_6.mo:Expected error in mat vector-sort!: "vector-sort!: (1 2 3) is not a mutable vector".
5_6.mo:Expected error in mat vector-sort!: "vector-sort!: #(a b c) is not a procedure".
--- 4287,4304 ----
--- 4323,4340 ----
5_6.mo:Expected error in mat vector-for-each: "vector-for-each: lengths of input vectors #() and #(x) differ".
5_6.mo:Expected error in mat vector-for-each: "vector-for-each: lengths of input vectors #(y) and #() differ".
5_6.mo:Expected error in mat vector-for-each: "vector-for-each: lengths of input vectors #(y) and #() differ".
@ -4101,20 +4101,20 @@
5_6.mo:Expected error in mat vector-sort!: "vector-sort!: (1 2 3) is not a mutable vector".
5_6.mo:Expected error in mat vector-sort!: "vector-sort!: #(a b c) is not a procedure".
***************
*** 4309,4317 ****
*** 4343,4351 ****
5_6.mo:Expected error in mat vector->immutable-vector: "vector-set-fixnum!: #(1 2 3) is not a mutable vector".
5_6.mo:Expected error in mat vector->immutable-vector: "vector-fill!: #(1 2 3) is not a mutable vector".
5_6.mo:Expected error in mat vector->immutable-vector: "vector-sort!: #(1 2 3) is not a mutable vector".
5_6.mo:Expected error in mat fxvector->immutable-fxvector: "fxvector-set!: #vfx(1 2 3) is not a mutable fxvector".
5_6.mo:Expected error in mat fxvector->immutable-fxvector: "fxvector-fill!: #vfx(1 2 3) is not a mutable fxvector".
! 5_6.mo:Expected error in mat vector-cas!: "incorrect argument count in call (vector-cas! vec1)".
! 5_6.mo:Expected error in mat vector-cas!: "incorrect argument count in call (vector-cas! vec1 1)".
! 5_6.mo:Expected error in mat vector-cas!: "incorrect argument count in call (vector-cas! vec1 1 2)".
5_6.mo:Expected error in mat vector-cas!: "vector-cas!: 1 is not a mutable vector".
5_6.mo:Expected error in mat vector-cas!: "vector-cas!: #(4 5 3) is not a mutable vector".
5_6.mo:Expected error in mat vector-cas!: "vector-cas!: #(4 5 3) is not a valid index for #(4 5 3)".
--- 4309,4317 ----
--- 4343,4351 ----
5_6.mo:Expected error in mat vector->immutable-vector: "vector-set-fixnum!: #(1 2 3) is not a mutable vector".
5_6.mo:Expected error in mat vector->immutable-vector: "vector-fill!: #(1 2 3) is not a mutable vector".
5_6.mo:Expected error in mat vector->immutable-vector: "vector-sort!: #(1 2 3) is not a mutable vector".
5_6.mo:Expected error in mat fxvector->immutable-fxvector: "fxvector-set!: #vfx(1 2 3) is not a mutable fxvector".
5_6.mo:Expected error in mat fxvector->immutable-fxvector: "fxvector-fill!: #vfx(1 2 3) is not a mutable fxvector".
! 5_6.mo:Expected error in mat vector-cas!: "incorrect number of arguments 1 to #<procedure vector-cas!>".
! 5_6.mo:Expected error in mat vector-cas!: "incorrect number of arguments 2 to #<procedure vector-cas!>".
! 5_6.mo:Expected error in mat vector-cas!: "incorrect number of arguments 3 to #<procedure vector-cas!>".
@ -4122,7 +4122,7 @@
5_6.mo:Expected error in mat vector-cas!: "vector-cas!: #(4 5 3) is not a mutable vector".
5_6.mo:Expected error in mat vector-cas!: "vector-cas!: #(4 5 3) is not a valid index for #(4 5 3)".
***************
*** 4368,4375 ****
*** 4402,4409 ****
5_7.mo:Expected error in mat putprop-getprop: "getprop: 3 is not a symbol".
5_7.mo:Expected error in mat putprop-getprop: "putprop: "hi" is not a symbol".
5_7.mo:Expected error in mat putprop-getprop: "property-list: (a b c) is not a symbol".
@ -4131,7 +4131,7 @@
5_8.mo:Expected error in mat box-cas!: "box-cas!: 1 is not a mutable box".
5_8.mo:Expected error in mat box-cas!: "box-cas!: #&1 is not a mutable box".
6.mo:Expected error in mat port-operations: "open-input-file: failed for nonexistent file: no such file or directory".
--- 4368,4375 ----
--- 4402,4409 ----
5_7.mo:Expected error in mat putprop-getprop: "getprop: 3 is not a symbol".
5_7.mo:Expected error in mat putprop-getprop: "putprop: "hi" is not a symbol".
5_7.mo:Expected error in mat putprop-getprop: "property-list: (a b c) is not a symbol".
@ -4141,7 +4141,7 @@
5_8.mo:Expected error in mat box-cas!: "box-cas!: #&1 is not a mutable box".
6.mo:Expected error in mat port-operations: "open-input-file: failed for nonexistent file: no such file or directory".
***************
*** 4407,4428 ****
*** 4441,4462 ****
6.mo:Expected error in mat port-operations: "clear-output-port: not permitted on closed port #<output port testfile.ss>".
6.mo:Expected error in mat port-operations: "current-output-port: a is not a textual output port".
6.mo:Expected error in mat port-operations: "current-input-port: a is not a textual input port".
@ -4164,7 +4164,7 @@
6.mo:Expected error in mat port-operations1: "open-input-output-file: furball is not a string".
6.mo:Expected error in mat port-operations1: "open-input-output-file: failed for /probably/not/a/good/path: no such file or directory".
6.mo:Expected error in mat port-operations1: "open-input-output-file: invalid option compressed".
--- 4407,4428 ----
--- 4441,4462 ----
6.mo:Expected error in mat port-operations: "clear-output-port: not permitted on closed port #<output port testfile.ss>".
6.mo:Expected error in mat port-operations: "current-output-port: a is not a textual output port".
6.mo:Expected error in mat port-operations: "current-input-port: a is not a textual input port".
@ -4188,7 +4188,7 @@
6.mo:Expected error in mat port-operations1: "open-input-output-file: failed for /probably/not/a/good/path: no such file or directory".
6.mo:Expected error in mat port-operations1: "open-input-output-file: invalid option compressed".
***************
*** 4431,4437 ****
*** 4465,4471 ****
6.mo:Expected error in mat port-operations1: "truncate-file: all-the-way is not a valid length".
6.mo:Expected error in mat port-operations1: "truncate-file: #<input port testfile.ss> is not an output port".
6.mo:Expected error in mat port-operations1: "truncate-file: animal-crackers is not an output port".
@ -4196,7 +4196,7 @@
6.mo:Expected error in mat port-operations1: "truncate-file: not permitted on closed port #<input/output port testfile.ss>".
6.mo:Expected error in mat port-operations1: "get-output-string: #<input port string> is not a string output port".
6.mo:Expected error in mat port-operations1: "get-output-string: #<output port testfile.ss> is not a string output port".
--- 4431,4437 ----
--- 4465,4471 ----
6.mo:Expected error in mat port-operations1: "truncate-file: all-the-way is not a valid length".
6.mo:Expected error in mat port-operations1: "truncate-file: #<input port testfile.ss> is not an output port".
6.mo:Expected error in mat port-operations1: "truncate-file: animal-crackers is not an output port".
@ -4205,7 +4205,7 @@
6.mo:Expected error in mat port-operations1: "get-output-string: #<input port string> is not a string output port".
6.mo:Expected error in mat port-operations1: "get-output-string: #<output port testfile.ss> is not a string output port".
***************
*** 4448,4455 ****
*** 4482,4489 ****
6.mo:Expected error in mat string-port-file-position: "file-position: -1 is not a valid position".
6.mo:Expected error in mat fresh-line: "fresh-line: 3 is not a textual output port".
6.mo:Expected error in mat fresh-line: "fresh-line: #<input port string> is not a textual output port".
@ -4214,7 +4214,7 @@
6.mo:Expected error in mat pretty-print: "pretty-format: 3 is not a symbol".
6.mo:Expected error in mat pretty-print: "pretty-format: invalid format (bad 0 ... ... 0 format)".
6.mo:Expected error in mat fasl: "separate-eval: Warning in fasl-write: fasl file content is compressed internally; compressing the file (#<binary output port testfile.ss>) is redundant and can slow fasl writing and reading significantly
--- 4448,4455 ----
--- 4482,4489 ----
6.mo:Expected error in mat string-port-file-position: "file-position: -1 is not a valid position".
6.mo:Expected error in mat fresh-line: "fresh-line: 3 is not a textual output port".
6.mo:Expected error in mat fresh-line: "fresh-line: #<input port string> is not a textual output port".
@ -4224,7 +4224,7 @@
6.mo:Expected error in mat pretty-print: "pretty-format: invalid format (bad 0 ... ... 0 format)".
6.mo:Expected error in mat fasl: "separate-eval: Warning in fasl-write: fasl file content is compressed internally; compressing the file (#<binary output port testfile.ss>) is redundant and can slow fasl writing and reading significantly
***************
*** 6939,6970 ****
*** 6973,7004 ****
io.mo:Expected error in mat port-operations: "put-u8: not permitted on closed port #<binary output port testfile.ss>".
io.mo:Expected error in mat port-operations: "put-bytevector: not permitted on closed port #<binary output port testfile.ss>".
io.mo:Expected error in mat port-operations: "flush-output-port: not permitted on closed port #<binary output port testfile.ss>".
@ -4257,7 +4257,7 @@
io.mo:Expected error in mat port-operations1: "open-file-input/output-port: failed for /probably/not/a/good/path: no such file or directory".
io.mo:Expected error in mat port-operations1: "invalid file option uncompressed".
io.mo:Expected error in mat port-operations1: "invalid file option truncate".
--- 6939,6970 ----
--- 6973,7004 ----
io.mo:Expected error in mat port-operations: "put-u8: not permitted on closed port #<binary output port testfile.ss>".
io.mo:Expected error in mat port-operations: "put-bytevector: not permitted on closed port #<binary output port testfile.ss>".
io.mo:Expected error in mat port-operations: "flush-output-port: not permitted on closed port #<binary output port testfile.ss>".
@ -4291,7 +4291,7 @@
io.mo:Expected error in mat port-operations1: "invalid file option uncompressed".
io.mo:Expected error in mat port-operations1: "invalid file option truncate".
***************
*** 6975,6981 ****
*** 7009,7015 ****
io.mo:Expected error in mat port-operations1: "set-port-length!: all-the-way is not a valid length".
io.mo:Expected error in mat port-operations1: "truncate-port: #<binary input port testfile.ss> is not an output port".
io.mo:Expected error in mat port-operations1: "truncate-port: animal-crackers is not an output port".
@ -4299,7 +4299,7 @@
io.mo:Expected error in mat port-operations1: "truncate-port: not permitted on closed port #<binary input/output port testfile.ss>".
io.mo:Expected error in mat port-operations3: "file-port?: "not a port" is not a port".
io.mo:Expected error in mat port-operations3: "port-file-descriptor: oops is not a port".
--- 6975,6981 ----
--- 7009,7015 ----
io.mo:Expected error in mat port-operations1: "set-port-length!: all-the-way is not a valid length".
io.mo:Expected error in mat port-operations1: "truncate-port: #<binary input port testfile.ss> is not an output port".
io.mo:Expected error in mat port-operations1: "truncate-port: animal-crackers is not an output port".
@ -4308,7 +4308,7 @@
io.mo:Expected error in mat port-operations3: "file-port?: "not a port" is not a port".
io.mo:Expected error in mat port-operations3: "port-file-descriptor: oops is not a port".
***************
*** 7158,7170 ****
*** 7192,7204 ****
io.mo:Expected error in mat low-level-port-operations: "set-binary-port-output-size!: #vu8(1 2 3) is not a valid size for #<binary output port bytevector>".
io.mo:Expected error in mat low-level-port-operations: "set-binary-port-output-size!: -1 is not a valid size for #<binary output port bytevector>".
io.mo:Expected error in mat low-level-port-operations: "set-binary-port-output-size!: 6 is not a valid size for #<binary output port bytevector>".
@ -4322,7 +4322,7 @@
io.mo:Expected error in mat custom-port-buffer-size: "custom-port-buffer-size: shoe is not a positive fixnum".
io.mo:Expected error in mat custom-port-buffer-size: "custom-port-buffer-size: 0 is not a positive fixnum".
io.mo:Expected error in mat custom-port-buffer-size: "custom-port-buffer-size: -15 is not a positive fixnum".
--- 7158,7170 ----
--- 7192,7204 ----
io.mo:Expected error in mat low-level-port-operations: "set-binary-port-output-size!: #vu8(1 2 3) is not a valid size for #<binary output port bytevector>".
io.mo:Expected error in mat low-level-port-operations: "set-binary-port-output-size!: -1 is not a valid size for #<binary output port bytevector>".
io.mo:Expected error in mat low-level-port-operations: "set-binary-port-output-size!: 6 is not a valid size for #<binary output port bytevector>".
@ -4337,7 +4337,7 @@
io.mo:Expected error in mat custom-port-buffer-size: "custom-port-buffer-size: 0 is not a positive fixnum".
io.mo:Expected error in mat custom-port-buffer-size: "custom-port-buffer-size: -15 is not a positive fixnum".
***************
*** 7190,7205 ****
*** 7224,7239 ****
io.mo:Expected error in mat compression: "port-file-compressed!: cannot compress input/output port #<binary input/output port testfile.ss>".
io.mo:Expected error in mat compression: "port-file-compressed!: #<output port string> is not a file port".
io.mo:Expected error in mat compression: "port-file-compressed!: cannot compress input/output port #<binary input/output port testfile.ss>".
@ -4354,7 +4354,7 @@
io.mo:Expected error in mat custom-binary-ports: "unget-u8: cannot unget 255 on #<binary input port foo>".
io.mo:Expected error in mat custom-binary-ports: "put-u8: #<binary input port foo> is not a binary output port".
io.mo:Expected error in mat custom-binary-ports: "port-length: #<binary input port foo> does not support operation".
--- 7190,7205 ----
--- 7224,7239 ----
io.mo:Expected error in mat compression: "port-file-compressed!: cannot compress input/output port #<binary input/output port testfile.ss>".
io.mo:Expected error in mat compression: "port-file-compressed!: #<output port string> is not a file port".
io.mo:Expected error in mat compression: "port-file-compressed!: cannot compress input/output port #<binary input/output port testfile.ss>".
@ -4372,7 +4372,7 @@
io.mo:Expected error in mat custom-binary-ports: "put-u8: #<binary input port foo> is not a binary output port".
io.mo:Expected error in mat custom-binary-ports: "port-length: #<binary input port foo> does not support operation".
***************
*** 7271,7286 ****
*** 7305,7320 ****
io.mo:Expected error in mat current-ports: "console-output-port: #<input port string> is not a textual output port".
io.mo:Expected error in mat current-ports: "console-error-port: #<input port string> is not a textual output port".
io.mo:Expected error in mat current-transcoder: "current-transcoder: #<output port string> is not a transcoder".
@ -4389,7 +4389,7 @@
io.mo:Expected error in mat utf-16-codec: "utf-16-codec: invalid endianness #f".
io.mo:Expected error in mat to-fold-or-not-to-fold: "get-datum: invalid character name #\newLine at char 0 of #<input port string>".
io.mo:Expected error in mat to-fold-or-not-to-fold: "get-datum: invalid character name #\newLine at char 15 of #<input port string>".
--- 7271,7286 ----
--- 7305,7320 ----
io.mo:Expected error in mat current-ports: "console-output-port: #<input port string> is not a textual output port".
io.mo:Expected error in mat current-ports: "console-error-port: #<input port string> is not a textual output port".
io.mo:Expected error in mat current-transcoder: "current-transcoder: #<output port string> is not a transcoder".
@ -4407,7 +4407,7 @@
io.mo:Expected error in mat to-fold-or-not-to-fold: "get-datum: invalid character name #\newLine at char 0 of #<input port string>".
io.mo:Expected error in mat to-fold-or-not-to-fold: "get-datum: invalid character name #\newLine at char 15 of #<input port string>".
***************
*** 7452,7458 ****
*** 7486,7492 ****
7.mo:Expected error in mat eval-when: "invalid syntax visit-x".
7.mo:Expected error in mat eval-when: "invalid syntax revisit-x".
7.mo:Expected error in mat compile-whole-program: "compile-whole-program: failed for nosuchfile.wpo: no such file or directory".
@ -4415,7 +4415,7 @@
7.mo:Expected error in mat compile-whole-program: "separate-eval: Exception in environment: attempt to import invisible library (testfile-wpo-lib)
7.mo:Expected error in mat compile-whole-program: "separate-eval: Exception: library (testfile-wpo-a4) not found
7.mo:Expected error in mat compile-whole-program: "separate-eval: Exception: library (testfile-wpo-c4) not found
--- 7452,7458 ----
--- 7486,7492 ----
7.mo:Expected error in mat eval-when: "invalid syntax visit-x".
7.mo:Expected error in mat eval-when: "invalid syntax revisit-x".
7.mo:Expected error in mat compile-whole-program: "compile-whole-program: failed for nosuchfile.wpo: no such file or directory".
@ -4424,7 +4424,7 @@
7.mo:Expected error in mat compile-whole-program: "separate-eval: Exception: library (testfile-wpo-a4) not found
7.mo:Expected error in mat compile-whole-program: "separate-eval: Exception: library (testfile-wpo-c4) not found
***************
*** 7518,7544 ****
*** 7552,7578 ****
7.mo:Expected error in mat concatenate-object-files: "separate-eval: Exception in verify-loadability: cannot find object file for library (testfile-cof1A)
7.mo:Expected error in mat concatenate-object-files: "separate-eval: Exception in verify-loadability: cannot find object file for library (testfile-cof1B)
7.mo:Expected error in mat top-level-value-functions: "top-level-bound?: "hello" is not a symbol".
@ -4452,7 +4452,7 @@
7.mo:Expected error in mat top-level-value-functions: "define-top-level-value: hello is not an environment".
7.mo:Expected error in mat top-level-value-functions: "define-top-level-value: #<environment *scheme*> is not a symbol".
7.mo:Expected error in mat top-level-value-functions: "variable i-am-not-bound-i-hope is not bound".
--- 7518,7544 ----
--- 7552,7578 ----
7.mo:Expected error in mat concatenate-object-files: "separate-eval: Exception in verify-loadability: cannot find object file for library (testfile-cof1A)
7.mo:Expected error in mat concatenate-object-files: "separate-eval: Exception in verify-loadability: cannot find object file for library (testfile-cof1B)
7.mo:Expected error in mat top-level-value-functions: "top-level-bound?: "hello" is not a symbol".
@ -4481,7 +4481,7 @@
7.mo:Expected error in mat top-level-value-functions: "define-top-level-value: #<environment *scheme*> is not a symbol".
7.mo:Expected error in mat top-level-value-functions: "variable i-am-not-bound-i-hope is not bound".
***************
*** 7853,7859 ****
*** 7899,7905 ****
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 1 to #<procedure>".
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 1 to #<procedure>".
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 3 to #<procedure>".
@ -4489,7 +4489,7 @@
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 4 to #<procedure constructor>".
record.mo:Expected error in mat r6rs-records-procedural: "make-record-constructor-descriptor: record constructor descriptor #<record constructor descriptor> is not for parent of record type #<record type grand-child>".
record.mo:Expected error in mat r6rs-records-procedural: "make-record-type-descriptor: cannot extend sealed record type #<record type bar>".
--- 7853,7859 ----
--- 7899,7905 ----
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 1 to #<procedure>".
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 1 to #<procedure>".
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 3 to #<procedure>".
@ -4498,7 +4498,7 @@
record.mo:Expected error in mat r6rs-records-procedural: "make-record-constructor-descriptor: record constructor descriptor #<record constructor descriptor> is not for parent of record type #<record type grand-child>".
record.mo:Expected error in mat r6rs-records-procedural: "make-record-type-descriptor: cannot extend sealed record type #<record type bar>".
***************
*** 7943,8057 ****
*** 7989,8103 ****
hash.mo:Expected error in mat old-hash-table: "hash-table-for-each: ((a . b)) is not an eq hashtable".
hash.mo:Expected error in mat old-hash-table: "incorrect number of arguments 2 to #<procedure>".
hash.mo:Expected error in mat old-hash-table: "incorrect number of arguments 2 to #<procedure>".
@ -4614,7 +4614,7 @@
hash.mo:Expected error in mat hashtable-arguments: "hashtable-ephemeron?: (hash . table) is not a hashtable".
hash.mo:Expected error in mat hash-return-value: "hashtable-ref: invalid hash-function #<procedure> return value "oops" for any".
hash.mo:Expected error in mat hash-return-value: "hashtable-ref: invalid hash-function #<procedure> return value 3.5 for any".
--- 7943,8057 ----
--- 7989,8103 ----
hash.mo:Expected error in mat old-hash-table: "hash-table-for-each: ((a . b)) is not an eq hashtable".
hash.mo:Expected error in mat old-hash-table: "incorrect number of arguments 2 to #<procedure>".
hash.mo:Expected error in mat old-hash-table: "incorrect number of arguments 2 to #<procedure>".
@ -4731,7 +4731,7 @@
hash.mo:Expected error in mat hash-return-value: "hashtable-ref: invalid hash-function #<procedure> return value "oops" for any".
hash.mo:Expected error in mat hash-return-value: "hashtable-ref: invalid hash-function #<procedure> return value 3.5 for any".
***************
*** 8074,8196 ****
*** 8120,8242 ****
hash.mo:Expected error in mat hash-return-value: "hashtable-delete!: invalid hash-function #<procedure> return value "oops" for any".
hash.mo:Expected error in mat hash-return-value: "hashtable-delete!: invalid hash-function #<procedure> return value 3.5 for any".
hash.mo:Expected error in mat hash-return-value: "hashtable-delete!: invalid hash-function #<procedure> return value 1+2i for any".
@ -4855,7 +4855,7 @@
hash.mo:Expected error in mat eqv-hashtable-arguments: "make-ephemeron-eqv-hashtable: invalid size argument -1".
hash.mo:Expected error in mat eqv-hashtable-arguments: "make-ephemeron-eqv-hashtable: invalid size argument #t".
hash.mo:Expected error in mat eqv-hashtable-arguments: "make-ephemeron-eqv-hashtable: invalid size argument #f".
--- 8074,8196 ----
--- 8120,8242 ----
hash.mo:Expected error in mat hash-return-value: "hashtable-delete!: invalid hash-function #<procedure> return value "oops" for any".
hash.mo:Expected error in mat hash-return-value: "hashtable-delete!: invalid hash-function #<procedure> return value 3.5 for any".
hash.mo:Expected error in mat hash-return-value: "hashtable-delete!: invalid hash-function #<procedure> return value 1+2i for any".
@ -4980,7 +4980,7 @@
hash.mo:Expected error in mat eqv-hashtable-arguments: "make-ephemeron-eqv-hashtable: invalid size argument #t".
hash.mo:Expected error in mat eqv-hashtable-arguments: "make-ephemeron-eqv-hashtable: invalid size argument #f".
***************
*** 8198,8213 ****
*** 8244,8259 ****
hash.mo:Expected error in mat generic-hashtable: "hashtable-delete!: #<hashtable> is not mutable".
hash.mo:Expected error in mat generic-hashtable: "hashtable-update!: #<hashtable> is not mutable".
hash.mo:Expected error in mat generic-hashtable: "hashtable-update!: #<hashtable> is not mutable".
@ -4997,7 +4997,7 @@
hash.mo:Expected error in mat hash-functions: "string-ci-hash: hello is not a string".
hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #<eqv hashtable>".
hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #<hashtable>".
--- 8198,8213 ----
--- 8244,8259 ----
hash.mo:Expected error in mat generic-hashtable: "hashtable-delete!: #<hashtable> is not mutable".
hash.mo:Expected error in mat generic-hashtable: "hashtable-update!: #<hashtable> is not mutable".
hash.mo:Expected error in mat generic-hashtable: "hashtable-update!: #<hashtable> is not mutable".
@ -5015,7 +5015,7 @@
hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #<eqv hashtable>".
hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #<hashtable>".
***************
*** 8323,8330 ****
*** 8369,8376 ****
8.mo:Expected error in mat with-syntax: "invalid syntax a".
8.mo:Expected error in mat with-syntax: "duplicate pattern variable x in (x x)".
8.mo:Expected error in mat with-syntax: "duplicate pattern variable x in (x x)".
@ -5024,7 +5024,7 @@
8.mo:Expected error in mat generate-temporaries: "generate-temporaries: improper list structure (a b . c)".
8.mo:Expected error in mat generate-temporaries: "generate-temporaries: cyclic list structure (a b c b c b ...)".
8.mo:Expected error in mat syntax->list: "syntax->list: invalid argument #<syntax a>".
--- 8323,8330 ----
--- 8369,8376 ----
8.mo:Expected error in mat with-syntax: "invalid syntax a".
8.mo:Expected error in mat with-syntax: "duplicate pattern variable x in (x x)".
8.mo:Expected error in mat with-syntax: "duplicate pattern variable x in (x x)".
@ -5034,7 +5034,7 @@
8.mo:Expected error in mat generate-temporaries: "generate-temporaries: cyclic list structure (a b c b c b ...)".
8.mo:Expected error in mat syntax->list: "syntax->list: invalid argument #<syntax a>".
***************
*** 8941,8956 ****
*** 8987,9002 ****
8.mo:Expected error in mat rnrs-eval: "attempt to assign unbound identifier foo".
8.mo:Expected error in mat rnrs-eval: "invalid definition in immutable environment (define cons (quote #<procedure vector>))".
8.mo:Expected error in mat top-level-syntax-functions: "top-level-syntax: "hello" is not a symbol".
@ -5051,7 +5051,7 @@
8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: hello is not an environment".
8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: #<environment *scheme*> is not a symbol".
8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: cannot modify immutable environment #<environment *scheme*>".
--- 8941,8956 ----
--- 8987,9002 ----
8.mo:Expected error in mat rnrs-eval: "attempt to assign unbound identifier foo".
8.mo:Expected error in mat rnrs-eval: "invalid definition in immutable environment (define cons (quote #<procedure vector>))".
8.mo:Expected error in mat top-level-syntax-functions: "top-level-syntax: "hello" is not a symbol".
@ -5069,7 +5069,7 @@
8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: #<environment *scheme*> is not a symbol".
8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: cannot modify immutable environment #<environment *scheme*>".
***************
*** 9047,9069 ****
*** 9093,9115 ****
fx.mo:Expected error in mat fx=?: "fx=?: (a) is not a fixnum".
fx.mo:Expected error in mat fx=?: "fx=?: <int> is not a fixnum".
fx.mo:Expected error in mat fx=?: "fx=?: <-int> is not a fixnum".
@ -5093,7 +5093,7 @@
fx.mo:Expected error in mat $fxu<: "incorrect number of arguments 1 to #<procedure $fxu<>".
fx.mo:Expected error in mat $fxu<: "incorrect number of arguments 3 to #<procedure $fxu<>".
fx.mo:Expected error in mat $fxu<: "$fxu<: <-int> is not a fixnum".
--- 9047,9069 ----
--- 9093,9115 ----
fx.mo:Expected error in mat fx=?: "fx=?: (a) is not a fixnum".
fx.mo:Expected error in mat fx=?: "fx=?: <int> is not a fixnum".
fx.mo:Expected error in mat fx=?: "fx=?: <-int> is not a fixnum".
@ -5118,7 +5118,7 @@
fx.mo:Expected error in mat $fxu<: "incorrect number of arguments 3 to #<procedure $fxu<>".
fx.mo:Expected error in mat $fxu<: "$fxu<: <-int> is not a fixnum".
***************
*** 9095,9107 ****
*** 9141,9153 ****
fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum".
fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum".
fx.mo:Expected error in mat fx*: "fx*: (a . b) is not a fixnum".
@ -5132,7 +5132,7 @@
fx.mo:Expected error in mat r6rs:fx*: "fx*: <int> is not a fixnum".
fx.mo:Expected error in mat r6rs:fx*: "fx*: <-int> is not a fixnum".
fx.mo:Expected error in mat r6rs:fx*: "fx*: #f is not a fixnum".
--- 9095,9107 ----
--- 9141,9153 ----
fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum".
fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum".
fx.mo:Expected error in mat fx*: "fx*: (a . b) is not a fixnum".
@ -5147,7 +5147,7 @@
fx.mo:Expected error in mat r6rs:fx*: "fx*: <-int> is not a fixnum".
fx.mo:Expected error in mat r6rs:fx*: "fx*: #f is not a fixnum".
***************
*** 9151,9163 ****
*** 9197,9209 ****
fx.mo:Expected error in mat fx1+: "fx1+: <-int> is not a fixnum".
fx.mo:Expected error in mat fx1+: "fx1+: <int> is not a fixnum".
fx.mo:Expected error in mat fx1+: "fx1+: a is not a fixnum".
@ -5161,7 +5161,7 @@
fx.mo:Expected error in mat fxmax: "fxmax: a is not a fixnum".
fx.mo:Expected error in mat fxmax: "fxmax: <int> is not a fixnum".
fx.mo:Expected error in mat fxmax: "fxmax: <-int> is not a fixnum".
--- 9151,9163 ----
--- 9197,9209 ----
fx.mo:Expected error in mat fx1+: "fx1+: <-int> is not a fixnum".
fx.mo:Expected error in mat fx1+: "fx1+: <int> is not a fixnum".
fx.mo:Expected error in mat fx1+: "fx1+: a is not a fixnum".
@ -5176,7 +5176,7 @@
fx.mo:Expected error in mat fxmax: "fxmax: <int> is not a fixnum".
fx.mo:Expected error in mat fxmax: "fxmax: <-int> is not a fixnum".
***************
*** 9255,9264 ****
*** 9301,9310 ****
fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments <int> and 10".
fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments -4097 and <int>".
fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments <-int> and 1".
@ -5187,7 +5187,7 @@
fx.mo:Expected error in mat fxbit-field: "fxbit-field: 35.0 is not a fixnum".
fx.mo:Expected error in mat fxbit-field: "fxbit-field: 5.0 is not a valid start index".
fx.mo:Expected error in mat fxbit-field: "fxbit-field: 8.0 is not a valid end index".
--- 9255,9264 ----
--- 9301,9310 ----
fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments <int> and 10".
fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments -4097 and <int>".
fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments <-int> and 1".
@ -5199,7 +5199,7 @@
fx.mo:Expected error in mat fxbit-field: "fxbit-field: 5.0 is not a valid start index".
fx.mo:Expected error in mat fxbit-field: "fxbit-field: 8.0 is not a valid end index".
***************
*** 9272,9305 ****
*** 9318,9351 ****
fx.mo:Expected error in mat fxbit-field: "fxbit-field: <int> is not a valid end index".
fx.mo:Expected error in mat fxbit-field: "fxbit-field: <int> is not a valid start index".
fx.mo:Expected error in mat fxbit-field: "fxbit-field: <int> is not a valid end index".
@ -5234,7 +5234,7 @@
fx.mo:Expected error in mat fxif: "fxif: a is not a fixnum".
fx.mo:Expected error in mat fxif: "fxif: 3.4 is not a fixnum".
fx.mo:Expected error in mat fxif: "fxif: (a) is not a fixnum".
--- 9272,9305 ----
--- 9318,9351 ----
fx.mo:Expected error in mat fxbit-field: "fxbit-field: <int> is not a valid end index".
fx.mo:Expected error in mat fxbit-field: "fxbit-field: <int> is not a valid start index".
fx.mo:Expected error in mat fxbit-field: "fxbit-field: <int> is not a valid end index".
@ -5270,7 +5270,7 @@
fx.mo:Expected error in mat fxif: "fxif: 3.4 is not a fixnum".
fx.mo:Expected error in mat fxif: "fxif: (a) is not a fixnum".
***************
*** 9309,9352 ****
*** 9355,9398 ****
fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum".
fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum".
fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum".
@ -5315,7 +5315,7 @@
fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: 3.4 is not a fixnum".
fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: "3" is not a fixnum".
fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: <int> is not a fixnum".
--- 9309,9352 ----
--- 9355,9398 ----
fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum".
fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum".
fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum".
@ -5361,7 +5361,7 @@
fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: "3" is not a fixnum".
fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: <int> is not a fixnum".
***************
*** 9355,9365 ****
*** 9401,9411 ****
fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index -1".
fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index <int>".
fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index <int>".
@ -5373,7 +5373,7 @@
fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: "3" is not a fixnum".
fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: 3.4 is not a valid start index".
fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: 3/4 is not a valid end index".
--- 9355,9365 ----
--- 9401,9411 ----
fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index -1".
fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index <int>".
fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index <int>".
@ -5386,7 +5386,7 @@
fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: 3.4 is not a valid start index".
fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: 3/4 is not a valid end index".
***************
*** 9419,9428 ****
*** 9465,9474 ****
fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: (a) is not a fixnum".
fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: undefined for 0".
fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: undefined for 0".
@ -5397,7 +5397,7 @@
fx.mo:Expected error in mat fx+/carry: "fx+/carry: 1.0 is not a fixnum".
fx.mo:Expected error in mat fx+/carry: "fx+/carry: 2.0 is not a fixnum".
fx.mo:Expected error in mat fx+/carry: "fx+/carry: 3.0 is not a fixnum".
--- 9419,9428 ----
--- 9465,9474 ----
fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: (a) is not a fixnum".
fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: undefined for 0".
fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: undefined for 0".
@ -5409,7 +5409,7 @@
fx.mo:Expected error in mat fx+/carry: "fx+/carry: 2.0 is not a fixnum".
fx.mo:Expected error in mat fx+/carry: "fx+/carry: 3.0 is not a fixnum".
***************
*** 9438,9447 ****
*** 9484,9493 ****
fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum".
fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum".
fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum".
@ -5420,7 +5420,7 @@
fx.mo:Expected error in mat fx-/carry: "fx-/carry: 1.0 is not a fixnum".
fx.mo:Expected error in mat fx-/carry: "fx-/carry: 2.0 is not a fixnum".
fx.mo:Expected error in mat fx-/carry: "fx-/carry: 3.0 is not a fixnum".
--- 9438,9447 ----
--- 9484,9493 ----
fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum".
fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum".
fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum".
@ -5432,7 +5432,7 @@
fx.mo:Expected error in mat fx-/carry: "fx-/carry: 2.0 is not a fixnum".
fx.mo:Expected error in mat fx-/carry: "fx-/carry: 3.0 is not a fixnum".
***************
*** 9457,9466 ****
*** 9503,9512 ****
fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum".
fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum".
fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum".
@ -5443,7 +5443,7 @@
fx.mo:Expected error in mat fx*/carry: "fx*/carry: 1.0 is not a fixnum".
fx.mo:Expected error in mat fx*/carry: "fx*/carry: 2.0 is not a fixnum".
fx.mo:Expected error in mat fx*/carry: "fx*/carry: 3.0 is not a fixnum".
--- 9457,9466 ----
--- 9503,9512 ----
fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum".
fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum".
fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum".
@ -5455,7 +5455,7 @@
fx.mo:Expected error in mat fx*/carry: "fx*/carry: 2.0 is not a fixnum".
fx.mo:Expected error in mat fx*/carry: "fx*/carry: 3.0 is not a fixnum".
***************
*** 9476,9486 ****
*** 9522,9532 ****
fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum".
fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum".
fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum".
@ -5467,7 +5467,7 @@
fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: a is not a fixnum".
fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid start index 0.0".
fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index 2.0".
--- 9476,9486 ----
--- 9522,9532 ----
fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum".
fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum".
fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum".
@ -5480,7 +5480,7 @@
fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid start index 0.0".
fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index 2.0".
***************
*** 9503,9512 ****
*** 9549,9558 ****
fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index <int>".
fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index <int>".
fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: count 1 is greater than difference between end index 5 and start index 5".
@ -5491,7 +5491,7 @@
fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: a is not a fixnum".
fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid start index 0.0".
fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index 2.0".
--- 9503,9512 ----
--- 9549,9558 ----
fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index <int>".
fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index <int>".
fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: count 1 is greater than difference between end index 5 and start index 5".
@ -5503,7 +5503,7 @@
fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid start index 0.0".
fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index 2.0".
***************
*** 9522,9539 ****
*** 9568,9585 ****
fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index <int>".
fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index <-int>".
fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: start index 7 is greater than end index 5".
@ -5522,7 +5522,7 @@
fl.mo:Expected error in mat fl=: "fl=: (a) is not a flonum".
fl.mo:Expected error in mat fl=: "fl=: a is not a flonum".
fl.mo:Expected error in mat fl=: "fl=: a is not a flonum".
--- 9522,9539 ----
--- 9568,9585 ----
fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index <int>".
fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index <-int>".
fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: start index 7 is greater than end index 5".
@ -5542,7 +5542,7 @@
fl.mo:Expected error in mat fl=: "fl=: a is not a flonum".
fl.mo:Expected error in mat fl=: "fl=: a is not a flonum".
***************
*** 9541,9547 ****
*** 9587,9593 ****
fl.mo:Expected error in mat fl=: "fl=: 3 is not a flonum".
fl.mo:Expected error in mat fl=: "fl=: 7/2 is not a flonum".
fl.mo:Expected error in mat fl=: "fl=: 7/2 is not a flonum".
@ -5550,7 +5550,7 @@
fl.mo:Expected error in mat fl<: "fl<: (a) is not a flonum".
fl.mo:Expected error in mat fl<: "fl<: a is not a flonum".
fl.mo:Expected error in mat fl<: "fl<: a is not a flonum".
--- 9541,9547 ----
--- 9587,9593 ----
fl.mo:Expected error in mat fl=: "fl=: 3 is not a flonum".
fl.mo:Expected error in mat fl=: "fl=: 7/2 is not a flonum".
fl.mo:Expected error in mat fl=: "fl=: 7/2 is not a flonum".
@ -5559,7 +5559,7 @@
fl.mo:Expected error in mat fl<: "fl<: a is not a flonum".
fl.mo:Expected error in mat fl<: "fl<: a is not a flonum".
***************
*** 9549,9555 ****
*** 9595,9601 ****
fl.mo:Expected error in mat fl<: "fl<: 3 is not a flonum".
fl.mo:Expected error in mat fl<: "fl<: 7/2 is not a flonum".
fl.mo:Expected error in mat fl<: "fl<: 7/2 is not a flonum".
@ -5567,7 +5567,7 @@
fl.mo:Expected error in mat fl>: "fl>: (a) is not a flonum".
fl.mo:Expected error in mat fl>: "fl>: a is not a flonum".
fl.mo:Expected error in mat fl>: "fl>: a is not a flonum".
--- 9549,9555 ----
--- 9595,9601 ----
fl.mo:Expected error in mat fl<: "fl<: 3 is not a flonum".
fl.mo:Expected error in mat fl<: "fl<: 7/2 is not a flonum".
fl.mo:Expected error in mat fl<: "fl<: 7/2 is not a flonum".
@ -5576,7 +5576,7 @@
fl.mo:Expected error in mat fl>: "fl>: a is not a flonum".
fl.mo:Expected error in mat fl>: "fl>: a is not a flonum".
***************
*** 9557,9563 ****
*** 9603,9609 ****
fl.mo:Expected error in mat fl>: "fl>: 3 is not a flonum".
fl.mo:Expected error in mat fl>: "fl>: 7/2 is not a flonum".
fl.mo:Expected error in mat fl>: "fl>: 7/2 is not a flonum".
@ -5584,7 +5584,7 @@
fl.mo:Expected error in mat fl<=: "fl<=: (a) is not a flonum".
fl.mo:Expected error in mat fl<=: "fl<=: a is not a flonum".
fl.mo:Expected error in mat fl<=: "fl<=: a is not a flonum".
--- 9557,9563 ----
--- 9603,9609 ----
fl.mo:Expected error in mat fl>: "fl>: 3 is not a flonum".
fl.mo:Expected error in mat fl>: "fl>: 7/2 is not a flonum".
fl.mo:Expected error in mat fl>: "fl>: 7/2 is not a flonum".
@ -5593,7 +5593,7 @@
fl.mo:Expected error in mat fl<=: "fl<=: a is not a flonum".
fl.mo:Expected error in mat fl<=: "fl<=: a is not a flonum".
***************
*** 9565,9571 ****
*** 9611,9617 ****
fl.mo:Expected error in mat fl<=: "fl<=: 3 is not a flonum".
fl.mo:Expected error in mat fl<=: "fl<=: 7/2 is not a flonum".
fl.mo:Expected error in mat fl<=: "fl<=: 7/2 is not a flonum".
@ -5601,7 +5601,7 @@
fl.mo:Expected error in mat fl>=: "fl>=: (a) is not a flonum".
fl.mo:Expected error in mat fl>=: "fl>=: a is not a flonum".
fl.mo:Expected error in mat fl>=: "fl>=: a is not a flonum".
--- 9565,9571 ----
--- 9611,9617 ----
fl.mo:Expected error in mat fl<=: "fl<=: 3 is not a flonum".
fl.mo:Expected error in mat fl<=: "fl<=: 7/2 is not a flonum".
fl.mo:Expected error in mat fl<=: "fl<=: 7/2 is not a flonum".
@ -5610,7 +5610,7 @@
fl.mo:Expected error in mat fl>=: "fl>=: a is not a flonum".
fl.mo:Expected error in mat fl>=: "fl>=: a is not a flonum".
***************
*** 9573,9612 ****
*** 9619,9658 ****
fl.mo:Expected error in mat fl>=: "fl>=: 3 is not a flonum".
fl.mo:Expected error in mat fl>=: "fl>=: 7/2 is not a flonum".
fl.mo:Expected error in mat fl>=: "fl>=: 7/2 is not a flonum".
@ -5651,7 +5651,7 @@
fl.mo:Expected error in mat fl>=?: "fl>=?: a is not a flonum".
fl.mo:Expected error in mat fl>=?: "fl>=?: a is not a flonum".
fl.mo:Expected error in mat fl>=?: "fl>=?: 3 is not a flonum".
--- 9573,9612 ----
--- 9619,9658 ----
fl.mo:Expected error in mat fl>=: "fl>=: 3 is not a flonum".
fl.mo:Expected error in mat fl>=: "fl>=: 7/2 is not a flonum".
fl.mo:Expected error in mat fl>=: "fl>=: 7/2 is not a flonum".
@ -5693,7 +5693,7 @@
fl.mo:Expected error in mat fl>=?: "fl>=?: a is not a flonum".
fl.mo:Expected error in mat fl>=?: "fl>=?: 3 is not a flonum".
***************
*** 9616,9622 ****
*** 9662,9668 ****
fl.mo:Expected error in mat fl+: "fl+: (a . b) is not a flonum".
fl.mo:Expected error in mat fl+: "fl+: 1 is not a flonum".
fl.mo:Expected error in mat fl+: "fl+: 2/3 is not a flonum".
@ -5701,7 +5701,7 @@
fl.mo:Expected error in mat fl-: "fl-: (a . b) is not a flonum".
fl.mo:Expected error in mat fl-: "fl-: 1 is not a flonum".
fl.mo:Expected error in mat fl-: "fl-: a is not a flonum".
--- 9616,9622 ----
--- 9662,9668 ----
fl.mo:Expected error in mat fl+: "fl+: (a . b) is not a flonum".
fl.mo:Expected error in mat fl+: "fl+: 1 is not a flonum".
fl.mo:Expected error in mat fl+: "fl+: 2/3 is not a flonum".
@ -5710,7 +5710,7 @@
fl.mo:Expected error in mat fl-: "fl-: 1 is not a flonum".
fl.mo:Expected error in mat fl-: "fl-: a is not a flonum".
***************
*** 9626,9715 ****
*** 9672,9761 ****
fl.mo:Expected error in mat fl*: "fl*: (a . b) is not a flonum".
fl.mo:Expected error in mat fl*: "fl*: 1 is not a flonum".
fl.mo:Expected error in mat fl*: "fl*: 2/3 is not a flonum".
@ -5801,7 +5801,7 @@
fl.mo:Expected error in mat flsingle: "flsingle: a is not a flonum".
fl.mo:Expected error in mat flsingle: "flsingle: 3 is not a flonum".
fl.mo:Expected error in mat flsingle: "flsingle: 2.0+1.0i is not a flonum".
--- 9626,9715 ----
--- 9672,9761 ----
fl.mo:Expected error in mat fl*: "fl*: (a . b) is not a flonum".
fl.mo:Expected error in mat fl*: "fl*: 1 is not a flonum".
fl.mo:Expected error in mat fl*: "fl*: 2/3 is not a flonum".
@ -5893,7 +5893,7 @@
fl.mo:Expected error in mat flsingle: "flsingle: 3 is not a flonum".
fl.mo:Expected error in mat flsingle: "flsingle: 2.0+1.0i is not a flonum".
***************
*** 9728,9763 ****
*** 9774,9809 ****
fl.mo:Expected error in mat flinfinite?: "flinfinite?: 3 is not a flonum".
fl.mo:Expected error in mat flinfinite?: "flinfinite?: 3/4 is not a flonum".
fl.mo:Expected error in mat flinfinite?: "flinfinite?: hi is not a flonum".
@ -5930,7 +5930,7 @@
fl.mo:Expected error in mat fleven?: "fleven?: a is not a flonum".
fl.mo:Expected error in mat fleven?: "fleven?: 3 is not a flonum".
fl.mo:Expected error in mat fleven?: "fleven?: 3.2 is not an integer".
--- 9728,9763 ----
--- 9774,9809 ----
fl.mo:Expected error in mat flinfinite?: "flinfinite?: 3 is not a flonum".
fl.mo:Expected error in mat flinfinite?: "flinfinite?: 3/4 is not a flonum".
fl.mo:Expected error in mat flinfinite?: "flinfinite?: hi is not a flonum".
@ -5968,7 +5968,7 @@
fl.mo:Expected error in mat fleven?: "fleven?: 3 is not a flonum".
fl.mo:Expected error in mat fleven?: "fleven?: 3.2 is not an integer".
***************
*** 9765,9772 ****
*** 9811,9818 ****
fl.mo:Expected error in mat fleven?: "fleven?: 1+1i is not a flonum".
fl.mo:Expected error in mat fleven?: "fleven?: +inf.0 is not an integer".
fl.mo:Expected error in mat fleven?: "fleven?: +nan.0 is not an integer".
@ -5977,7 +5977,7 @@
fl.mo:Expected error in mat flodd?: "flodd?: a is not a flonum".
fl.mo:Expected error in mat flodd?: "flodd?: 3 is not a flonum".
fl.mo:Expected error in mat flodd?: "flodd?: 3.2 is not an integer".
--- 9765,9772 ----
--- 9811,9818 ----
fl.mo:Expected error in mat fleven?: "fleven?: 1+1i is not a flonum".
fl.mo:Expected error in mat fleven?: "fleven?: +inf.0 is not an integer".
fl.mo:Expected error in mat fleven?: "fleven?: +nan.0 is not an integer".
@ -5987,7 +5987,7 @@
fl.mo:Expected error in mat flodd?: "flodd?: 3 is not a flonum".
fl.mo:Expected error in mat flodd?: "flodd?: 3.2 is not an integer".
***************
*** 9774,9780 ****
*** 9820,9826 ****
fl.mo:Expected error in mat flodd?: "flodd?: 3+1i is not a flonum".
fl.mo:Expected error in mat flodd?: "flodd?: +inf.0 is not an integer".
fl.mo:Expected error in mat flodd?: "flodd?: +nan.0 is not an integer".
@ -5995,7 +5995,7 @@
fl.mo:Expected error in mat flmin: "flmin: a is not a flonum".
fl.mo:Expected error in mat flmin: "flmin: a is not a flonum".
fl.mo:Expected error in mat flmin: "flmin: a is not a flonum".
--- 9774,9780 ----
--- 9820,9826 ----
fl.mo:Expected error in mat flodd?: "flodd?: 3+1i is not a flonum".
fl.mo:Expected error in mat flodd?: "flodd?: +inf.0 is not an integer".
fl.mo:Expected error in mat flodd?: "flodd?: +nan.0 is not an integer".
@ -6004,7 +6004,7 @@
fl.mo:Expected error in mat flmin: "flmin: a is not a flonum".
fl.mo:Expected error in mat flmin: "flmin: a is not a flonum".
***************
*** 9782,9788 ****
*** 9828,9834 ****
fl.mo:Expected error in mat flmin: "flmin: a is not a flonum".
fl.mo:Expected error in mat flmin: "flmin: 0.0+1.0i is not a flonum".
fl.mo:Expected error in mat flmin: "flmin: 0+1i is not a flonum".
@ -6012,7 +6012,7 @@
fl.mo:Expected error in mat flmax: "flmax: a is not a flonum".
fl.mo:Expected error in mat flmax: "flmax: a is not a flonum".
fl.mo:Expected error in mat flmax: "flmax: 3 is not a flonum".
--- 9782,9788 ----
--- 9828,9834 ----
fl.mo:Expected error in mat flmin: "flmin: a is not a flonum".
fl.mo:Expected error in mat flmin: "flmin: 0.0+1.0i is not a flonum".
fl.mo:Expected error in mat flmin: "flmin: 0+1i is not a flonum".
@ -6021,7 +6021,7 @@
fl.mo:Expected error in mat flmax: "flmax: a is not a flonum".
fl.mo:Expected error in mat flmax: "flmax: 3 is not a flonum".
***************
*** 9790,9803 ****
*** 9836,9849 ****
fl.mo:Expected error in mat flmax: "flmax: a is not a flonum".
fl.mo:Expected error in mat flmax: "flmax: 0.0+1.0i is not a flonum".
fl.mo:Expected error in mat flmax: "flmax: 0+1i is not a flonum".
@ -6036,7 +6036,7 @@
fl.mo:Expected error in mat fldenominator: "fldenominator: a is not a flonum".
fl.mo:Expected error in mat fldenominator: "fldenominator: 3 is not a flonum".
fl.mo:Expected error in mat fldenominator: "fldenominator: 0+1i is not a flonum".
--- 9790,9803 ----
--- 9836,9849 ----
fl.mo:Expected error in mat flmax: "flmax: a is not a flonum".
fl.mo:Expected error in mat flmax: "flmax: 0.0+1.0i is not a flonum".
fl.mo:Expected error in mat flmax: "flmax: 0+1i is not a flonum".
@ -6052,7 +6052,7 @@
fl.mo:Expected error in mat fldenominator: "fldenominator: 3 is not a flonum".
fl.mo:Expected error in mat fldenominator: "fldenominator: 0+1i is not a flonum".
***************
*** 9843,9849 ****
*** 9889,9895 ****
cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum".
cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum".
cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum".
@ -6060,7 +6060,7 @@
cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum".
cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum".
cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum".
--- 9843,9849 ----
--- 9889,9895 ----
cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum".
cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum".
cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum".
@ -6069,7 +6069,7 @@
cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum".
cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum".
***************
*** 9853,9866 ****
*** 9899,9912 ****
cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum".
cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum".
cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum".
@ -6084,7 +6084,7 @@
foreign.mo:Expected error in mat load-shared-object: "load-shared-object: invalid path 3".
foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: no entry for "i do not exist"".
foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: no entry for "i do not exist"".
--- 9853,9866 ----
--- 9899,9912 ----
cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum".
cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum".
cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum".
@ -6100,7 +6100,7 @@
foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: no entry for "i do not exist"".
foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: no entry for "i do not exist"".
***************
*** 9895,9902 ****
*** 9941,9948 ****
foreign.mo:Expected error in mat foreign-procedure: "id: invalid foreign-procedure argument foo".
foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: invalid foreign procedure handle abcde".
foreign.mo:Expected error in mat foreign-procedure: "float_id: invalid foreign-procedure argument 0".
@ -6109,7 +6109,7 @@
foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier i-am-not-a-type".
foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier 1".
foreign.mo:Expected error in mat foreign-bytevectors: "u8*->u8*: invalid foreign-procedure argument "hello"".
--- 9895,9902 ----
--- 9941,9948 ----
foreign.mo:Expected error in mat foreign-procedure: "id: invalid foreign-procedure argument foo".
foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: invalid foreign procedure handle abcde".
foreign.mo:Expected error in mat foreign-procedure: "float_id: invalid foreign-procedure argument 0".
@ -6119,7 +6119,7 @@
foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier 1".
foreign.mo:Expected error in mat foreign-bytevectors: "u8*->u8*: invalid foreign-procedure argument "hello"".
***************
*** 10395,10407 ****
*** 10441,10453 ****
unix.mo:Expected error in mat file-operations: "file-access-time: failed for "testlink": no such file or directory".
unix.mo:Expected error in mat file-operations: "file-change-time: failed for "testlink": no such file or directory".
unix.mo:Expected error in mat file-operations: "file-modification-time: failed for "testlink": no such file or directory".
@ -6133,7 +6133,7 @@
windows.mo:Expected error in mat registry: "get-registry: pooh is not a string".
windows.mo:Expected error in mat registry: "put-registry!: 3 is not a string".
windows.mo:Expected error in mat registry: "put-registry!: 3 is not a string".
--- 10395,10407 ----
--- 10441,10453 ----
unix.mo:Expected error in mat file-operations: "file-access-time: failed for "testlink": no such file or directory".
unix.mo:Expected error in mat file-operations: "file-change-time: failed for "testlink": no such file or directory".
unix.mo:Expected error in mat file-operations: "file-modification-time: failed for "testlink": no such file or directory".
@ -6148,7 +6148,7 @@
windows.mo:Expected error in mat registry: "put-registry!: 3 is not a string".
windows.mo:Expected error in mat registry: "put-registry!: 3 is not a string".
***************
*** 10429,10500 ****
*** 10475,10546 ****
ieee.mo:Expected error in mat flonum->fixnum: "flonum->fixnum: result for -inf.0 would be outside of fixnum range".
ieee.mo:Expected error in mat flonum->fixnum: "flonum->fixnum: result for +nan.0 would be outside of fixnum range".
ieee.mo:Expected error in mat fllp: "fllp: 3 is not a flonum".
@ -6221,7 +6221,7 @@
date.mo:Expected error in mat time: "time>=?: 3 is not a time record".
date.mo:Expected error in mat time: "time>=?: #<procedure car> is not a time record".
date.mo:Expected error in mat time: "time>=?: types of <time> and <time> differ".
--- 10429,10500 ----
--- 10475,10546 ----
ieee.mo:Expected error in mat flonum->fixnum: "flonum->fixnum: result for -inf.0 would be outside of fixnum range".
ieee.mo:Expected error in mat flonum->fixnum: "flonum->fixnum: result for +nan.0 would be outside of fixnum range".
ieee.mo:Expected error in mat fllp: "fllp: 3 is not a flonum".
@ -6295,7 +6295,7 @@
date.mo:Expected error in mat time: "time>=?: #<procedure car> is not a time record".
date.mo:Expected error in mat time: "time>=?: types of <time> and <time> differ".
***************
*** 10502,10515 ****
*** 10548,10561 ****
date.mo:Expected error in mat time: "add-duration: <time> does not have type time-duration".
date.mo:Expected error in mat time: "subtract-duration: <time> does not have type time-duration".
date.mo:Expected error in mat time: "copy-time: <date> is not a time record".
@ -6310,7 +6310,7 @@
date.mo:Expected error in mat date: "make-date: invalid nanosecond -1".
date.mo:Expected error in mat date: "make-date: invalid nanosecond <int>".
date.mo:Expected error in mat date: "make-date: invalid nanosecond zero".
--- 10502,10515 ----
--- 10548,10561 ----
date.mo:Expected error in mat time: "add-duration: <time> does not have type time-duration".
date.mo:Expected error in mat time: "subtract-duration: <time> does not have type time-duration".
date.mo:Expected error in mat time: "copy-time: <date> is not a time record".
@ -6326,7 +6326,7 @@
date.mo:Expected error in mat date: "make-date: invalid nanosecond <int>".
date.mo:Expected error in mat date: "make-date: invalid nanosecond zero".
***************
*** 10535,10595 ****
*** 10581,10641 ****
date.mo:Expected error in mat date: "make-date: invalid time-zone offset 90000".
date.mo:Expected error in mat date: "make-date: invalid time-zone offset est".
date.mo:Expected error in mat date: "make-date: invalid time-zone offset "est"".
@ -6388,7 +6388,7 @@
date.mo:Expected error in mat date: "current-date: invalid time-zone offset -90000".
date.mo:Expected error in mat date: "current-date: invalid time-zone offset 90000".
date.mo:Expected error in mat conversions/sleep: "date->time-utc: <time> is not a date record".
--- 10535,10595 ----
--- 10581,10641 ----
date.mo:Expected error in mat date: "make-date: invalid time-zone offset 90000".
date.mo:Expected error in mat date: "make-date: invalid time-zone offset est".
date.mo:Expected error in mat date: "make-date: invalid time-zone offset "est"".

View File

@ -1,5 +1,5 @@
*** errors-compile-0-f-f-f 2020-03-11 22:32:59.000000000 -0600
--- errors-interpret-0-f-f-f 2020-03-11 22:14:11.000000000 -0600
*** errors-compile-0-f-f-f 2020-11-07 07:25:50.000000000 -0700
--- errors-interpret-0-f-f-f 2020-11-07 07:05:50.000000000 -0700
***************
*** 18,25 ****
primvars.mo:Expected error testing (environment (quote (chezscheme)) (quote (chezscheme)) (quote #f)): Exception in environment: invalid library reference #f
@ -20,7 +20,7 @@
primvars.mo:Expected error testing (expand 1.0+2.0i (quote #f)): Exception in sc-expand: #f is not an environment
primvars.mo:Expected error testing (expand 1.0+2.0i (quote ((a . b))) 1.0+2.0i): Exception in sc-expand: ((a . b)) is not an environment
***************
*** 130,136 ****
*** 76,82 ****
primvars.mo:Expected error in mat make-parameter: "make-parameter: 2 is not a procedure".
primvars.mo:Expected error in mat make-parameter: "+: a is not a number".
primvars.mo:Expected error in mat make-parameter: "incorrect number of arguments 1 to #<procedure>".
@ -28,7 +28,7 @@
primvars.mo:Expected error in mat collect-generation-radix: "collect-generation-radix: a is not a positive fixnum".
primvars.mo:Expected error in mat collect-generation-radix: "collect-generation-radix: -1 is not a positive fixnum".
primvars.mo:Expected error in mat collect-generation-radix: "collect-generation-radix: 0 is not a positive fixnum".
--- 130,136 ----
--- 76,82 ----
primvars.mo:Expected error in mat make-parameter: "make-parameter: 2 is not a procedure".
primvars.mo:Expected error in mat make-parameter: "+: a is not a number".
primvars.mo:Expected error in mat make-parameter: "incorrect number of arguments 1 to #<procedure>".
@ -37,7 +37,7 @@
primvars.mo:Expected error in mat collect-generation-radix: "collect-generation-radix: -1 is not a positive fixnum".
primvars.mo:Expected error in mat collect-generation-radix: "collect-generation-radix: 0 is not a positive fixnum".
***************
*** 157,227 ****
*** 103,173 ****
primvars.mo:Expected error in mat print-radix: "print-radix: 1 is not between 2 and 36".
primvars.mo:Expected error in mat timer-interrupt-handler: "timer-interrupt-handler: midnight is not a procedure".
primvars.mo:Expected error in mat trace-output-port: "trace-output-port: #<input port string> is not a textual output port".
@ -109,7 +109,7 @@
3.mo:Expected error in mat let: "incorrect argument count in call ((lambda (x . r) (eq? x (...))))".
3.mo:Expected error in mat letrec: "variable f is not bound".
3.mo:Expected error in mat letrec: "attempt to reference undefined variable a".
--- 157,227 ----
--- 103,173 ----
primvars.mo:Expected error in mat print-radix: "print-radix: 1 is not between 2 and 36".
primvars.mo:Expected error in mat timer-interrupt-handler: "timer-interrupt-handler: midnight is not a procedure".
primvars.mo:Expected error in mat trace-output-port: "trace-output-port: #<input port string> is not a textual output port".
@ -182,7 +182,7 @@
3.mo:Expected error in mat letrec: "variable f is not bound".
3.mo:Expected error in mat letrec: "attempt to reference undefined variable a".
***************
*** 320,331 ****
*** 266,277 ****
3.mo:Expected error in mat mrvs: "returned three values to single value return context".
3.mo:Expected error in mat mrvs: "returned three values to single value return context".
3.mo:Expected error in mat mrvs: "returned zero values to single value return context".
@ -195,7 +195,7 @@
3.mo:Expected error in mat mrvs: "returned two values to single value return context".
3.mo:Expected error in mat mrvs: "returned two values to single value return context".
3.mo:Expected error in mat mrvs: "cdr: a is not a pair".
--- 320,331 ----
--- 266,277 ----
3.mo:Expected error in mat mrvs: "returned three values to single value return context".
3.mo:Expected error in mat mrvs: "returned three values to single value return context".
3.mo:Expected error in mat mrvs: "returned zero values to single value return context".
@ -209,7 +209,7 @@
3.mo:Expected error in mat mrvs: "returned two values to single value return context".
3.mo:Expected error in mat mrvs: "cdr: a is not a pair".
***************
*** 7462,7468 ****
*** 7466,7472 ****
7.mo:Expected error in mat maybe-compile: "separate-compile: Exception in include: failed for testfile-mc-1a.ss: no such file or directory
7.mo:Expected error in mat maybe-compile: "separate-compile: Exception in include: file "testfile-mc-1a.ss" not found in source directories
7.mo:Expected error in mat maybe-compile: "separate-compile: Exception in include: failed for ./testfile-mc-3a.ss: no such file or directory
@ -217,7 +217,7 @@
7.mo:Expected error in mat eval: "interpret: 7 is not an environment".
7.mo:Expected error in mat eval: "compile: 7 is not an environment".
7.mo:Expected error in mat expand: "sc-expand: 7 is not an environment".
--- 7462,7468 ----
--- 7466,7472 ----
7.mo:Expected error in mat maybe-compile: "separate-compile: Exception in include: failed for testfile-mc-1a.ss: no such file or directory
7.mo:Expected error in mat maybe-compile: "separate-compile: Exception in include: file "testfile-mc-1a.ss" not found in source directories
7.mo:Expected error in mat maybe-compile: "separate-compile: Exception in include: failed for ./testfile-mc-3a.ss: no such file or directory
@ -226,7 +226,7 @@
7.mo:Expected error in mat eval: "compile: 7 is not an environment".
7.mo:Expected error in mat expand: "sc-expand: 7 is not an environment".
***************
*** 7841,7847 ****
*** 7857,7863 ****
record.mo:Expected error in mat record25: "invalid value #\9 for foreign type uptr".
record.mo:Expected error in mat record25: "invalid value 10 for foreign type float".
record.mo:Expected error in mat record25: "invalid value 11.0+0.0i for foreign type double".
@ -234,7 +234,7 @@
record.mo:Expected error in mat record25: "invalid value 12.0 for foreign type long-long".
record.mo:Expected error in mat record25: "invalid value 13.0 for foreign type unsigned-long-long".
record.mo:Expected error in mat record25: "invalid value 3.0 for foreign type int".
--- 7841,7847 ----
--- 7857,7863 ----
record.mo:Expected error in mat record25: "invalid value #\9 for foreign type uptr".
record.mo:Expected error in mat record25: "invalid value 10 for foreign type float".
record.mo:Expected error in mat record25: "invalid value 11.0+0.0i for foreign type double".
@ -243,7 +243,7 @@
record.mo:Expected error in mat record25: "invalid value 13.0 for foreign type unsigned-long-long".
record.mo:Expected error in mat record25: "invalid value 3.0 for foreign type int".
***************
*** 7883,7889 ****
*** 7899,7905 ****
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 1 to #<procedure>".
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 1 to #<procedure>".
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 3 to #<procedure>".
@ -251,7 +251,7 @@
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 4 to #<procedure constructor>".
record.mo:Expected error in mat r6rs-records-procedural: "make-record-constructor-descriptor: record constructor descriptor #<record constructor descriptor> is not for parent of record type #<record type grand-child>".
record.mo:Expected error in mat r6rs-records-procedural: "make-record-type-descriptor: cannot extend sealed record type #<record type bar>".
--- 7883,7889 ----
--- 7899,7905 ----
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 1 to #<procedure>".
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 1 to #<procedure>".
record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 3 to #<procedure>".
@ -260,7 +260,7 @@
record.mo:Expected error in mat r6rs-records-procedural: "make-record-constructor-descriptor: record constructor descriptor #<record constructor descriptor> is not for parent of record type #<record type grand-child>".
record.mo:Expected error in mat r6rs-records-procedural: "make-record-type-descriptor: cannot extend sealed record type #<record type bar>".
***************
*** 9127,9139 ****
*** 9141,9153 ****
fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum".
fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum".
fx.mo:Expected error in mat fx*: "fx*: (a . b) is not a fixnum".
@ -274,7 +274,7 @@
fx.mo:Expected error in mat r6rs:fx*: "fx*: <int> is not a fixnum".
fx.mo:Expected error in mat r6rs:fx*: "fx*: <-int> is not a fixnum".
fx.mo:Expected error in mat r6rs:fx*: "fx*: #f is not a fixnum".
--- 9127,9139 ----
--- 9141,9153 ----
fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum".
fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum".
fx.mo:Expected error in mat fx*: "fx*: (a . b) is not a fixnum".
@ -289,7 +289,7 @@
fx.mo:Expected error in mat r6rs:fx*: "fx*: <-int> is not a fixnum".
fx.mo:Expected error in mat r6rs:fx*: "fx*: #f is not a fixnum".
***************
*** 9894,9918 ****
*** 9914,9938 ****
foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: invalid foreign procedure handle foo".
foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: invalid foreign procedure handle foo".
foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: invalid foreign procedure handle foo".
@ -315,7 +315,7 @@
foreign.mo:Expected error in mat foreign-procedure: "invalid foreign-procedure argument type specifier booleen".
foreign.mo:Expected error in mat foreign-procedure: "invalid foreign-procedure argument type specifier integer-34".
foreign.mo:Expected error in mat foreign-procedure: "invalid foreign-procedure result type specifier chare".
--- 9894,9918 ----
--- 9914,9938 ----
foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: invalid foreign procedure handle foo".
foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: invalid foreign procedure handle foo".
foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: invalid foreign procedure handle foo".
@ -342,7 +342,7 @@
foreign.mo:Expected error in mat foreign-procedure: "invalid foreign-procedure argument type specifier integer-34".
foreign.mo:Expected error in mat foreign-procedure: "invalid foreign-procedure result type specifier chare".
***************
*** 9925,9956 ****
*** 9945,9976 ****
foreign.mo:Expected error in mat foreign-sizeof: "incorrect argument count in call (foreign-sizeof (quote int) (quote int))".
foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier i-am-not-a-type".
foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier 1".
@ -375,7 +375,7 @@
foreign.mo:Expected error in mat foreign-strings: "foreign-callable: invalid return value ("ello" 4) from #<procedure>".
foreign.mo:Expected error in mat foreign-strings: "foreign-callable: invalid return value ("ello" 4) from #<procedure>".
foreign.mo:Expected error in mat foreign-strings: "foreign-callable: invalid return value ("ello" 4) from #<procedure>".
--- 9925,9956 ----
--- 9945,9976 ----
foreign.mo:Expected error in mat foreign-sizeof: "incorrect argument count in call (foreign-sizeof (quote int) (quote int))".
foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier i-am-not-a-type".
foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier 1".
@ -409,7 +409,7 @@
foreign.mo:Expected error in mat foreign-strings: "foreign-callable: invalid return value ("ello" 4) from #<procedure>".
foreign.mo:Expected error in mat foreign-strings: "foreign-callable: invalid return value ("ello" 4) from #<procedure>".
***************
*** 9958,9983 ****
*** 9978,10003 ****
foreign.mo:Expected error in mat foreign-strings: "foreign-callable: invalid return value ("ello" 4) from #<procedure>".
foreign.mo:Expected error in mat foreign-strings: "foreign-callable: invalid return value ("ello" 4) from #<procedure>".
foreign.mo:Expected error in mat foreign-strings: "foreign-callable: invalid return value ("ello" 4) from #<procedure>".
@ -436,7 +436,7 @@
foreign.mo:Expected error in mat foreign-fixed-types: "foreign-callable: invalid return value (- x 7) from #<procedure>".
foreign.mo:Expected error in mat foreign-fixed-types: "foreign-callable: invalid return value (- x 7) from #<procedure>".
foreign.mo:Expected error in mat foreign-fixed-types: "foreign-callable: invalid return value (- x 7) from #<procedure>".
--- 9958,9983 ----
--- 9978,10003 ----
foreign.mo:Expected error in mat foreign-strings: "foreign-callable: invalid return value ("ello" 4) from #<procedure>".
foreign.mo:Expected error in mat foreign-strings: "foreign-callable: invalid return value ("ello" 4) from #<procedure>".
foreign.mo:Expected error in mat foreign-strings: "foreign-callable: invalid return value ("ello" 4) from #<procedure>".
@ -464,7 +464,7 @@
foreign.mo:Expected error in mat foreign-fixed-types: "foreign-callable: invalid return value (- x 7) from #<procedure>".
foreign.mo:Expected error in mat foreign-fixed-types: "foreign-callable: invalid return value (- x 7) from #<procedure>".
***************
*** 9988,10022 ****
*** 10009,10043 ****
foreign.mo:Expected error in mat foreign-fixed-types: "foreign-callable: invalid return value (- x 7) from #<procedure>".
foreign.mo:Expected error in mat foreign-fixed-types: "foreign-callable: invalid return value (- x 7) from #<procedure>".
foreign.mo:Expected error in mat foreign-fixed-types: "foreign-callable: invalid return value (- x 7) from #<procedure>".
@ -500,7 +500,7 @@
foreign.mo:Expected error in mat foreign-C-types: "foreign-callable: invalid return value (73 74) from #<procedure>".
foreign.mo:Expected error in mat foreign-C-types: "foreign-callable: invalid return value (73 74) from #<procedure>".
foreign.mo:Expected error in mat foreign-C-types: "foreign-callable: invalid return value (73 74) from #<procedure>".
--- 9988,10022 ----
--- 10009,10043 ----
foreign.mo:Expected error in mat foreign-fixed-types: "foreign-callable: invalid return value (- x 7) from #<procedure>".
foreign.mo:Expected error in mat foreign-fixed-types: "foreign-callable: invalid return value (- x 7) from #<procedure>".
foreign.mo:Expected error in mat foreign-fixed-types: "foreign-callable: invalid return value (- x 7) from #<procedure>".
@ -537,7 +537,7 @@
foreign.mo:Expected error in mat foreign-C-types: "foreign-callable: invalid return value (73 74) from #<procedure>".
foreign.mo:Expected error in mat foreign-C-types: "foreign-callable: invalid return value (73 74) from #<procedure>".
***************
*** 10623,10632 ****
*** 10644,10653 ****
exceptions.mo:Expected error in mat assert: "failed assertion (memq (quote b) (quote (1 2 a 3 4)))".
exceptions.mo:Expected error in mat assert: "failed assertion (q ...)".
exceptions.mo:Expected error in mat assert: "failed assertion (andmap symbol? (syntax (x ...)))".
@ -548,7 +548,7 @@
oop.mo:Expected error in mat oop: "m1: not applicable to 17".
oop.mo:Expected error in mat oop: "variable <a>-x1 is not bound".
oop.mo:Expected error in mat oop: "variable <a>-x1-set! is not bound".
--- 10623,10632 ----
--- 10644,10653 ----
exceptions.mo:Expected error in mat assert: "failed assertion (memq (quote b) (quote (1 2 a 3 4)))".
exceptions.mo:Expected error in mat assert: "failed assertion (q ...)".
exceptions.mo:Expected error in mat assert: "failed assertion (andmap symbol? (syntax (x ...)))".

View File

@ -1,5 +1,5 @@
*** errors-compile-0-f-t-f 2020-06-03 11:23:43.000000000 -0600
--- errors-interpret-0-f-t-f 2020-06-03 15:11:49.000000000 -0600
*** errors-compile-0-f-t-f 2020-11-07 06:47:03.000000000 -0700
--- errors-interpret-0-f-t-f 2020-11-07 07:16:02.000000000 -0700
***************
*** 18,25 ****
primvars.mo:Expected error testing (environment (quote (chezscheme)) (quote (chezscheme)) (quote #f)): Exception in environment: invalid library reference #f
@ -20,7 +20,7 @@
primvars.mo:Expected error testing (expand 1.0+2.0i (quote #f)): Exception in sc-expand: #f is not an environment
primvars.mo:Expected error testing (expand 1.0+2.0i (quote ((a . b))) 1.0+2.0i): Exception in sc-expand: ((a . b)) is not an environment
***************
*** 74,80 ****
*** 76,82 ****
primvars.mo:Expected error in mat make-parameter: "make-parameter: 2 is not a procedure".
primvars.mo:Expected error in mat make-parameter: "+: a is not a number".
primvars.mo:Expected error in mat make-parameter: "incorrect number of arguments 1 to #<procedure>".
@ -28,7 +28,7 @@
primvars.mo:Expected error in mat collect-generation-radix: "collect-generation-radix: a is not a positive fixnum".
primvars.mo:Expected error in mat collect-generation-radix: "collect-generation-radix: -1 is not a positive fixnum".
primvars.mo:Expected error in mat collect-generation-radix: "collect-generation-radix: 0 is not a positive fixnum".
--- 74,80 ----
--- 76,82 ----
primvars.mo:Expected error in mat make-parameter: "make-parameter: 2 is not a procedure".
primvars.mo:Expected error in mat make-parameter: "+: a is not a number".
primvars.mo:Expected error in mat make-parameter: "incorrect number of arguments 1 to #<procedure>".
@ -37,7 +37,7 @@
primvars.mo:Expected error in mat collect-generation-radix: "collect-generation-radix: -1 is not a positive fixnum".
primvars.mo:Expected error in mat collect-generation-radix: "collect-generation-radix: 0 is not a positive fixnum".
***************
*** 101,171 ****
*** 103,173 ****
primvars.mo:Expected error in mat print-radix: "print-radix: 1 is not between 2 and 36".
primvars.mo:Expected error in mat timer-interrupt-handler: "timer-interrupt-handler: midnight is not a procedure".
primvars.mo:Expected error in mat trace-output-port: "trace-output-port: #<input port string> is not a textual output port".
@ -109,7 +109,7 @@
3.mo:Expected error in mat let: "incorrect argument count in call ((lambda (x . r) (eq? x (...))))".
3.mo:Expected error in mat letrec: "variable f is not bound".
3.mo:Expected error in mat letrec: "attempt to reference undefined variable a".
--- 101,171 ----
--- 103,173 ----
primvars.mo:Expected error in mat print-radix: "print-radix: 1 is not between 2 and 36".
primvars.mo:Expected error in mat timer-interrupt-handler: "timer-interrupt-handler: midnight is not a procedure".
primvars.mo:Expected error in mat trace-output-port: "trace-output-port: #<input port string> is not a textual output port".
@ -182,7 +182,7 @@
3.mo:Expected error in mat letrec: "variable f is not bound".
3.mo:Expected error in mat letrec: "attempt to reference undefined variable a".
***************
*** 7424,7430 ****
*** 7466,7472 ****
7.mo:Expected error in mat maybe-compile: "separate-compile: Exception in include: failed for testfile-mc-1a.ss: no such file or directory
7.mo:Expected error in mat maybe-compile: "separate-compile: Exception in include: file "testfile-mc-1a.ss" not found in source directories
7.mo:Expected error in mat maybe-compile: "separate-compile: Exception in include: failed for ./testfile-mc-3a.ss: no such file or directory
@ -190,7 +190,7 @@
7.mo:Expected error in mat eval: "interpret: 7 is not an environment".
7.mo:Expected error in mat eval: "compile: 7 is not an environment".
7.mo:Expected error in mat expand: "sc-expand: 7 is not an environment".
--- 7424,7430 ----
--- 7466,7472 ----
7.mo:Expected error in mat maybe-compile: "separate-compile: Exception in include: failed for testfile-mc-1a.ss: no such file or directory
7.mo:Expected error in mat maybe-compile: "separate-compile: Exception in include: file "testfile-mc-1a.ss" not found in source directories
7.mo:Expected error in mat maybe-compile: "separate-compile: Exception in include: failed for ./testfile-mc-3a.ss: no such file or directory
@ -199,7 +199,7 @@
7.mo:Expected error in mat eval: "compile: 7 is not an environment".
7.mo:Expected error in mat expand: "sc-expand: 7 is not an environment".
***************
*** 7612,7619 ****
*** 7666,7673 ****
7.mo:Expected error in mat bytes-allocated: "bytes-allocated: invalid space gnu".
7.mo:Expected error in mat error: "a: hit me!".
7.mo:Expected error in mat error: "f: n is 0".
@ -208,7 +208,7 @@
record.mo:Expected error in mat record2: "invalid value 3 for foreign type double-float".
record.mo:Expected error in mat record2: "3 is not of type #<record type fudge>".
record.mo:Expected error in mat record2: "make-record-type: invalid field list ((immutable double-float a) . b)".
--- 7612,7619 ----
--- 7666,7673 ----
7.mo:Expected error in mat bytes-allocated: "bytes-allocated: invalid space gnu".
7.mo:Expected error in mat error: "a: hit me!".
7.mo:Expected error in mat error: "f: n is 0".
@ -218,7 +218,7 @@
record.mo:Expected error in mat record2: "3 is not of type #<record type fudge>".
record.mo:Expected error in mat record2: "make-record-type: invalid field list ((immutable double-float a) . b)".
***************
*** 7621,7635 ****
*** 7675,7689 ****
record.mo:Expected error in mat type-descriptor: "invalid syntax (type-descriptor 3)".
record.mo:Expected error in mat type-descriptor: "type-descriptor: unrecognized record car".
record.mo:Expected error in mat record3: "variable set-fudge-a! is not bound".
@ -234,7 +234,7 @@
record.mo:Expected error in mat record9: "record-reader: invalid input #f".
record.mo:Expected error in mat record9: "record-reader: invalid second argument fudge".
record.mo:Expected error in mat record9: "record-reader: invalid second argument fudge".
--- 7621,7635 ----
--- 7675,7689 ----
record.mo:Expected error in mat type-descriptor: "invalid syntax (type-descriptor 3)".
record.mo:Expected error in mat type-descriptor: "type-descriptor: unrecognized record car".
record.mo:Expected error in mat record3: "variable set-fudge-a! is not bound".
@ -251,7 +251,7 @@
record.mo:Expected error in mat record9: "record-reader: invalid second argument fudge".
record.mo:Expected error in mat record9: "record-reader: invalid second argument fudge".
***************
*** 7642,7667 ****
*** 7696,7721 ****
record.mo:Expected error in mat record10: "read: unresolvable cycle constructing record of type #<record type bar> at char 3 of #<input port string>".
record.mo:Expected error in mat record16: "read: unresolvable cycle constructing record of type #<record type bazar> at char 3 of #<input port string>".
record.mo:Expected error in mat record16: "read: unresolvable cycle constructing record of type #<record type bazar> at char 3 of #<input port string>".
@ -278,7 +278,7 @@
record.mo:Expected error in mat foreign-data: "foreign-alloc: 0 is not a positive fixnum".
record.mo:Expected error in mat foreign-data: "foreign-alloc: <int> is not a positive fixnum".
record.mo:Expected error in mat foreign-data: "foreign-alloc: -5 is not a positive fixnum".
--- 7642,7667 ----
--- 7696,7721 ----
record.mo:Expected error in mat record10: "read: unresolvable cycle constructing record of type #<record type bar> at char 3 of #<input port string>".
record.mo:Expected error in mat record16: "read: unresolvable cycle constructing record of type #<record type bazar> at char 3 of #<input port string>".
record.mo:Expected error in mat record16: "read: unresolvable cycle constructing record of type #<record type bazar> at char 3 of #<input port string>".
@ -306,7 +306,7 @@
record.mo:Expected error in mat foreign-data: "foreign-alloc: <int> is not a positive fixnum".
record.mo:Expected error in mat foreign-data: "foreign-alloc: -5 is not a positive fixnum".
***************
*** 7792,7830 ****
*** 7846,7884 ****
record.mo:Expected error in mat record22: "invalid field specifier (immutable creepy q)".
record.mo:Expected error in mat record22: "invalid field specifier (immutable creepy q)".
record.mo:Expected error in mat record23: "make-record-type: cannot extend sealed record type #<record type foo>".
@ -346,7 +346,7 @@
record.mo:Expected error in mat record?: "record?: 4 is not a record type descriptor".
record.mo:Expected error in mat record?: "record?: a is not a record type descriptor".
record.mo:Expected error in mat record?: "record?: #(1) is not a record type descriptor".
--- 7792,7830 ----
--- 7846,7884 ----
record.mo:Expected error in mat record22: "invalid field specifier (immutable creepy q)".
record.mo:Expected error in mat record22: "invalid field specifier (immutable creepy q)".
record.mo:Expected error in mat record23: "make-record-type: cannot extend sealed record type #<record type foo>".
@ -387,7 +387,7 @@
record.mo:Expected error in mat record?: "record?: a is not a record type descriptor".
record.mo:Expected error in mat record?: "record?: #(1) is not a record type descriptor".
***************
*** 7839,7895 ****
*** 7893,7949 ****
record.mo:Expected error in mat r6rs-records-procedural: "make-record-constructor-descriptor: invalid protocol flimflam".
record.mo:Expected error in mat r6rs-records-procedural: "attempt to apply non-procedure not-a-procedure".
record.mo:Expected error in mat r6rs-records-procedural: "attempt to apply non-procedure spam".
@ -445,7 +445,7 @@
record.mo:Expected error in mat r6rs-records-syntactic: "define-record-type: incompatible record type cpoint - different parent".
record.mo:Expected error in mat r6rs-records-syntactic: "define-record-type: incompatible record type cpoint - different parent".
record.mo:Expected error in mat r6rs-records-syntactic: "cannot extend define-record-type parent fratrat".
--- 7839,7895 ----
--- 7893,7949 ----
record.mo:Expected error in mat r6rs-records-procedural: "make-record-constructor-descriptor: invalid protocol flimflam".
record.mo:Expected error in mat r6rs-records-procedural: "attempt to apply non-procedure not-a-procedure".
record.mo:Expected error in mat r6rs-records-procedural: "attempt to apply non-procedure spam".
@ -504,7 +504,7 @@
record.mo:Expected error in mat r6rs-records-syntactic: "define-record-type: incompatible record type cpoint - different parent".
record.mo:Expected error in mat r6rs-records-syntactic: "cannot extend define-record-type parent fratrat".
***************
*** 9089,9101 ****
*** 9141,9153 ****
fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum".
fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum".
fx.mo:Expected error in mat fx*: "fx*: (a . b) is not a fixnum".
@ -518,7 +518,7 @@
fx.mo:Expected error in mat r6rs:fx*: "fx*: <int> is not a fixnum".
fx.mo:Expected error in mat r6rs:fx*: "fx*: <-int> is not a fixnum".
fx.mo:Expected error in mat r6rs:fx*: "fx*: #f is not a fixnum".
--- 9089,9101 ----
--- 9141,9153 ----
fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum".
fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum".
fx.mo:Expected error in mat fx*: "fx*: (a . b) is not a fixnum".
@ -533,7 +533,7 @@
fx.mo:Expected error in mat r6rs:fx*: "fx*: <-int> is not a fixnum".
fx.mo:Expected error in mat r6rs:fx*: "fx*: #f is not a fixnum".
***************
*** 10585,10594 ****
*** 10644,10653 ****
exceptions.mo:Expected error in mat assert: "failed assertion (memq (quote b) (quote (1 2 a 3 4)))".
exceptions.mo:Expected error in mat assert: "failed assertion (q ...)".
exceptions.mo:Expected error in mat assert: "failed assertion (andmap symbol? (syntax (x ...)))".
@ -544,7 +544,7 @@
oop.mo:Expected error in mat oop: "m1: not applicable to 17".
oop.mo:Expected error in mat oop: "variable <a>-x1 is not bound".
oop.mo:Expected error in mat oop: "variable <a>-x1-set! is not bound".
--- 10585,10594 ----
--- 10644,10653 ----
exceptions.mo:Expected error in mat assert: "failed assertion (memq (quote b) (quote (1 2 a 3 4)))".
exceptions.mo:Expected error in mat assert: "failed assertion (q ...)".
exceptions.mo:Expected error in mat assert: "failed assertion (andmap symbol? (syntax (x ...)))".

View File

@ -404,6 +404,7 @@
[(flonum) 0.0 0 0.0+1.0i 'a #f]
[(ftype-pointer) *ftype-pointer 0 *time #f]
[(fxvector) '#vfx(0) "a" #f]
[(flvector) '#vfl(0.0) "a" #f]
[(gensym) *genny 'sym #f]
[(guardian) (make-guardian) values "oops" #f]
[(hashtable) *eq-hashtable '((a . b)) #f]

View File

@ -4234,11 +4234,11 @@ cp0.mo:Expected error in mat expand/optimize-output: "expand/optimize-output: #<
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: -1 is not a valid index for #vfx(3 4 5)".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: a is not a valid index for #vfx(3 4 5)".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: d is not a fixnum".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: (3 4 5) is not a mutable fxvector".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: (3 4 5) is not an fxvector".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: <-int> is not a fixnum".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: <int> is not a fixnum".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: (3 4 5) is not a mutable fxvector".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: #(3 4) is not a mutable fxvector".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: (3 4 5) is not an fxvector".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: #(3 4) is not an fxvector".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: 3 is not a valid index for #vfx(3 4 5)".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: -3 is not a valid index for #vfx(3 4 5)".
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: <int> is not a valid index for #vfx(3 4 5)".
@ -4249,11 +4249,46 @@ cp0.mo:Expected error in mat expand/optimize-output: "expand/optimize-output: #<
5_6.mo:Expected error in mat fxvector-set!: "fxvector-set!: a is not a fixnum".
5_6.mo:Expected error in mat fxvector-copy: "fxvector-copy: (a b c) is not an fxvector".
5_6.mo:Expected error in mat fxvector-fill!: "fxvector-fill!: a is not a fixnum".
5_6.mo:Expected error in mat fxvector-fill!: "fxvector-fill!: #(1) is not a mutable fxvector".
5_6.mo:Expected error in mat fxvector-fill!: "fxvector-fill!: #(1) is not a fxvector".
5_6.mo:Expected error in mat list->fxvector: "list->fxvector: #(a b c) is not a proper list".
5_6.mo:Expected error in mat list->fxvector: "list->fxvector: (1 2 . 3) is not a proper list".
5_6.mo:Expected error in mat list->fxvector: "list->fxvector: (1 2 3 2 3 2 ...) is circular".
5_6.mo:Expected error in mat fxvector->list: "fxvector->list: (a b c) is not an fxvector".
5_6.mo:Expected error in mat flvector: "flvector: 1 is not a flonum".
5_6.mo:Expected error in mat flvector: "flvector: a is not a flonum".
5_6.mo:Expected error in mat flvector: "flvector: a is not a flonum".
5_6.mo:Expected error in mat make-flvector: "make-flvector: a is not a flonum".
5_6.mo:Expected error in mat make-flvector: "make-flvector: 1 is not a flonum".
5_6.mo:Expected error in mat make-flvector: "make-flvector: a is not a flonum".
5_6.mo:Expected error in mat flvector-length: "flvector-length: (a b c) is not an flvector".
5_6.mo:Expected error in mat flvector-ref: "flvector-ref: 3 is not a valid index for #vfl(3.0 4.0 5.0)".
5_6.mo:Expected error in mat flvector-ref: "flvector-ref: -1 is not a valid index for #vfl(3.0 4.0 5.0)".
5_6.mo:Expected error in mat flvector-ref: "flvector-ref: a is not a valid index for #vfl(3.0 4.0 5.0)".
5_6.mo:Expected error in mat flvector-ref: "flvector-ref: #(3.0 4.0 5.0) is not an flvector".
5_6.mo:Expected error in mat flvector-ref: "flvector-ref: (3.0 4.0 5.0) is not an flvector".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: 3 is not a valid index for #vfl(3.0 4.0 5.0)".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: -1 is not a valid index for #vfl(3.0 4.0 5.0)".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: a is not a valid index for #vfl(3.0 4.0 5.0)".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: d is not a flonum".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: (3.0 4.0 5.0) is not an flvector".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: 1 is not a flonum".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: a is not a flonum".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: (3.0 4.0 5.0) is not an flvector".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: #(3.0 4.0) is not an flvector".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: 3 is not a valid index for #vfl(3.0 4.0 5.0)".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: -3 is not a valid index for #vfl(3.0 4.0 5.0)".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: <int> is not a valid index for #vfl(3.0 4.0 5.0)".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: <-int> is not a valid index for #vfl(3.0 4.0 5.0)".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: a is not a valid index for #vfl(3.0 4.0 5.0)".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: 1 is not a flonum".
5_6.mo:Expected error in mat flvector-set!: "flvector-set!: a is not a flonum".
5_6.mo:Expected error in mat flvector-copy: "flvector-copy: (a b c) is not an flvector".
5_6.mo:Expected error in mat flvector-fill!: "flvector-fill!: a is not a flonum".
5_6.mo:Expected error in mat flvector-fill!: "flvector-fill!: #(1.0) is not a flvector".
5_6.mo:Expected error in mat list->flvector: "list->flvector: #(a b c) is not a proper list".
5_6.mo:Expected error in mat list->flvector: "list->flvector: (1.0 2.0 . 3.0) is not a proper list".
5_6.mo:Expected error in mat list->flvector: "list->flvector: (1.0 2.0 3.0 2.0 3.0 2.0 ...) is circular".
5_6.mo:Expected error in mat flvector->list: "flvector->list: (a b c) is not an flvector".
5_6.mo:Expected error in mat vector-map: "incorrect argument count in call (vector-map)".
5_6.mo:Expected error in mat vector-map: "incorrect argument count in call (vector-map (quote #()))".
5_6.mo:Expected error in mat vector-map: "incorrect argument count in call (vector-map +)".
@ -4308,8 +4343,6 @@ cp0.mo:Expected error in mat expand/optimize-output: "expand/optimize-output: #<
5_6.mo:Expected error in mat vector->immutable-vector: "vector-set-fixnum!: #(1 2 3) is not a mutable vector".
5_6.mo:Expected error in mat vector->immutable-vector: "vector-fill!: #(1 2 3) is not a mutable vector".
5_6.mo:Expected error in mat vector->immutable-vector: "vector-sort!: #(1 2 3) is not a mutable vector".
5_6.mo:Expected error in mat fxvector->immutable-fxvector: "fxvector-set!: #vfx(1 2 3) is not a mutable fxvector".
5_6.mo:Expected error in mat fxvector->immutable-fxvector: "fxvector-fill!: #vfx(1 2 3) is not a mutable fxvector".
5_6.mo:Expected error in mat vector-cas!: "incorrect argument count in call (vector-cas! vec1)".
5_6.mo:Expected error in mat vector-cas!: "incorrect argument count in call (vector-cas! vec1 1)".
5_6.mo:Expected error in mat vector-cas!: "incorrect argument count in call (vector-cas! vec1 1 2)".

View File

@ -565,6 +565,8 @@
(case type
[(unsigned-64)
(integer-bytes->integer (real->floating-point-bytes v 8) #f)]
[(integer-64)
(integer-bytes->integer (real->floating-point-bytes v 8) #t)]
[else (error "unrecognized floating-point access" type offset)])]
[else
(unless (or (eq? type 'scheme-object)

View File

@ -166,6 +166,7 @@
[bytes? bytevector?]
[bytes-set! bytevector-u8-set!]
[bytes-ref bytevector-u8-ref]
[bytes->immutable-bytes bytevector->immutable-bytevector]
[bwp? bwp-object?]
[number->string r6rs:number->string]
[s:printf printf]
@ -261,7 +262,6 @@
immutable-string?
immutable-vector?
immutable-bytevector?
immutable-fxvector?
immutable-box?
require-nongenerative-clause
generate-inspector-information
@ -1052,9 +1052,6 @@
(bytes? s)
(immutable? s)))
(define (immutable-fxvector? s)
#f)
(define (immutable-box? s)
(and any-immutable?
(box? s)

View File

@ -1,5 +1,6 @@
#lang racket/base
(require racket/fixnum
racket/flonum
racket/port
"immediate.rkt"
"gensym.rkt")
@ -136,9 +137,12 @@
(define l (read/recursive in))
(list->bytes l)]
[(#\f)
(unless (eqv? #\x (read-char in)) (error 'hash-vee "not 8"))
(define t (read-char in))
(unless (or (eqv? #\x t) (eqv? #\l t)) (error 'hash-vee "not x or l"))
(define l (read/recursive in))
(apply fxvector l)]
(if (eqv? #\x t)
(apply fxvector l)
(apply flvector l))]
[else (error 'hash-vee "unexpected")]))
(define (as-symbol c in src line col pos)

View File

@ -166,6 +166,14 @@
k
(and (fx= (fxvector-ref x i) (fxvector-ref y i))
(f (fx1- i))))))]
[(flvector? x)
(and (flvector? y)
(fx= (flvector-length x) (flvector-length y))
(let f ([i (fx- (flvector-length x) 1)])
(if (fx< i 0)
k
(and ($fleqv? (flvector-ref x i) (flvector-ref y i))
(f (fx1- i))))))]
[(box? x)
(and (box? y)
(if (union-find ht x y)
@ -234,6 +242,14 @@
k
(and (fx= (fxvector-ref x i) (fxvector-ref y i))
(f (fx1- i))))))]
[(flvector? x)
(and (flvector? y)
(fx= (flvector-length x) (flvector-length y))
(let f ([i (fx- (flvector-length x) 1)])
(if (fx< i 0)
k
(and ($fleqv? (flvector-ref x i) (flvector-ref y i))
(f (fx1- i))))))]
[(box? x) (and (box? y) (e? (unbox x) (unbox y) k))]
[($record? x)
(and ($record? y)
@ -303,6 +319,14 @@
k
(and (fx= (fxvector-ref x i) (fxvector-ref y i))
(f (fx1- i))))))]
[(flvector? x)
(and (flvector? y)
(fx= (flvector-length x) (flvector-length y))
(let f ([i (fx- (flvector-length x) 1)])
(if (fx< i 0)
k
(and ($fleqv? (flvector-ref x i) (flvector-ref y i))
(f (fx1- i))))))]
[(box? x)
(and (box? y)
(if (fx<= k 0)

View File

@ -59,7 +59,7 @@
(define (immutable! str)
(cond
[(eqv? str "") ($tc-field 'null-immutable-string ($tc))]
[(eqv? str "") (string->immutable-string "")]
[else ($string-set-immutable! str)
str]))
@ -131,7 +131,7 @@
(lambda (v)
(cond
[(immutable-string? v) v]
[(eqv? v "") ($tc-field 'null-immutable-string ($tc))]
[(eqv? v "") (string->immutable-string "")]
[else
(unless (string? v) ($oops who "~s is not a string" v))
(let ([v2 (string-copy v)])

View File

@ -72,7 +72,7 @@
(lambda (v)
(cond
[(immutable-vector? v) v]
[(eqv? v '#()) ($tc-field 'null-immutable-vector ($tc))]
[(eqv? v '#()) (vector->immutable-vector '#())]
[else
(unless (vector? v) ($oops who "~s is not a vector" v))
(let ([v2 (vector-copy v)])
@ -126,16 +126,44 @@
(constant fxvector-data-disp) n))
fxv2))))
(set-who! fxvector->immutable-fxvector
(set! flvector->list
(lambda (v)
(cond
[(immutable-fxvector? v) v]
[(eqv? v '#vfx()) ($tc-field 'null-immutable-fxvector ($tc))]
[else
(unless (fxvector? v) ($oops who "~s is not a fxvector" v))
(let ([v2 (fxvector-copy v)])
($fxvector-set-immutable! v2)
v2)])))
(unless (flvector? v)
($oops 'flvector->list "~s is not an flvector" v))
(let loop ([i (fx- (flvector-length v) 1)] [l '()])
(if (fx> i 0)
(loop
(fx- i 2)
(list* (flvector-ref v (fx- i 1)) (flvector-ref v i) l))
(if (fx= i 0) (cons (flvector-ref v 0) l) l)))))
(set! list->flvector
(lambda (x)
(let ([v (make-flvector ($list-length x 'list->flvector))])
(do ([ls x (cdr ls)] [i 0 (fx+ i 1)])
((null? ls) v)
(let ([n (car ls)])
(unless (flonum? n)
($oops 'list->flvector "~s is not a flonum" n))
(flvector-set! v i n))))))
(set! flvector-copy
(lambda (flv1)
(unless (flvector? flv1)
($oops 'flvector-copy "~s is not an flvector" flv1))
(let ([n (flvector-length flv1)])
(let ([flv2 (make-flvector n)])
(if (fx<= n 10)
(let loop ([i (fx- n 1)])
(cond
[(fx> i 0)
(flvector-set! flv2 i (flvector-ref flv1 i))
(let ([i (fx- i 1)]) (flvector-set! flv2 i (flvector-ref flv1 i)))
(loop (fx- i 2))]
[(fx= i 0) (flvector-set! flv2 i (flvector-ref flv1 i))]))
($ptr-copy! flv1 (constant flvector-data-disp) flv2
(constant flvector-data-disp) n))
flv2))))
(set! vector-map
(case-lambda

View File

@ -692,3 +692,7 @@ reset:
reset-one:
if [ -f ../boot/${m}/${FILE} ] ; then rm ../boot/${m}/${FILE} ; fi
if [ ! -h ../boot/${m}/${FILE} ] ; then ln -s "${upupupbootdir}"/boot/${m}/${FILE} ../boot/${m}/${FILE} ; fi
.PHONY: run
run:
env SCHEMEHEAPDIRS=../boot/$m/ ../bin/$m/scheme $(ARGS)

View File

@ -786,7 +786,7 @@
(lambda (v)
(cond
[(immutable-bytevector? v) v]
[(eqv? v '#vu8()) ($tc-field 'null-immutable-bytevector ($tc))]
[(eqv? v '#vu8()) (bytevector->immutable-bytevector '#vu8())]
[else
(unless (bytevector? v) ($oops who "~s is not a bytevector" v))
(let ([v2 (bytevector-copy v)])

View File

@ -357,7 +357,7 @@
;; ---------------------------------------------------------------------
;; Version and machine types:
(define-constant scheme-version #x09050329)
(define-constant scheme-version #x09050330)
(define-syntax define-machine-types
(lambda (x)
@ -504,7 +504,7 @@
(define-constant fasl-type-immutable-vector 37)
(define-constant fasl-type-immutable-string 38)
(define-constant fasl-type-immutable-fxvector 39)
(define-constant fasl-type-flvector 39)
(define-constant fasl-type-immutable-bytevector 40)
(define-constant fasl-type-immutable-box 41)
@ -773,12 +773,13 @@
(define-constant countof-stencil-vector 26)
(define-constant countof-record 27)
(define-constant countof-phantom 28)
(define-constant countof-types 29)
(define-constant countof-flvector 29)
(define-constant countof-types 30)
;; ---------------------------------------------------------------------
;; Tags that are part of the pointer represeting an object:
;;; type-fixnum is assumed to be all zeros by at least vector, fxvector,
;;; type-fixnum is assumed to be all zeros by at least vector, fxvector, flvector,
;;; and bytevector index checks
(define-constant type-fixnum 0) ; #b100/#b000 32-bit, #b000 64-bit
(define-constant type-pair #b001)
@ -822,16 +823,19 @@
;;; memory, a string or fxvector up to 1/4, and a bytevector up to 1/8.
;;; on 64-bit machines, vectors get only one of the primary tag bits,
;;; bytevectors still get two (but don't need two), and strings and
;;; fxvectors still get one. all have maximum lengths equal to the
;;; bytevectors still get two (but don't need two), and strings, fxvectors
;;; and flvectors still get one. all have maximum lengths equal to the
;;; most-positive fixnum.
;;; vector type/length field must look like a fixnum. an immutable bit sits just above the fixnum tag, with the length above that.
;;; vector type/length field must look like a fixnum.
;;; an immutable bit sits just above the fixnum tag for a vector,
;;; bytevector or string, with the length above that.
(define-constant type-vector (constant type-fixnum))
; #b000 occupied by vectors on 32- and 64-bit machines
(define-constant type-bytevector #b01)
(define-constant type-string #b010)
(define-constant type-fxvector #b011)
(define-constant type-fxvector #b0011)
(define-constant type-flvector #b1011)
; #b100 occupied by vectors on 32-bit machines, unused on 64-bit machines
(define-constant type-other-number #b0110) ; bit 3 reset for numbers
(define-constant type-bignum #b00110) ; bit 4 reset for bignums
@ -921,14 +925,20 @@
(min (- (expt 2 (fx- (constant ptr-bits) (constant vector-length-offset))) 1)
(constant most-positive-fixnum)))
; fxvector length field (high bits) + immutabilty is stored with type
; fxvector length field (high bits)
(define-constant fxvector-length-offset 4)
(define-constant fxvector-immutable-flag
(expt 2 (- (constant fxvector-length-offset) 1)))
(define-constant iptr maximum-fxvector-length
(min (- (expt 2 (fx- (constant ptr-bits) (constant fxvector-length-offset))) 1)
(constant most-positive-fixnum)))
; flvector length field (high bits)
(define-constant flvector-length-offset 4)
(define-constant iptr maximum-flvector-length
(min (- (expt 2 (fx- (constant ptr-bits) (constant flvector-length-offset))) 1)
(constant most-positive-fixnum)))
(define-constant never-immutable-flag 0)
; bytevector length field (high bits) + immutabilty is stored with type
(define-constant bytevector-length-offset 3)
(define-constant bytevector-immutable-flag
@ -1024,7 +1034,8 @@
(define-constant mask-vector (constant mask-fixnum))
(define-constant mask-bytevector #b11)
(define-constant mask-string #b111)
(define-constant mask-fxvector #b111)
(define-constant mask-fxvector #b1111)
(define-constant mask-flvector #b1111)
(define-constant mask-other-number #b1111)
(define-constant mask-bignum #b11111)
(define-constant mask-bignum-sign #b100000)
@ -1093,12 +1104,6 @@
(define-constant mask-mutable-string
(fxlogor (constant mask-string) (constant string-immutable-flag)))
(define-constant type-mutable-fxvector (constant type-fxvector))
(define-constant type-immutable-fxvector
(fxlogor (constant type-fxvector) (constant fxvector-immutable-flag)))
(define-constant mask-mutable-fxvector
(fxlogor (constant mask-fxvector) (constant fxvector-immutable-flag)))
(define-constant type-mutable-bytevector (constant type-bytevector))
(define-constant type-immutable-bytevector
(fxlogor (constant type-bytevector) (constant bytevector-immutable-flag)))
@ -1113,6 +1118,7 @@
(define-constant string-length-factor (expt 2 (constant string-length-offset)))
(define-constant bignum-length-factor (expt 2 (constant bignum-length-offset)))
(define-constant fxvector-length-factor (expt 2 (constant fxvector-length-offset)))
(define-constant flvector-length-factor (expt 2 (constant flvector-length-offset)))
(define-constant bytevector-length-factor (expt 2 (constant bytevector-length-offset)))
(define-constant char-factor (expt 2 (constant char-data-offset)))
@ -1402,6 +1408,17 @@
([iptr type]
[ptr data 0]))
(constant-case ptr-bits
[(32)
(define-primitive-structure-disps flvector type-typed-object
([iptr type]
[ptr pad] ; pad needed to maintain double-word alignment for data
[double data 0]))]
[(64)
(define-primitive-structure-disps flvector type-typed-object
([iptr type]
[double data 0]))])
(constant-case ptr-bits
[(32)
(define-primitive-structure-disps bytevector type-typed-object
@ -1422,6 +1439,8 @@
(define-primitive-structure-disps flonum type-flonum
([double data]))
(define-constant flonum-bytes 8)
; on 32-bit systems, the iptr pad will have no effect above and
; beyond the normal padding. on 64-bit systems, the pad
; guarantees that the forwarding address will not overwrite
@ -1551,10 +1570,6 @@
[ptr target-machine]
[ptr fxlength-bv]
[ptr fxfirst-bit-set-bv]
[ptr null-immutable-vector]
[ptr null-immutable-fxvector]
[ptr null-immutable-bytevector]
[ptr null-immutable-string]
[ptr meta-level]
[ptr compile-profile]
[ptr generate-inspector-information]
@ -2344,6 +2359,7 @@
(string? x)
(bytevector? x)
(fxvector? x)
(flvector? x)
(memq x '(#!eof #!bwp #!base-rtd))))]))
;;; datatype support
@ -2782,6 +2798,9 @@
(fxvector-ref #f 2 #t #t)
(fxvector-set! #f 3 #t #t)
(fxvector-length #f 1 #t #t)
(flvector-ref #f 2 #t #t)
(flvector-set! #f 3 #t #t)
(flvector-length #f 1 #t #t)
(scan-remembered-set #f 0 #f #f)
(fold-left1 #f 3 #f #t)
(fold-left2 #f 4 #f #t)
@ -2975,7 +2994,10 @@
fllog
fllog2
flexpt
flsqrt))
flsqrt
null-immutable-vector
null-immutable-bytevector
null-immutable-string))
)

View File

@ -184,6 +184,7 @@
(define empty-string-rec `(quote ""))
(define empty-bytevector-rec `(quote #vu8()))
(define empty-fxvector-rec `(quote #vfx()))
(define empty-flvector-rec `(quote #vfl()))
;;; environments
(module (empty-env with-extended-env lookup)
@ -2497,6 +2498,12 @@
empty-fxvector-rec)]
[args #f])
(define-inline 2 flvector
[() (begin
(residualize-seq '() '() ctxt)
empty-flvector-rec)]
[args #f])
(define-inline 2 (eq? eqv? equal?)
[(arg1 arg2) (handle-equality ctxt arg1 (list arg2))])
@ -4773,6 +4780,9 @@
(define-inline 2 fxvector-ref
[(?x ?i) (tryref ctxt ?x ?i 'fxvector target-fixnum?)])
(define-inline 2 flvector-ref
[(?x ?i) (tryref ctxt ?x ?i 'flvector flonum?)])
; skipping bytevector-u8-ref and bytevector-s8-ref, which generally need to adjust the result.
(define-inline 2 list-ref

View File

@ -3048,6 +3048,10 @@
(guard (eq? 'bytevector-ieee-double-native-set! (primref-name pr)))
(Expr e3 #t)
#f]
[(call ,info ,mdcl ,pr ,[e1 #f -> * fp?1] ,[e2 #f -> * fp?2] ,e3)
(guard (eq? 'flvector-set! (primref-name pr)))
(Expr e3 #t)
#f]
[(call ,info ,mdcl ,pr ,[e* #f -> * fp?] ...)
(primref-flonum-result? pr)]
[(loop ,x (,x* ...) ,body)
@ -3587,6 +3591,12 @@
(define build-fix
(lambda (e)
(%inline sll ,e ,(%constant fixnum-offset))))
(define build-double-scale
(lambda (e)
(constant-case ptr-bits
[(32) (%inline sll ,e 1)]
[(64) e]
[else ($oops 'build-double-scale "unknown ptr-bit size ~s" (constant ptr-bits))])))
(define build-unfix
(lambda (e)
(nanopass-case (L7 Expr) e
@ -3805,7 +3815,7 @@
,(constant-case ptr-bytes
[(4)
(case elt-bytes
[(1) (let ([imm (logand imm #xff)])
[(1) (let ([imm (logand imm #xff)])<
(let ([imm (logor (ash imm 8) imm)])
(logor (ash imm 16) imm)))]
[(2) (let ([imm (logand imm #xffff)])
@ -5624,8 +5634,7 @@
(typed-object-pred $code? mask-code type-code)
(typed-object-pred $exactnum? mask-exactnum type-exactnum)
(typed-object-pred fxvector? mask-fxvector type-fxvector)
(typed-object-pred mutable-fxvector? mask-mutable-fxvector type-mutable-fxvector)
(typed-object-pred immutable-fxvector? mask-mutable-fxvector type-immutable-fxvector)
(typed-object-pred flvector? mask-flvector type-flvector)
(typed-object-pred $inexactnum? mask-inexactnum type-inexactnum)
(typed-object-pred $rtd-counts? mask-rtd-counts type-rtd-counts)
(typed-object-pred phantom-bytevector? mask-phantom type-phantom)
@ -5809,6 +5818,28 @@
(define-inline 3 fxvector
[() `(quote #vfx())]
[e* (go e*)]))
(let ()
(define (go e*)
(let ([n (length e*)])
(list-bind #f (e*)
(bind #t ([t (%constant-alloc type-typed-object
(fx+ (constant header-size-flvector) (fx* n (constant flonum-bytes))))])
(let loop ([e* e*] [i 0])
(if (null? e*)
`(seq
(set! ,(%mref ,t ,(constant flvector-type-disp))
(immediate ,(+ (fx* n (constant flvector-length-factor))
(constant type-flvector))))
,t)
`(seq
(set! ,(%mref ,t ,%zero ,(fx+ i (constant flvector-data-disp)) fp) ,(car e*))
,(loop (cdr e*) (fx+ i (constant flonum-bytes))))))))))
(define-inline 2 flvector
[() `(quote #vfl())]
[e* (and (andmap (lambda (x) (constant? flonum? x)) e*) (go e*))])
(define-inline 3 flvector
[() `(quote #vfl())]
[e* (go e*)]))
(let ()
(define (go e*)
(let ([n (length e*)])
@ -6054,6 +6085,7 @@
[(e) (extract-length (%mref ,e ,(constant type-disp)) (constant length-offset))])]))
(def-len vector-length vector-type-disp vector-length-offset)
(def-len fxvector-length fxvector-type-disp fxvector-length-offset)
(def-len flvector-length flvector-type-disp flvector-length-offset)
(def-len string-length string-type-disp string-length-offset)
(def-len bytevector-length bytevector-type-disp bytevector-length-offset)
(def-len $bignum-length bignum-type-disp bignum-length-offset)
@ -6073,6 +6105,7 @@
(label ,Lerr ,(build-libcall #t #f sexpr prim e)))))])]))
(def-len vector-length mask-vector type-vector vector-type-disp vector-length-offset)
(def-len fxvector-length mask-fxvector type-fxvector fxvector-type-disp fxvector-length-offset)
(def-len flvector-length mask-flvector type-flvector flvector-type-disp flvector-length-offset)
(def-len string-length mask-string type-string string-type-disp string-length-offset)
(def-len bytevector-length mask-bytevector type-bytevector bytevector-type-disp bytevector-length-offset)
(def-len stencil-vector-mask mask-stencil-vector type-stencil-vector stencil-vector-type-disp stencil-vector-mask-offset))
@ -9124,8 +9157,8 @@
[(e-name e-handler e-ib e-ob) (go e-name e-handler e-ib e-ob `(quote #f))]
[(e-name e-handler e-ib e-ob e-info) (go e-name e-handler e-ib e-ob e-info)]))))
(let ()
(define build-fxvector-ref-check (build-ref-check fxvector-type-disp maximum-fxvector-length fxvector-length-offset type-fxvector mask-fxvector fxvector-immutable-flag))
(define build-fxvector-set!-check (build-ref-check fxvector-type-disp maximum-fxvector-length fxvector-length-offset type-mutable-fxvector mask-mutable-fxvector fxvector-immutable-flag))
(define build-fxvector-ref-check (build-ref-check fxvector-type-disp maximum-fxvector-length fxvector-length-offset type-fxvector mask-fxvector never-immutable-flag))
(define build-fxvector-set!-check (build-ref-check fxvector-type-disp maximum-fxvector-length fxvector-length-offset type-fxvector mask-fxvector never-immutable-flag))
(define-inline 2 $fxvector-ref-check?
[(e-fv e-i) (bind #t (e-fv e-i) (build-fxvector-ref-check e-fv e-i #f))])
(define-inline 2 $fxvector-set!-check?
@ -9164,9 +9197,55 @@
(bind #t (e-fv e-i e-new)
`(if ,(build-fxvector-set!-check e-fv e-i e-new)
,(go e-fv e-i e-new)
,(build-libcall #t src sexpr fxvector-set! e-fv e-i e-new)))])
(define-inline 3 $fxvector-set-immutable!
[(e-fv) ((build-set-immutable! fxvector-type-disp fxvector-immutable-flag) e-fv)])))
,(build-libcall #t src sexpr fxvector-set! e-fv e-i e-new)))])))
(let ()
(define build-flvector-ref-check (build-ref-check flvector-type-disp maximum-flvector-length flvector-length-offset type-flvector mask-flvector never-immutable-flag))
(define build-flvector-set!-check (build-ref-check flvector-type-disp maximum-flvector-length flvector-length-offset type-flvector mask-flvector never-immutable-flag))
(define-inline 2 $flvector-ref-check?
[(e-fv e-i) (bind #t (e-fv e-i) (build-flvector-ref-check e-fv e-i #f))])
(define-inline 2 $flvector-set!-check?
[(e-fv e-i) (bind #t (e-fv e-i) (build-flvector-set!-check e-fv e-i #f))])
(let ()
(define (go e-fv e-i)
(cond
[(expr->index e-i 1 (constant maximum-flvector-length)) =>
(lambda (index)
`(unboxed-fp ,(%mref ,e-fv ,%zero ,(+ (fx* index (constant flonum-bytes)) (constant flvector-data-disp)) fp)))]
[else `(unboxed-fp ,(%mref ,e-fv ,(build-double-scale e-i) ,(constant flvector-data-disp) fp))]))
(define-inline 3 flvector-ref
[(e-fv e-i) (go e-fv e-i)])
(define-inline 2 flvector-ref
[(e-fv e-i)
(bind #t (e-fv e-i)
`(if ,(build-flvector-ref-check e-fv e-i #f)
,(go e-fv e-i)
,(build-libcall #t src sexpr flvector-ref e-fv e-i)))]))
(let ()
(define (go e-fv e-i e-new)
`(set!
,(cond
[(expr->index e-i 1 (constant maximum-flvector-length)) =>
(lambda (index)
(%mref ,e-fv ,%zero ,(+ (fx* index (constant flonum-bytes)) (constant flvector-data-disp)) fp))]
[else (%mref ,e-fv ,(build-double-scale e-i) ,(constant flvector-data-disp) fp)])
,e-new))
(define (checked-go src sexpr e-fv e-i e-new add-check)
`(if ,(add-check (build-flvector-set!-check e-fv e-i #f))
,(go e-fv e-i e-new)
,(build-libcall #t src sexpr flvector-set! e-fv e-i e-new)))
(define-inline 3 flvector-set!
[(e-fv e-i e-new)
(go e-fv e-i e-new)])
(define-inline 2 flvector-set!
[(e-fv e-i e-new)
(bind #t (e-fv e-i)
(if (known-flonum-result? e-new)
(bind #t fp (e-new)
(checked-go src sexpr e-fv e-i e-new values))
(bind #t (e-new)
(checked-go src sexpr e-fv e-i e-new
(lambda (e)
(build-and e (build-flonums? (list e-new))))))))])))
(let ()
(define build-string-ref-check
(lambda (e-s e-i)
@ -9467,7 +9546,14 @@
,(%mref ,e-bv ,(constant bytevector-type-disp))
,(%constant bytevector-length-offset))
e-fill)
,(%constant svoid)))]))
,(%constant svoid)))])
(define-inline 2 bytevector->immutable-bytevector
[(e-bv)
(nanopass-case (L7 Expr) e-bv
[(quote ,d)
(guard (bytevector? d) (= 0 (bytevector-length d)))
`(literal ,(make-info-literal #f 'entry (lookup-c-entry null-immutable-bytevector) 0))]
[else #f])]))
(let ()
(define build-bytevector
@ -10013,7 +10099,14 @@
(constant string-length-offset)
(constant string-char-offset))
e-fill))
,(%constant svoid))]))
,(%constant svoid))])
(define-inline 2 string->immutable-string
[(e-str)
(nanopass-case (L7 Expr) e-str
[(quote ,d)
(guard (string? d) (= 0 (string-length d)))
`(literal ,(make-info-literal #f 'entry (lookup-c-entry null-immutable-string) 0))]
[else #f])]))
(let ()
(define build-fxvector-fill
@ -10086,6 +10179,59 @@
e-fill))
,(%constant svoid))]))
(let ()
;; Used only to fill with 0s:
(define build-flvector-fill
(make-build-fill (constant ptr-bytes) (constant flvector-data-disp)))
(meta-assert (= (constant log2-ptr-bytes) (constant fixnum-offset)))
(let ()
(define do-make-flvector
(lambda (e-length)
(if (constant? (lambda (x) (and (fixnum? x) (fx<= 0 x 10000))) e-length)
(let ([n (constant-value e-length)])
(if (fx= n 0)
`(quote ,(flvector))
(let ([bytes (fx* n (constant flonum-bytes))])
(bind #t ([t (%constant-alloc type-typed-object
(fx+ (constant header-size-flvector) bytes))])
`(seq
(set! ,(%mref ,t ,(constant flvector-type-disp))
(immediate ,(fx+ (fx* n (constant flvector-length-factor))
(constant type-flvector))))
,(build-flvector-fill t `(immediate ,bytes) `(immediate 0)))))))
(bind #t (e-length) ; fixnum length doubles as byte count
(let ([t-fxv (make-tmp 'tfxv)])
`(if ,(%inline eq? ,e-length (immediate 0))
(quote ,(flvector))
(let ([,t-fxv (alloc ,(make-info-alloc (constant type-typed-object) #f #f)
,(%inline logand
,(%inline + ,(build-double-scale e-length)
(immediate ,(fx+ (constant header-size-flvector)
(fx- (constant byte-alignment) 1))))
(immediate ,(- (constant byte-alignment)))))])
(seq
(set! ,(%mref ,t-fxv ,(constant flvector-type-disp))
,(build-type/length e-length
(constant type-flvector)
(constant fixnum-offset)
(constant flvector-length-offset)))
,(build-flvector-fill t-fxv (build-double-scale e-length) `(immediate 0))))))))))
(define-inline 3 make-flvector
[(e-length) (do-make-flvector e-length)]
[(e-length e-init) #f])
(let ()
(define (valid-length? e-length)
(constant?
(lambda (x)
(and (or (fixnum? x) (bignum? x))
(<= 0 x (constant maximum-flvector-length))))
e-length))
(define-inline 2 make-flvector
[(e-length)
(and (valid-length? e-length)
(do-make-flvector e-length))]
[(e-length e-init) #f]))))
(let ()
(define build-vector-fill
(make-build-fill (constant ptr-bytes) (constant vector-data-disp)))
@ -10140,7 +10286,14 @@
[(e-length e-fill)
(and (valid-length? e-length)
(constant? fixnum? e-fill)
(do-make-vector e-length e-fill))]))))
(do-make-vector e-length e-fill))]))
(define-inline 2 vector->immutable-vector
[(e-vec)
(nanopass-case (L7 Expr) e-vec
[(quote ,d)
(guard (vector? d) (fx= 0 (vector-length d)))
`(literal ,(make-info-literal #f 'entry (lookup-c-entry null-immutable-vector) 0))]
[else #f])])))
(let ()
(meta-assert (= (constant log2-ptr-bytes) (constant fixnum-offset)))

View File

@ -82,10 +82,6 @@ Notes:
(define true-rec `(quote #t))
(define false-rec `(quote #f))
(define null-rec `(quote ()))
(define empty-vector-rec `(quote #()))
(define empty-string-rec `(quote ""))
(define empty-bytevector-rec `(quote #vu8()))
(define empty-fxvector-rec `(quote #vfx()))
(define eof-rec `(quote #!eof))
(define bwp-rec `(quote #!bwp))
@ -546,6 +542,7 @@ Notes:
[(string? d) 'string]
[(bytevector? d) 'bytevector]
[(fxvector? d) 'fxvector]
[(flvector? d) 'flvector]
[else #f]))
(define (rtd->record-predicate rtd extend?)
@ -583,6 +580,7 @@ Notes:
[string? 'string]
[bytevector? 'bytevector]
[fxvector? 'fxvector]
[flvector? 'flvector]
[gensym? 'gensym]
[uninterned-symbol? 'uninterned-symbol]
#;[interned-symbol? 'interned-symbol]
@ -628,6 +626,7 @@ Notes:
[string 'string]
[bytevector 'bytevector]
[fxvector 'fxvector]
[flvector 'flvector]
[gensym 'gensym]
[uninterned-symbol 'uninterned-symbol]
[interned-symbol 'interned-symbol]
@ -753,6 +752,7 @@ Notes:
[(string) (check-constant-is? x string?)] ; i.e. ""
[(bytevector) (check-constant-is? x bytevector?)] ; i.e. '#vu8()
[(fxvector) (check-constant-is? x fxvector?)] ; i.e. '#vfx()
[(flvector) (check-constant-is? x flvector?)] ; i.e. '#vfl()
[(ptr) #t]
[else #f])]
[else #f]))))

View File

@ -1430,7 +1430,7 @@
[(atomic box dot insert mark quote) (loop stack)]
[(lbrack record-brack)
(loop (cons (cons 'rbrack end) stack))]
[(lparen vfxnparen vfxparen vnparen vparen vu8nparen vu8paren)
[(lparen vfxnparen vfxparen vflnparen vflparen vnparen vparen vu8nparen vu8paren)
(loop (cons (cons 'rparen end) stack))]
[(rbrack rparen)
(if (= end (string-length s))
@ -1469,7 +1469,7 @@
[(atomic box dot insert mark quote) (loop stack)]
[(lbrack record-brack)
(loop (cons 'rbrack stack))]
[(lparen vfxnparen vfxparen vnparen vparen vu8nparen vu8paren)
[(lparen vfxnparen vfxparen vflnparen vflparen vnparen vparen vu8nparen vu8paren)
(loop (cons 'rparen stack))]
[(rbrack rparen)
(if (fx= (length stack) 1)
@ -1510,7 +1510,7 @@
(if (and (not (null? stack)) (eq? (caar stack) 'qubx))
(loop (cons (cons 'rbrack (cdar stack)) (cdr stack)) #f)
(loop (cons (cons 'rbrack start) stack) #f))]
[(lparen vfxnparen vfxparen vnparen vparen vu8nparen vu8paren)
[(lparen vfxnparen vfxparen vflnparen vflparen vnparen vparen vu8nparen vu8paren)
(if (and (not (null? stack)) (eq? (caar stack) 'qubx))
(loop (cons (cons 'rparen (cdar stack)) (cdr stack)) #f)
(loop (cons (cons 'rparen start) stack) #f))]
@ -1560,7 +1560,7 @@
(loop stack #f ignore?)]
[(eof fasl) #f]
[(lbrack record-brack) (loop (cons 'rbrack stack) #f ignore?)]
[(lparen vfxnparen vfxparen vnparen vparen vu8nparen vu8paren)
[(lparen vfxnparen vfxparen vflnparen vflparen vflnparen vflparen vnparen vparen vu8nparen vu8paren)
(loop (cons 'rparen stack) #f ignore?)]
[(rbrack rparen)
(and (not (null? stack))

View File

@ -208,7 +208,7 @@
[($record? x) (bld-graph x t a? d #t bld-record)]
[(box? x) (bld-graph x t a? d #t bld-box)]
[(or (large-integer? x) (ratnum? x) ($inexactnum? x) ($exactnum? x)
(fxvector? x) (bytevector? x))
(fxvector? x) (flvector? x) (bytevector? x))
(bld-graph x t a? d #t bld-simple)])))
(module (small-integer? large-integer?)
@ -323,9 +323,7 @@
(define wrf-fxvector
(lambda (x p t a?)
(put-u8 p (if (immutable-fxvector? x)
(constant fasl-type-immutable-fxvector)
(constant fasl-type-fxvector)))
(put-u8 p (constant fasl-type-fxvector))
(let ([n (fxvector-length x)])
(put-uptr p n)
(let wrf-fxvector-loop ([i 0])
@ -333,6 +331,16 @@
(put-iptr p (fxvector-ref x i))
(wrf-fxvector-loop (fx+ i 1)))))))
(define wrf-flvector
(lambda (x p t a?)
(put-u8 p (constant fasl-type-flvector))
(let ([n (flvector-length x)])
(put-uptr p n)
(let wrf-flvector-loop ([i 0])
(unless (fx= i n)
(wrf-flonum (flvector-ref x i) p)
(wrf-flvector-loop (fx+ i 1)))))))
(define wrf-bytevector
(lambda (x p t a?)
(put-u8 p (if (immutable-bytevector? x)
@ -629,6 +637,7 @@
[(eq? x #t) (wrf-immediate (constant strue) p)]
[(string? x) (wrf-graph x p t a? wrf-string)]
[(fxvector? x) (wrf-graph x p t a? wrf-fxvector)]
[(flvector? x) (wrf-graph x p t a? wrf-flvector)]
[(bytevector? x) (wrf-graph x p t a? wrf-bytevector)]
; this check must go before $record? check
[(annotation? x)

View File

@ -454,7 +454,7 @@
(up)
(case ((object) 'type)
[(pair) (ref-list n)]
[(continuation procedure vector fxvector bytevector string record
[(continuation procedure vector fxvector flvector bytevector string record
ftype-struct ftype-union ftype-array ftype-bits stencil-vector)
(ref n)]
[else (invalid-movement)]))))
@ -493,6 +493,7 @@
symbol-dispatch-table)]
[(vector) vector-dispatch-table]
[(fxvector) fxvector-dispatch-table]
[(flvector) flvector-dispatch-table]
[(bytevector) bytevector-dispatch-table]
[(stencil-vector) stencil-vector-dispatch-table]
[(record) record-dispatch-table]
@ -1002,6 +1003,27 @@
))
(define flvector-dispatch-table
(make-dispatch-table
[("length" . "l")
"display flvector length"
(() (show " ~d elements" ((object) 'length)))]
[("ref" . "r")
"inspect [nth] element"
(() (ref 0))
((n) (ref n))]
[("show" . "s")
"show [n] elements"
(() (display-refs ((object) 'length)))
((n)
(range-check n ((object) 'length))
(display-refs n))]
))
(define bytevector-dispatch-table
(make-dispatch-table
@ -1907,6 +1929,18 @@
[write (p) (write x p)]
[print (p) (pretty-print x p)]))
(define make-flvector-object
(make-object-maker flvector (x)
[value () x]
[length () (flvector-length x)]
[ref (i)
(unless (and (flonum? i) (fx< -1 i (flvector-length x)))
($oops 'flvector-object "invalid index ~s" i))
(make-object (flvector-ref x i))]
[size (g) (compute-size x g)]
[write (p) (write x p)]
[print (p) (pretty-print x p)]))
(define make-bytevector-object
(make-object-maker bytevector (x)
[value () x]
@ -2432,6 +2466,7 @@
[(symbol? x) (make-symbol-object x)]
[(vector? x) (make-vector-object x)]
[(fxvector? x) (make-fxvector-object x)]
[(flvector? x) (make-flvector-object x)]
[(bytevector? x) (make-bytevector-object x)]
[(stencil-vector? x) (make-stencil-vector-object x)]
; ftype-pointer? test must come before record? test
@ -2600,6 +2635,7 @@
(fx+ size (compute-size (vector-ref x i)))])
((fx= i n) size)))]
[(fxvector? x) (align (fx+ (constant header-size-fxvector) (fx* (fxvector-length x) (constant ptr-bytes))))]
[(flvector? x) (align (fx+ (constant header-size-flvector) (fx* (flvector-length x) (constant ptr-bytes))))]
[(bytevector? x) (align (fx+ (constant header-size-bytevector) (bytevector-length x)))]
[(stencil-vector? x)
(let ([n (stencil-vector-length x)])
@ -2743,7 +2779,7 @@
(vector-set! count-vec i (cons 1 size))))]
...))))])))
(define-counters (type-names type-counts incr!)
pair symbol vector fxvector bytevector stencil-vector string box flonum bignum ratnum exactnum
pair symbol vector fxvector flvector bytevector stencil-vector string box flonum bignum ratnum exactnum
inexactnum continuation stack procedure code-object reloc-table port thread tlc
rtd-counts phantom)
(define compute-composition!
@ -2772,6 +2808,7 @@
(incr! vector (align (fx+ (constant header-size-vector) (fx* (vector-length x) (constant ptr-bytes)))))
(vector-for-each compute-composition! x)]
[(fxvector? x) (incr! fxvector (align (fx+ (constant header-size-fxvector) (fx* (fxvector-length x) (constant ptr-bytes)))))]
[(flvector? x) (incr! flvector (align (fx+ (constant header-size-flvector) (fx* (flvector-length x) (constant ptr-bytes)))))]
[(bytevector? x) (incr! bytevector (align (fx+ (constant header-size-bytevector) (bytevector-length x))))]
[(stencil-vector? x)
(let ([len (stencil-vector-length x)])
@ -2965,7 +3002,7 @@
(if (eq? (fld-type fld) 'scheme-object)
(construct-proc ($object-ref 'scheme-object x (fld-byte fld)) (f (cdr flds)))
(f (cdr flds))))))]))))]
[(or (fxvector? x) (bytevector? x) (string? x) (flonum? x) (bignum? x)
[(or (fxvector? x) (flvector? x) (bytevector? x) (string? x) (flonum? x) (bignum? x)
($inexactnum? x) ($rtd-counts? x) (phantom-bytevector? x))
next-proc]
[(box? x) (construct-proc (unbox x) next-proc)]

View File

@ -287,9 +287,9 @@
(define fxvector-oops
(lambda (who x)
($oops who "~s is not an fxvector" x)))
(define mutable-fxvector-oops
(define flvector-oops
(lambda (who x)
($oops who "~s is not a mutable fxvector" x)))
($oops who "~s is not an flvector" x)))
(define bytevector-oops
(lambda (who x)
($oops who "~s is not a bytevector" x)))
@ -358,15 +358,30 @@
(fxvector-oops 'fxvector-ref v)))
(define-library-entry (fxvector-set! v i x)
(if (mutable-fxvector? v)
(if (fxvector? v)
(if (and (fixnum? i) ($fxu< i (fxvector-length v)))
(fixnum-oops 'fxvector-set! x)
(index-oops 'fxvector-set! v i))
(mutable-fxvector-oops 'fxvector-set! v)))
(fxvector-oops 'fxvector-set! v)))
(define-library-entry (fxvector-length v)
(fxvector-oops 'fxvector-length v))
(define-library-entry (flvector-ref v i)
(if (flvector? v)
(index-oops 'flvector-ref v i)
(flvector-oops 'flvector-ref v)))
(define-library-entry (flvector-set! v i x)
(if (flvector? v)
(if (and (fixnum? i) ($fxu< i (flvector-length v)))
($oops 'flvector-set! "~s is not a flonum" x)
(index-oops 'flvector-set! v i))
(flvector-oops 'flvector-set! v)))
(define-library-entry (flvector-length v)
(flvector-oops 'flvector-length v))
(define-library-entry (bytevector-s8-ref v i)
(if (bytevector? v)
(index-oops 'bytevector-s8-ref v i)

View File

@ -450,6 +450,15 @@
(copy-bytes fxvector-type sz)
(count countof-fxvector)]
[flvector
(space space-data)
(vspace vspace_data)
(define sz : uptr (size_flvector (Sflvector_length _)))
(size (just sz))
(mark)
(copy-bytes flvector-type sz)
(count countof-flvector)]
[bytevector
(space space-data)
(vspace vspace_data)
@ -1053,10 +1062,6 @@
(trace-pure (tc-target-machine tc))
(trace-pure (tc-fxlength-bv tc))
(trace-pure (tc-fxfirst-bit-set-bv tc))
(trace-pure (tc-null-immutable-vector tc))
(trace-pure (tc-null-immutable-fxvector tc))
(trace-pure (tc-null-immutable-bytevector tc))
(trace-pure (tc-null-immutable-string tc))
(trace-pure (tc-compile-profile tc))
(trace-pure (tc-subset-mode tc))
(trace-pure (tc-default-record-equal-procedure tc))

View File

@ -276,6 +276,7 @@
(deftotypep "Svectorp" ($ mask-vector) ($ type-vector))
(deftotypep "Sfxvectorp" ($ mask-fxvector) ($ type-fxvector))
(deftotypep "Sflvectorp" ($ mask-flvector) ($ type-flvector))
(deftotypep "Sbytevectorp" ($ mask-bytevector) ($ type-bytevector))
(deftotypep "Sstringp" ($ mask-string) ($ type-string))
(deftotypep "Sstencil_vectorp" ($ mask-stencil-vector) ($ type-stencil-vector))
@ -310,6 +311,12 @@
(access "x" fxvector type)
($ fxvector-length-offset)))
(defref Sfxvector_ref fxvector data)
(def "Sflvector_length(x)"
(format "((iptr)((uptr)~a>>~d))"
(access "x" flvector type)
($ flvector-length-offset)))
(defref Sflvector_ref flvector data)
(def "Sbytevector_length(x)"
(format "((iptr)((uptr)~a>>~d))"
@ -349,6 +356,7 @@
(format "((void)(~a = (string_char)(uptr)Schar(c)))"
(access "x" "i" string data)))
(def "Sfxvector_set(x,i,n)" "((void)(Sfxvector_ref(x,i) = (n)))")
(def "Sflvector_set(x,i,n)" "((void)(Sflvector_ref(x,i) = (n)))")
(def "Sbytevector_u8_set(x,i,n)" "((void)(Sbytevector_u8_ref(x,i) = (n)))")
(export "void" "Svector_set" "(ptr, iptr, ptr)")
@ -372,6 +380,7 @@
(export "ptr" "Sflonum" "(double)")
(export "ptr" "Smake_vector" "(iptr, ptr)")
(export "ptr" "Smake_fxvector" "(iptr, ptr)")
(export "ptr" "Smake_flvector" "(iptr, ptr)")
(export "ptr" "Smake_bytevector" "(iptr, int)")
(export "ptr" "Smake_string" "(iptr, int)")
(export "ptr" "Smake_uninitialized_string" "(iptr)")
@ -1005,6 +1014,9 @@
(defref FXVECTOR_TYPE fxvector type)
(defref FXVECTIT fxvector data)
(defref FLVECTOR_TYPE flvector type)
(defref FLVECTIT flvector data)
(defref BYTEVECTOR_TYPE bytevector type)
(defref BVIT bytevector data)

View File

@ -1047,22 +1047,25 @@ Documentation notes:
(lambda (x)
(define (f x hc i)
(let ([i (fx- i 1)])
(define-syntax (vector-hash stx)
(syntax-case stx ()
[(_ base vector-length vector-ref)
#'(let ([n (vector-length x)] [hc (update hc base)])
(if (fx= n 0)
(values hc i)
(let g ([j 0] [hc hc] [i i])
(if (or (fx= j n) (fx= i 0))
(values hc i)
(let ([i/2 (fxsrl (fx+ i 1) 1)])
(let-values ([(hc i^) (f (vector-ref x j) hc i/2)])
(g (fx+ j 1) hc (fx+ (fx- i i/2) i^))))))))]))
(cond
[(fx<= i 0) (values hc 0)]
[(pair? x)
(let ([i/2 (fxsrl (fx+ i 1) 1)])
(let-values ([(hc i^) (f (car x) (update hc 119001092) i/2)])
(f (cdr x) hc (fx+ (fx- i i/2) i^))))]
[(vector? x)
(let ([n (vector-length x)] [hc (update hc 513566316)])
(if (fx= n 0)
(values hc i)
(let g ([j 0] [hc hc] [i i])
(if (or (fx= j n) (fx= i 0))
(values hc i)
(let ([i/2 (fxsrl (fx+ i 1) 1)])
(let-values ([(hc i^) (f (vector-ref x j) hc i/2)])
(g (fx+ j 1) hc (fx+ (fx- i i/2) i^))))))))]
[(vector? x) (vector-hash 513566316 vector-length vector-ref)]
[(stencil-vector? x)
(let ([n (stencil-vector-length x)] [hc (update hc 517766377)])
(if (fx= n 0)
@ -1096,6 +1099,8 @@ Documentation notes:
sub-hc
(modulo (abs sub-hc) (greatest-fixnum))))])
(values hc new-i)))))]
[(fxvector? x) (vector-hash 513577316 fxvector-length fxvector-ref)]
[(flvector? x) (vector-hash 513599316 flvector-length flvector-ref)]
[else (values (update hc 120634730) i)])))
(let-values ([(hc i) (f x 523658599 64)])
(hcabs hc)))))

View File

@ -308,6 +308,17 @@
(make-prty `(read-macro ,s x)
(+ (string-length s) (prty-len p))
p))))]
[(flvector? x)
(let ([n (flvector-length x)])
(if (= n 0)
(if (print-vector-length)
(make-prty '() 4 "#0vfl()")
(make-prty '() 3 "#vfl()"))
(let ([p (mk-prty-vector flvector-length flvector-ref x lev len)]
[s (if (print-vector-length) (format "#~dvfl" n) "#vfl")])
(make-prty `(read-macro ,s x)
(+ (string-length s) (prty-len p))
p))))]
[(bytevector? x)
(let ([n (bytevector-length x)])
(if (= n 0)

View File

@ -1334,6 +1334,14 @@
(fl<= [sig [(flonum flonum ...) -> (boolean)]] [flags pure mifoldable discard safeongoodargs unboxed-arguments]) ; not restricted to 2+ arguments
(fl> [sig [(flonum flonum ...) -> (boolean)]] [flags pure mifoldable discard safeongoodargs unboxed-arguments]) ; not restricted to 2+ arguments
(fl>= [sig [(flonum flonum ...) -> (boolean)]] [flags pure mifoldable discard safeongoodargs unboxed-arguments]) ; not restricted to 2+ arguments
(flvector [sig [(flonum ...) -> (flvector)]] [flags alloc cp02 safeongoodargs])
(flvector->list [sig [(flvector) -> (list)]] [flags alloc safeongoodargs])
(flvector-copy [sig [(flvector) -> (flvector)]] [flags alloc safeongoodargs])
(flvector-fill! [sig [(flvector flonum) -> (void)]] [flags true])
(flvector-length [sig [(flvector) -> (length)]] [flags pure mifoldable discard true safeongoodargs])
(flvector-ref [sig [(flvector sub-index) -> (flonum)]] [flags mifoldable discard cp02])
(flvector-set! [sig [(flvector sub-index flonum) -> (void)]] [flags true])
(flvector? [sig [(ptr) -> (boolean)]] [flags pure unrestricted mifoldable discard])
(flush-output-port [sig [() (output-port) -> (void)]] [flags true]) ; not restricted to 1 argument
(foreign-entry? [sig [(string) -> (boolean)]] [flags discard])
(foreign-entry [sig [(string) -> (uptr)]] [flags discard true])
@ -1391,7 +1399,6 @@
(fxvector->list [sig [(fxvector) -> (list)]] [flags alloc safeongoodargs])
(fxvector-copy [sig [(fxvector) -> (fxvector)]] [flags alloc safeongoodargs])
(fxvector-fill! [sig [(fxvector fixnum) -> (void)]] [flags true])
(fxvector->immutable-fxvector [sig [(fxvector) -> (fxvector)]] [flags alloc safeongoodargs])
(fxvector-length [sig [(fxvector) -> (length)]] [flags pure mifoldable discard true safeongoodargs])
(fxvector-ref [sig [(fxvector sub-index) -> (fixnum)]] [flags mifoldable discard cp02])
(fxvector-set! [sig [(fxvector sub-index fixnum) -> (void)]] [flags true])
@ -1427,7 +1434,6 @@
(immutable-string? [sig [(ptr) -> (boolean)]] [flags pure unrestricted mifoldable discard])
(immutable-box? [sig [(ptr) -> (boolean)]] [flags pure unrestricted mifoldable discard])
(immutable-vector? [sig [(ptr) -> (boolean)]] [flags pure unrestricted mifoldable discard])
(immutable-fxvector? [sig [(ptr) -> (boolean)]] [flags pure unrestricted mifoldable discard])
(immutable-bytevector? [sig [(ptr) -> (boolean)]] [flags pure unrestricted mifoldable discard])
(initial-bytes-allocated [sig [() -> (uint)]] [flags unrestricted alloc])
(input-port-ready? [sig [(input-port) -> (boolean)]] [flags])
@ -1440,6 +1446,7 @@
(isqrt [sig [(uinteger) -> (integer)]] [flags arith-op mifoldable discard])
(last-pair [sig [(pair) -> ((ptr . ptr))]] [flags mifoldable discard])
(list* [sig [(ptr) -> (ptr)] [(ptr ptr ptr ...) -> ((ptr . ptr))]] [flags unrestricted discard cp02])
(list->flvector [sig [(sub-list) -> (flvector)]] [flags alloc])
(list->fxvector [sig [(sub-list) -> (fxvector)]] [flags alloc])
(list-assuming-immutable? [sig [(ptr) -> (boolean)]] [flags unrestricted mifoldable discard])
(list-copy [sig [(list) -> (list)]] [flags alloc])
@ -1477,6 +1484,7 @@
(make-ephemeron-eqv-hashtable [sig [() (uint) -> (hashtable)]] [flags alloc])
(make-engine [sig [(procedure) -> (engine)]] [flags pure alloc])
(make-format-condition [sig [() -> (condition)]] [flags pure unrestricted mifoldable discard])
(make-flvector [sig [(length) (length flonum) -> (flvector)]] [flags alloc])
(make-fxvector [sig [(length) (length fixnum) -> (fxvector)]] [flags alloc])
(make-guardian [sig [() (ptr) -> (procedure)]] [flags alloc cp02])
(make-hash-table [sig [() (ptr) -> (old-hash-table)]] [flags unrestricted alloc])
@ -1514,7 +1522,6 @@
(multibyte->string [feature windows] [sig [(sub-uint bytevector) -> (string)]] [flags true discard])
(mutable-box? [sig [(ptr) -> (boolean)]] [flags pure unrestricted mifoldable discard])
(mutable-string? [sig [(ptr) -> (boolean)]] [flags pure unrestricted mifoldable discard])
(mutable-fxvector? [sig [(ptr) -> (boolean)]] [flags pure unrestricted mifoldable discard])
(mutable-bytevector? [sig [(ptr) -> (boolean)]] [flags pure unrestricted mifoldable discard])
(mutable-vector? [sig [(ptr) -> (boolean)]] [flags pure unrestricted mifoldable discard])
(mutex-acquire [feature pthreads] [sig [(mutex) (mutex ptr) -> (ptr)]] [flags]) ; can return #f if optional block? arg is #f
@ -1940,6 +1947,8 @@
($filter-conv [flags single-valued])
($filter-foreign-type [flags single-valued])
($fixed-path? [sig [(string) -> (boolean)]] [flags pure safeongoodargs])
($flvector-ref-check? [sig [(ptr ptr) -> (boolean)]] [flags unrestricted pure])
($flvector-set!-check? [sig [(ptr ptr) -> (boolean)]] [flags unrestricted discard])
($<= [flags single-valued])
($< [flags single-valued])
($= [flags single-valued])
@ -2125,7 +2134,6 @@
($fxu< [flags single-valued pure cp02])
($fxvector-ref-check? [sig [(ptr ptr) -> (boolean)]] [flags unrestricted pure])
($fxvector-set!-check? [sig [(ptr ptr) -> (boolean)]] [flags unrestricted discard])
($fxvector-set-immutable! [sig [(fxvector) -> (void)]] [flags true])
($gc-cpu-time [flags true])
($gc-real-time [flags true])
($generation [flags single-valued])

View File

@ -286,6 +286,8 @@
"~s is not a character"))
(set! fxvector (frob-proc fxvector make-fxvector fxvector-set! fixnum?
"~s is not a fixnum"))
(set! flvector (frob-proc flvector make-flvector flvector-set! flonum?
"~s is not a flonum"))
(set! bytevector
(let ([fill? (lambda (k) (and (fixnum? k) (fx<= -128 k 255)))])
(frob-proc bytevector make-bytevector $bytevector-set! fill?
@ -360,6 +362,28 @@
($oops who "~s is not a valid fxvector length" n))
(make-fxvector n)]))
(define-who make-flvector
(case-lambda
[(n x)
(unless (and (fixnum? n) (not ($fxu< (constant maximum-flvector-length) n)))
($oops who "~s is not a valid flvector length" n))
(unless (flonum? x)
($oops who "~s is not a flonum" x))
(if (eqv? x 0.0)
(make-flvector n)
;; Room for improvement: vector is filled with 0.0, then with `x`:
(let ([flv (make-flvector n)])
(let loop ([i 0])
(if (fx= i n)
flv
(begin
(flvector-set! flv i x)
(loop (fx+ i 1)))))))]
[(n)
(unless (and (fixnum? n) (not ($fxu< (constant maximum-flvector-length) n)))
($oops who "~s is not a valid flvector length" n))
(make-flvector n)]))
(define string-fill!
(lambda (s c)
(unless (mutable-string? s)
@ -370,12 +394,24 @@
(define fxvector-fill!
(lambda (v n)
(unless (mutable-fxvector? v)
($oops 'fxvector-fill! "~s is not a mutable fxvector" v))
(unless (fxvector? v)
($oops 'fxvector-fill! "~s is not a fxvector" v))
(unless (fixnum? n)
($oops 'fxvector-fill! "~s is not a fixnum" n))
($oops 'fxvector-fill! "~s is not a fixnum" n))
(fxvector-fill! v n)))
(define flvector-fill!
(lambda (v x)
(unless (flvector? v)
($oops 'flvector-fill! "~s is not a flvector" v))
(unless (flonum? x)
($oops 'flvector-fill! "~s is not a flonum" x))
(let ([n (flvector-length v)])
(let loop ([i 0])
(unless (fx= i n)
(flvector-set! v i x)
(loop (fx+ i 1)))))))
;;; multiple return values stuff
(define values ($hand-coded 'values-procedure))
@ -700,6 +736,9 @@
(define $fxvector-ref-check? (lambda (v i) ($fxvector-ref-check? v i)))
(define $fxvector-set!-check? (lambda (v i) ($fxvector-set!-check? v i)))
(define $flvector-ref-check? (lambda (v i) ($flvector-ref-check? v i)))
(define $flvector-set!-check? (lambda (v i) ($flvector-set!-check? v i)))
(define $ratio-numerator
(lambda (q)
(if (ratnum? q)
@ -1272,19 +1311,17 @@
(lambda (v i x)
(#2%fxvector-set! v i x)))
(define-who $fxvector-set-immutable!
(lambda (s)
(unless (fxvector? s)
($oops who "~s is not a fxvector" s))
(#3%$fxvector-set-immutable! s)))
(define flvector-length
(lambda (v)
(#2%flvector-length v)))
(define mutable-fxvector?
(lambda (s)
(#3%mutable-fxvector? s)))
(define flvector-ref
(lambda (v i)
(#2%flvector-ref v i)))
(define immutable-fxvector?
(lambda (s)
(#3%immutable-fxvector? s)))
(define flvector-set!
(lambda (v i x)
(#2%flvector-set! v i x)))
(define stencil-vector-mask
(lambda (v)
@ -1386,6 +1423,8 @@
(define fxvector? (lambda (x) (fxvector? x)))
(define flvector? (lambda (x) (flvector? x)))
(define stencil-vector? (lambda (x) (stencil-vector? x)))
(define procedure? (lambda (x) (procedure? x)))

View File

@ -105,6 +105,7 @@
(box? x)
(and ($record? x) (not (eq? x #!base-rtd)))
(fxvector? x)
(flvector? x)
(string? x)
(bytevector? x)
(gensym? x))))))
@ -679,6 +680,7 @@ floating point returns with (1 0 -1 ...).
(string-append "stencil[" (number->string (stencil-vector-mask x) 16) "]")
x r lev len d? env p)]
[(fxvector?) (wrvector fxvector-length fxvector-ref "vfx" x r lev len d? env p)]
[(flvector?) (wrvector flvector-length flvector-ref "vfl" x r lev len d? env p)]
[(bytevector?) (wrvector bytevector-length bytevector-u8-ref "vu8" x r lev len d? env p)]
[(flonum?) (wrflonum #f x r d? p)]
; catch before record? case

View File

@ -732,6 +732,7 @@
[#\( ;)
(cond
[(string=? s "fx") (nonstandard "#vfx(...) fxvector") (state-return vfxparen #f)]
[(string=? s "fl") (nonstandard "#vfl(...) flvector") (state-return vflparen #f)]
[(string=? s "u8") (state-return vu8paren #f)]
[else (xcall rd-error #f #t "invalid syntax #v~a(" s)])] ;)
[else
@ -753,6 +754,7 @@
[#\( ;)
(cond
[(string=? s "fx") (nonstandard "#<n>vfx(...) fxvector") (state-return vfxnparen nelts)]
[(string=? s "fl") (nonstandard "#<n>vfl(...) flvector") (state-return vflnparen nelts)]
[(string=? s "u8") (nonstandard "#<n>vu8(...) bytevector") (state-return vu8nparen nelts)]
[else (xcall rd-error #f #t "invalid syntax #~v,'0dv~a(" (- preflen 1) nelts s)])] ;)
[else
@ -1178,6 +1180,8 @@
[(vnparen) (xcall rd-sized-vector value)]
[(vfxparen) (xmvlet ((v) (xcall rd-fxvector bfp 0)) (xvalues v v))]
[(vfxnparen) (xmvlet ((v) (xcall rd-sized-fxvector value)) (xvalues v v))]
[(vflparen) (xmvlet ((v) (xcall rd-flvector bfp 0)) (xvalues v v))]
[(vflnparen) (xmvlet ((v) (xcall rd-sized-flvector value)) (xvalues v v))]
[(vu8paren) (xmvlet ((v) (xcall rd-bytevector bfp 0)) (xvalues v v))]
[(vu8nparen) (xmvlet ((v) (xcall rd-sized-bytevector value)) (xvalues v v))]
[(box) (xcall rd-box)]
@ -1434,6 +1438,48 @@
(fxvector-set! v i value)
(xcall rd-fill-fxvector expr-bfp v (fx+ i 1) n)])))
;; an flvector contains a sequence of flonum tokens. we don't handle
;; graph marks and references because to do so generally, we'd have to
;; put non-flonums (insert records) into the flonum or perhaps
;; somehow generalize delayed records to handle flonums
(xdefine (rd-flvector expr-bfp i)
(with-token (type value)
(case type
[(rparen) (xvalues (make-flvector i))]
[(eof) (let ([bfp expr-bfp]) (xcall rd-eof-error "flvector"))]
[else
(unless (and (eq? type 'atomic) (flonum? value))
(xcall rd-error #f #t "non-fixnum found in flvector"))
(xmvlet ((v) (xcall rd-flvector expr-bfp (fx+ i 1)))
(flvector-set! v i value)
(xvalues v))])))
(xdefine (rd-sized-flvector n)
(unless (and (fixnum? n) (fxnonnegative? n))
(let ([bfp (and bfp (+ bfp 1))] [fp (and fp (- fp 1))])
(xcall rd-error #f #t "invalid flvector length ~s" n)))
(xcall rd-fill-flvector bfp (make-flvector n) 0 n))
(xdefine (rd-fill-flvector expr-bfp v i n)
(with-token (type value)
(case type
[(rparen)
(when (fx< 0 i n)
(let ((prev (flvector-ref v (fx- i 1))))
(do ([i i (fx+ i 1)])
((fx= i n))
(flvector-set! v i prev))))
(xvalues v)]
[(eof) (let ([bfp expr-bfp]) (xcall rd-eof-error "flvector"))]
[else
(unless (and (eq? type 'atomic) (flonum? value))
(xcall rd-error #f #t "non-fixnum found in flvector"))
(unless (fx< i n)
(let ([bfp expr-bfp])
(xcall rd-error #f #t "too many flvector elements supplied")))
(flvector-set! v i value)
(xcall rd-fill-flvector expr-bfp v (fx+ i 1) n)])))
;; a bytevector contains a sequence of fixnum tokens. we don't handle
;; graph marks and references because to do so generally, we'd have to
;; put non-fixnums (insert records) into the bytevector or perhaps

View File

@ -26,7 +26,8 @@
(string ty string)
(gensym pname uname)
(vector ty vfasl)
(fxvector ty viptr)
(fxvector viptr)
(flvector vfl)
(bytevector ty bv)
(record maybe-uid size nflds rtd pad-ty* fld*) ; maybe-uid => rtd
(closure offset c)
@ -219,14 +220,19 @@
(let ([first (read-fasl p g)])
(fasl-tuple ty (vector first (read-fasl p g))))]
[(fasl-type-vector fasl-type-immutable-vector) (fasl-vector ty (read-vfasl p g (read-uptr p)))]
[(fasl-type-fxvector fasl-type-immutable-fxvector)
[(fasl-type-fxvector)
(fasl-fxvector
ty
(let ([n (read-uptr p)])
(let ([v (make-vector n)])
(do ([i 0 (fx+ i 1)])
((fx= i n) v)
(vector-set! v i (read-iptr p))))))]
[(fasl-type-flvector)
(let ([n (read-uptr p)])
(let ([vfl (make-vector n)])
(do ([i 0 (fx+ i 1)])
((fx= i n) vfl)
(vector-set! vfl i (read-fasl p g)))))]
[(fasl-type-bytevector fasl-type-immutable-bytevector)
(fasl-bytevector ty (read-bytevector p (read-uptr p)))]
[(fasl-type-base-rtd) (fasl-tuple ty '#())]
@ -419,7 +425,8 @@
[string (ty string) (build-graph! x t void)]
[gensym (pname uname) (build-graph! x t void)]
[vector (ty vfasl) (build-graph! x t (build-vfasl! vfasl))]
[fxvector (ty viptr) (build-graph! x t void)]
[fxvector (viptr) (build-graph! x t void)]
[flvector (vfl) (build-graph! x t void)]
[bytevector (ty viptr) (build-graph! x t void)]
[record (maybe-uid size nflds rtd pad-ty* fld*)
(if (and strip-source-annotations? (fasl-annotation? x))
@ -533,12 +540,18 @@
(put-u8 p ty)
(put-uptr p (vector-length vfasl))
(vector-for-each (lambda (fasl) (write-fasl p t fasl)) vfasl)))]
[fxvector (ty viptr)
[fxvector (viptr)
(write-graph p t x
(lambda ()
(put-u8 p ty)
(put-u8 p (constant fasl-type-fxvector))
(put-uptr p (vector-length viptr))
(vector-for-each (lambda (iptr) (put-iptr p iptr)) viptr)))]
[flvector (vfl)
(write-graph p t x
(lambda ()
(put-u8 p (constant fasl-type-flvector))
(put-uptr p (vector-length vfl))
(vector-for-each (lambda (x) (write-fasl p t x)) vfl)))]
[bytevector (ty bv)
(write-graph p t x
(lambda ()
@ -786,7 +799,8 @@
(hashtable-set! gensym-table uname1 uname2)
(string=? x uname2))))]
[vector (ty vfasl) (and (eqv? ty1 ty2) (vandmap fasl=? vfasl1 vfasl2))]
[fxvector (ty viptr) (and (eqv? ty1 ty2) (vandmap = viptr1 viptr2))]
[fxvector (viptr) (vandmap = viptr1 viptr2)]
[flvector (vfl) (vandmap fasl=? vfl1 vfl2)]
[bytevector (ty bv) (and (eqv? ty1 ty2) (bytevector=? bv1 bv2))]
[record (maybe-uid size nflds rtd pad-ty* fld*)
(and (if maybe-uid1

View File

@ -46,7 +46,8 @@
bitwise-and
bitwise-not
fllog flatan
fxquotient)
fxquotient
make-flvector flvector-copy)
[make-parameter chez:make-parameter]
[date-second chez:date-second]
[date-minute chez:date-minute]

View File

@ -429,12 +429,7 @@
[inline:set-mcar! set-mcar!]
[inline:set-mcdr! set-mcdr!])
flvector?
(rename [new-flvector flvector])
make-flvector
flvector-length
flvector-ref
flvector-set!
flvector-copy
shared-flvector
make-shared-flvector
@ -833,7 +828,6 @@
(set-impersonator-applicables!)
(set-mpair-hash!)
(set-hash-hash!)
(set-flvector-hash!)
(set-extflonum-print!)
(set-impersonator-hash!)
(set-procedure-impersonator-hash!)

View File

@ -1,116 +1,35 @@
(define-record-type (flvector create-flvector flvector?)
(fields bstr))
(define (flvector=? a b eql?)
(bytevector=? (flvector-bstr a) (flvector-bstr b)))
(define (flvector-hash-code a hc)
(hc (flvector-bstr a)))
(define (do-flvector who xs)
(let ([bstr (make-bytevector (* 8 (length xs)))])
(let loop ([xs xs] [i 0])
(unless (null? xs)
(let ([x (car xs)])
(check who flonum? x)
(bytevector-ieee-double-set! bstr i x (native-endianness))
(loop (cdr xs) (fx+ i 8)))))
(create-flvector bstr)))
(define new-flvector
(let ([flvector
(lambda xs
(do-flvector 'flvector xs))])
flvector))
(define (do-make-flvector who size init)
(check who exact-nonnegative-integer? size)
(cond
[(eqv? init 0.0)
;; 0-fill bytevector => 0.0-fill flvector
(create-flvector (make-bytevector (bitwise-arithmetic-shift-left size 3) 0))]
[else
(check who flonum? init)
(let* ([bsize (* 8 size)]
[bstr (make-bytevector bsize)])
(let loop ([i 0])
(unless (= i bsize)
(bytevector-ieee-double-set! bstr i init (native-endianness))
(loop (fx+ i 8))))
(create-flvector bstr))]))
(define make-flvector
(define/who make-flvector
(case-lambda
[(size) (make-flvector size 0.0)]
[(size init) (do-make-flvector 'make-flvector size init)]))
(define/who (flvector-length flvec)
(check who flvector? flvec)
(bitwise-arithmetic-shift-right (bytevector-length (flvector-bstr flvec)) 3))
(define (unsafe-flvector-length flvec)
(#3%fxsrl (#3%bytevector-length (flvector-bstr flvec)) 3))
(define/who (flvector-ref flvec pos)
(check who flvector? flvec)
(let ([len (bitwise-arithmetic-shift-right (bytevector-length (flvector-bstr flvec)) 3)])
(check who exact-nonnegative-integer? pos)
(unless (and (>= pos 0)
(< pos len))
(raise-range-error who "flvector" "" pos flvec 0 len)))
(bytevector-ieee-double-native-ref (flvector-bstr flvec)
(bitwise-arithmetic-shift-left pos 3)))
(define (unsafe-flvector-ref flvec pos)
(#3%bytevector-ieee-double-native-ref (flvector-bstr flvec)
(#3%fxsll pos 3)))
(define/who (flvector-set! flvec pos val)
(check who flvector? flvec)
(let ([len (bitwise-arithmetic-shift-right (bytevector-length (flvector-bstr flvec)) 3)])
(check who exact-nonnegative-integer? pos)
(unless (and (>= pos 0)
(< pos len))
(raise-range-error who "flvector" "" pos flvec 0 len)))
(check who flonum? val)
(bytevector-ieee-double-native-set! (flvector-bstr flvec)
(bitwise-arithmetic-shift-left pos 3)
val))
(define (unsafe-flvector-set! flvec pos val)
(#3%bytevector-ieee-double-native-set! (flvector-bstr flvec)
(#3%fxsll pos 3)
val))
[(n) (make-flvector n 0.0)]
[(n v)
(unless (and (fixnum? n)
(fx< n 1000))
(guard-large-allocation who 'flvector n (foreign-sizeof 'double)))
(#2%make-flvector n v)]))
(define/who flvector-copy
(case-lambda
[(flvec) (flvector-copy flvec 0 (flvector-length flvec))]
[(flvec) (#%flvector-copy flvec)]
[(flvec start) (flvector-copy flvec start (flvector-length flvec))]
[(flvec start end)
(check who flvector? flvec)
(let ([len (bitwise-arithmetic-shift-right (bytevector-length (flvector-bstr flvec)) 3)])
(let ([len (flvector-length flvec)])
(check who exact-nonnegative-integer? start)
(check who exact-nonnegative-integer? end)
(check-range who "flvector" flvec start end len)
(let* ([new-len (bitwise-arithmetic-shift-left (- end start) 3)]
[bstr (make-bytevector new-len)])
(bytes-copy! bstr 0 (flvector-bstr flvec) (bitwise-arithmetic-shift-left start 3) new-len)
(create-flvector bstr)))]))
(let* ([new-len (fx- end start)]
[new-flvec (make-flvector new-len)])
(let loop ([i 0])
(unless (fx= i new-len)
(flvector-set! new-flvec i (flvector-ref flvec (fx+ i start)))
(loop (fx+ i 1))))
new-flvec))]))
(define/who (shared-flvector . xs)
(register-place-shared (do-flvector who xs)))
(register-place-shared (apply flvector xs)))
(define make-shared-flvector
(case-lambda
[(size) (make-shared-flvector size 0.0)]
[(size init)
(register-place-shared (do-make-flvector 'make-shared-flvector size init))]))
;; ----------------------------------------
(define (set-flvector-hash!)
(record-type-equal-procedure (record-type-descriptor flvector)
flvector=?)
(record-type-hash-procedure (record-type-descriptor flvector)
flvector-hash-code))
(register-place-shared (make-flvector size init))]))

View File

@ -140,6 +140,9 @@
(define (vector->addr bv) ; call with GC disabled or locked object
(#%$object-address bv vector-content-offset))
(define (flvector->addr bv) ; call with GC disabled or locked object
(#%$object-address bv flvector-content-offset))
;; Convert a raw foreign address to a Scheme value on the
;; assumption that the address is the payload of a byte
;; string:
@ -187,7 +190,8 @@
(cond
[(integer? memory) memory]
[(bytes? memory) (bytevector->addr memory)]
[(vector? memory) (vector->addr memory)] ; used for immobile cells
[(#%vector? memory) (vector->addr memory)] ; used for immobile cells
[(flvector? memory) (flvector->addr memory)]
[else (object->addr memory)]))
;; ----------------------------------------
@ -206,6 +210,7 @@
(or (eqv? v 0)
(bytes? v)
(#%vector? v)
(flvector? v)
(exact-nonnegative-integer? v)))
;; ----------------------------------------
@ -729,7 +734,8 @@
(and (authentic-cpointer? p)
(let ([memory (cpointer-memory p)])
(or (bytes? memory)
(#%vector? memory)))))))
(#%vector? memory)
(flvector? memory)))))))
;; ----------------------------------------
@ -1472,7 +1478,7 @@
(make-cpointer vec #f))
(define (flvector->cpointer flvec)
(make-cpointer (flvector-bstr flvec) #f))
(make-cpointer flvec #f))
;; ----------------------------------------

View File

@ -132,6 +132,8 @@
[(symbol? x) (values (+/fx hc (symbol-hash x)) burn)]
[(string? x) (values (+/fx hc (string-hash x)) burn)]
[(bytevector? x) (values (+/fx hc (equal-hash x)) burn)]
[(fxvector? x) (values (+/fx hc (equal-hash x)) burn)]
[(flvector? x) (values (+/fx hc (equal-hash x)) burn)]
[(box? x) (equal-hash-loop (unbox x) (fx+ burn 1) (+/fx hc 1))]
[(pair? x)
(let-values ([(hc0 burn) (equal-hash-loop (car x) (fx+ burn 2) 0)])

View File

@ -1,4 +1,5 @@
;; HACK: hardwired numbers that depend on the tagging regime
;; and other representation details
(define bytevector-content-offset 9)
(define flvector-content-offset 9)
(define vector-content-offset (if (> (fixnum-width) 32) 9 5))

View File

@ -107,6 +107,10 @@
(define unsafe-fxvector-ref (unsafe-primitive fxvector-ref))
(define unsafe-fxvector-set! (unsafe-primitive fxvector-set!))
(define unsafe-flvector-length (unsafe-primitive flvector-length))
(define unsafe-flvector-ref (unsafe-primitive flvector-ref))
(define unsafe-flvector-set! (unsafe-primitive flvector-set!))
(define (unsafe-s16vector-ref s16 k)
(let* ([cptr (unsafe-struct*-ref s16 0)]
[mem (cpointer-memory cptr)]

View File

@ -16,7 +16,7 @@
#define MZSCHEME_VERSION_X 7
#define MZSCHEME_VERSION_Y 9
#define MZSCHEME_VERSION_Z 0
#define MZSCHEME_VERSION_W 3
#define MZSCHEME_VERSION_W 4
/* A level of indirection makes `#` work as needed: */
#define AS_a_STR_HELPER(x) #x