add `unsafe-cons-pair'

Also, make `list?' more optimistic about checking is  the "is list?"
flag on a pair.
This commit is contained in:
Matthew Flatt 2012-11-13 10:23:04 -07:00
parent 9e3f9fbe3e
commit 5400b41bce
19 changed files with 241 additions and 142 deletions

View File

@ -192,6 +192,12 @@ Unsafe variants of @racket[car], @racket[cdr], @racket[mcar],
@racket[mcdr], @racket[set-mcar!], and @racket[set-mcdr!].} @racket[mcdr], @racket[set-mcar!], and @racket[set-mcdr!].}
@defproc[(unsafe-cons [v any/c] [rest list?]) (and/c pair? list?)]{
Unsafe variant of @racket[cons] that produces a pair that claims to be
a list---without checking whether @racket[rest] is a list.}
@deftogether[( @deftogether[(
@defproc[(unsafe-list-ref [lst pair?] [pos (and/c exact-nonnegative-integer? fixnum?)]) any/c] @defproc[(unsafe-list-ref [lst pair?] [pos (and/c exact-nonnegative-integer? fixnum?)]) any/c]
@defproc[(unsafe-list-tail [lst any/c] [pos (and/c exact-nonnegative-integer? fixnum?)]) any/c] @defproc[(unsafe-list-tail [lst any/c] [pos (and/c exact-nonnegative-integer? fixnum?)]) any/c]

View File

@ -1,3 +1,6 @@
Version 5.3.1.6
racket/unsafe/ops: added unsafe-cons-list
Version 5.3.1.5 Version 5.3.1.5
racket/gui: added get-current-mouse-state racket/gui: added get-current-mouse-state

View File

@ -271,6 +271,7 @@ EXPORTS
scheme_prim_is_method scheme_prim_is_method
scheme_make_pair scheme_make_pair
scheme_make_mutable_pair scheme_make_mutable_pair
scheme_make_list_pair
scheme_make_raw_pair scheme_make_raw_pair
scheme_make_byte_string scheme_make_byte_string
scheme_make_sized_byte_string scheme_make_sized_byte_string

View File

@ -286,6 +286,7 @@ EXPORTS
scheme_prim_is_method scheme_prim_is_method
scheme_make_pair scheme_make_pair
scheme_make_mutable_pair scheme_make_mutable_pair
scheme_make_list_pair
scheme_make_raw_pair scheme_make_raw_pair
scheme_make_byte_string scheme_make_byte_string
scheme_make_sized_byte_string scheme_make_sized_byte_string

View File

@ -288,6 +288,7 @@ scheme_make_closed_prim_w_everything
scheme_prim_is_method scheme_prim_is_method
scheme_make_pair scheme_make_pair
scheme_make_mutable_pair scheme_make_mutable_pair
scheme_make_list_pair
scheme_make_raw_pair scheme_make_raw_pair
scheme_make_byte_string scheme_make_byte_string
scheme_make_sized_byte_string scheme_make_sized_byte_string

View File

@ -294,6 +294,7 @@ scheme_make_closed_prim_w_everything
scheme_prim_is_method scheme_prim_is_method
scheme_make_pair scheme_make_pair
scheme_make_mutable_pair scheme_make_mutable_pair
scheme_make_list_pair
scheme_make_raw_pair scheme_make_raw_pair
scheme_make_byte_string scheme_make_byte_string
scheme_make_sized_byte_string scheme_make_sized_byte_string

View File

@ -1,5 +1,5 @@
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,53,84,0,0,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,54,84,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,14,0, 0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,14,0,
21,0,28,0,33,0,37,0,40,0,45,0,58,0,62,0,67,0,74,0,83, 21,0,28,0,33,0,37,0,40,0,45,0,58,0,62,0,67,0,74,0,83,
0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149,0, 0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149,0,
@ -27,32 +27,32 @@
248,22,106,201,27,248,22,163,4,195,249,22,156,4,80,158,39,36,251,22,89, 248,22,106,201,27,248,22,163,4,195,249,22,156,4,80,158,39,36,251,22,89,
2,18,248,22,104,199,249,22,79,2,19,248,22,106,201,12,27,248,22,81,248, 2,18,248,22,104,199,249,22,79,2,19,248,22,106,201,12,27,248,22,81,248,
22,163,4,196,28,248,22,87,193,20,14,159,37,36,37,28,248,22,87,248,22, 22,163,4,196,28,248,22,87,193,20,14,159,37,36,37,28,248,22,87,248,22,
81,194,248,22,163,17,193,249,22,156,4,80,158,39,36,251,22,89,2,18,248, 81,194,248,22,164,17,193,249,22,156,4,80,158,39,36,251,22,89,2,18,248,
22,163,17,199,249,22,79,2,6,248,22,164,17,201,11,18,100,10,13,16,6, 22,164,17,199,249,22,79,2,6,248,22,165,17,201,11,18,100,10,13,16,6,
36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2, 36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2,
20,3,1,8,101,110,118,49,55,51,51,57,16,4,11,11,2,21,3,1,8, 20,3,1,8,101,110,118,49,55,51,51,57,16,4,11,11,2,21,3,1,8,
101,110,118,49,55,51,52,48,27,248,22,81,248,22,163,4,196,28,248,22,87, 101,110,118,49,55,51,52,48,27,248,22,81,248,22,163,4,196,28,248,22,87,
193,20,14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,163,17,193,249, 193,20,14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,164,17,193,249,
22,156,4,80,158,39,36,250,22,89,2,22,248,22,89,249,22,89,248,22,89, 22,156,4,80,158,39,36,250,22,89,2,22,248,22,89,249,22,89,248,22,89,
2,23,248,22,163,17,201,251,22,89,2,18,2,23,2,23,249,22,79,2,7, 2,23,248,22,164,17,201,251,22,89,2,18,2,23,2,23,249,22,79,2,7,
248,22,164,17,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32, 248,22,165,17,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32,
8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55,51, 8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55,51,
52,50,16,4,11,11,2,21,3,1,8,101,110,118,49,55,51,52,51,248,22, 52,50,16,4,11,11,2,21,3,1,8,101,110,118,49,55,51,52,51,248,22,
163,4,193,27,248,22,163,4,194,249,22,79,248,22,89,248,22,80,196,248,22, 163,4,193,27,248,22,163,4,194,249,22,79,248,22,89,248,22,80,196,248,22,
164,17,195,27,248,22,81,248,22,163,4,23,197,1,249,22,156,4,80,158,39, 165,17,195,27,248,22,81,248,22,163,4,23,197,1,249,22,156,4,80,158,39,
36,28,248,22,64,248,22,157,4,248,22,80,23,198,2,27,249,22,2,32,0, 36,28,248,22,64,248,22,157,4,248,22,80,23,198,2,27,249,22,2,32,0,
88,163,8,36,37,43,11,9,222,33,40,248,22,163,4,248,22,104,23,200,2, 88,163,8,36,37,43,11,9,222,33,40,248,22,163,4,248,22,104,23,200,2,
250,22,89,2,24,248,22,89,249,22,89,248,22,89,248,22,163,17,23,204,2, 250,22,89,2,24,248,22,89,249,22,89,248,22,89,248,22,164,17,23,204,2,
250,22,90,2,25,249,22,2,22,80,23,204,2,248,22,106,23,206,2,249,22, 250,22,90,2,25,249,22,2,22,80,23,204,2,248,22,106,23,206,2,249,22,
79,248,22,163,17,23,202,1,249,22,2,22,104,23,200,1,250,22,90,2,22, 79,248,22,164,17,23,202,1,249,22,2,22,104,23,200,1,250,22,90,2,22,
249,22,2,32,0,88,163,8,36,37,47,11,9,222,33,41,248,22,163,4,248, 249,22,2,32,0,88,163,8,36,37,47,11,9,222,33,41,248,22,163,4,248,
22,163,17,201,248,22,164,17,198,27,248,22,163,4,194,249,22,79,248,22,89, 22,164,17,201,248,22,165,17,198,27,248,22,163,4,194,249,22,79,248,22,89,
248,22,80,196,248,22,164,17,195,27,248,22,81,248,22,163,4,23,197,1,249, 248,22,80,196,248,22,165,17,195,27,248,22,81,248,22,163,4,23,197,1,249,
22,156,4,80,158,39,36,250,22,90,2,24,249,22,2,32,0,88,163,8,36, 22,156,4,80,158,39,36,250,22,90,2,24,249,22,2,32,0,88,163,8,36,
37,47,11,9,222,33,43,248,22,163,4,248,22,80,201,248,22,164,17,198,27, 37,47,11,9,222,33,43,248,22,163,4,248,22,80,201,248,22,165,17,198,27,
248,22,81,248,22,163,4,196,27,248,22,163,4,248,22,80,195,249,22,156,4, 248,22,81,248,22,163,4,196,27,248,22,163,4,248,22,80,195,249,22,156,4,
80,158,40,36,28,248,22,87,195,250,22,90,2,22,9,248,22,81,199,250,22, 80,158,40,36,28,248,22,87,195,250,22,90,2,22,9,248,22,81,199,250,22,
89,2,10,248,22,89,248,22,80,199,250,22,90,2,5,248,22,164,17,201,248, 89,2,10,248,22,89,248,22,80,199,250,22,90,2,5,248,22,165,17,201,248,
22,81,202,27,248,22,81,248,22,163,4,23,197,1,27,249,22,1,22,93,249, 22,81,202,27,248,22,81,248,22,163,4,23,197,1,27,249,22,1,22,93,249,
22,2,22,163,4,248,22,163,4,248,22,80,199,248,22,183,4,249,22,156,4, 22,2,22,163,4,248,22,163,4,248,22,80,199,248,22,183,4,249,22,156,4,
80,158,41,36,251,22,89,1,22,119,105,116,104,45,99,111,110,116,105,110,117, 80,158,41,36,251,22,89,1,22,119,105,116,104,45,99,111,110,116,105,110,117,
@ -65,15 +65,15 @@
9,62,61,62,248,22,157,4,248,22,104,196,250,22,89,2,22,248,22,89,249, 9,62,61,62,248,22,157,4,248,22,104,196,250,22,89,2,22,248,22,89,249,
22,89,21,93,2,27,248,22,80,199,250,22,90,2,11,249,22,89,2,27,249, 22,89,21,93,2,27,248,22,80,199,250,22,90,2,11,249,22,89,2,27,249,
22,89,248,22,113,203,2,27,248,22,81,202,251,22,89,2,18,28,249,22,152, 22,89,248,22,113,203,2,27,248,22,81,202,251,22,89,2,18,28,249,22,152,
9,248,22,157,4,248,22,80,200,64,101,108,115,101,10,248,22,163,17,197,250, 9,248,22,157,4,248,22,80,200,64,101,108,115,101,10,248,22,164,17,197,250,
22,90,2,22,9,248,22,164,17,200,249,22,79,2,11,248,22,81,202,99,13, 22,90,2,22,9,248,22,165,17,200,249,22,79,2,11,248,22,81,202,99,13,
16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11, 16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,
11,2,20,3,1,8,101,110,118,49,55,51,54,53,16,4,11,11,2,21,3, 11,2,20,3,1,8,101,110,118,49,55,51,54,53,16,4,11,11,2,21,3,
1,8,101,110,118,49,55,51,54,54,18,158,94,10,64,118,111,105,100,8,48, 1,8,101,110,118,49,55,51,54,54,18,158,94,10,64,118,111,105,100,8,48,
27,248,22,81,248,22,163,4,196,249,22,156,4,80,158,39,36,28,248,22,64, 27,248,22,81,248,22,163,4,196,249,22,156,4,80,158,39,36,28,248,22,64,
248,22,157,4,248,22,80,197,250,22,89,2,28,248,22,89,248,22,163,17,199, 248,22,157,4,248,22,80,197,250,22,89,2,28,248,22,89,248,22,164,17,199,
248,22,104,198,27,248,22,157,4,248,22,163,17,197,250,22,89,2,28,248,22, 248,22,104,198,27,248,22,157,4,248,22,164,17,197,250,22,89,2,28,248,22,
89,248,22,80,197,250,22,90,2,25,248,22,164,17,199,248,22,164,17,202,159, 89,248,22,80,197,250,22,90,2,25,248,22,165,17,199,248,22,165,17,202,159,
36,20,113,159,36,16,1,11,16,0,20,26,149,9,2,1,2,1,2,2,9, 36,20,113,159,36,16,1,11,16,0,20,26,149,9,2,1,2,1,2,2,9,
9,11,11,11,10,36,80,158,36,36,20,113,159,36,16,0,16,0,38,39,36, 9,11,11,11,10,36,80,158,36,36,20,113,159,36,16,0,16,0,38,39,36,
16,0,36,16,0,36,11,11,11,16,10,2,3,2,4,2,5,2,6,2,7, 16,0,36,16,0,36,11,11,11,16,10,2,3,2,4,2,5,2,6,2,7,
@ -100,7 +100,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 2048); EVAL_ONE_SIZED_STR((char *)expr, 2048);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,53,84,0,0,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,54,84,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,126,0,0,0,1,0,0,8,0,21,0, 0,0,0,0,0,0,0,0,0,0,126,0,0,0,1,0,0,8,0,21,0,
26,0,43,0,55,0,77,0,106,0,121,0,139,0,151,0,167,0,181,0,203, 26,0,43,0,55,0,77,0,106,0,121,0,139,0,151,0,167,0,181,0,203,
0,219,0,236,0,2,1,13,1,19,1,28,1,35,1,42,1,54,1,70,1, 0,219,0,236,0,2,1,13,1,19,1,28,1,35,1,42,1,54,1,70,1,
@ -343,7 +343,7 @@
115,105,111,110,248,22,191,5,193,28,248,22,88,23,194,2,28,28,249,22,191, 115,105,111,110,248,22,191,5,193,28,248,22,88,23,194,2,28,28,249,22,191,
3,38,248,22,92,23,196,2,10,249,22,191,3,39,248,22,92,23,196,2,28, 3,38,248,22,92,23,196,2,10,249,22,191,3,39,248,22,92,23,196,2,28,
28,248,22,142,7,248,22,80,23,195,2,10,249,22,152,9,64,114,111,111,116, 28,248,22,142,7,248,22,80,23,195,2,10,249,22,152,9,64,114,111,111,116,
248,22,163,17,23,196,2,28,27,248,22,104,194,28,248,22,184,14,23,194,2, 248,22,164,17,23,196,2,28,27,248,22,104,194,28,248,22,184,14,23,194,2,
10,28,248,22,142,7,23,194,2,28,248,22,142,15,23,194,2,10,248,22,143, 10,28,248,22,142,7,23,194,2,28,248,22,142,15,23,194,2,10,248,22,143,
15,23,194,1,11,27,248,22,87,248,22,106,195,28,192,192,248,22,186,15,248, 15,23,194,1,11,27,248,22,87,248,22,106,195,28,192,192,248,22,186,15,248,
22,113,195,11,11,11,11,250,22,158,2,196,197,249,22,79,197,200,28,28,248, 22,113,195,11,11,11,11,250,22,158,2,196,197,249,22,79,197,200,28,28,248,
@ -351,7 +351,7 @@
160,8,27,248,22,147,15,249,22,145,15,248,22,104,23,200,2,23,198,1,28, 160,8,27,248,22,147,15,249,22,145,15,248,22,104,23,200,2,23,198,1,28,
248,22,64,248,22,80,23,198,2,86,94,23,196,1,86,94,28,250,22,160,2, 248,22,64,248,22,80,23,198,2,86,94,23,196,1,86,94,28,250,22,160,2,
196,11,11,12,250,22,158,2,196,11,9,249,22,164,2,195,88,163,8,36,38, 196,11,11,12,250,22,158,2,196,11,9,249,22,164,2,195,88,163,8,36,38,
50,11,9,224,3,2,33,94,27,248,22,67,248,22,163,17,23,199,1,250,22, 50,11,9,224,3,2,33,94,27,248,22,67,248,22,164,17,23,199,1,250,22,
158,2,23,198,2,23,196,2,249,22,79,248,22,131,2,23,200,1,250,22,160, 158,2,23,198,2,23,196,2,249,22,79,248,22,131,2,23,200,1,250,22,160,
2,23,203,1,23,201,1,9,12,250,22,158,2,195,196,248,22,94,198,20,13, 2,23,203,1,23,201,1,9,12,250,22,158,2,195,196,248,22,94,198,20,13,
159,80,159,37,58,37,88,163,36,37,54,8,240,0,144,0,0,9,225,1,0, 159,80,159,37,58,37,88,163,36,37,54,8,240,0,144,0,0,9,225,1,0,
@ -392,11 +392,11 @@
102,88,163,8,36,37,47,11,2,41,222,33,105,32,103,88,163,36,37,43,11, 102,88,163,8,36,37,47,11,2,41,222,33,105,32,103,88,163,36,37,43,11,
69,116,111,45,115,116,114,105,110,103,222,33,104,28,248,22,184,14,193,248,22, 69,116,111,45,115,116,114,105,110,103,222,33,104,28,248,22,184,14,193,248,22,
188,14,193,192,28,248,22,87,248,22,81,23,195,2,248,22,89,248,2,103,248, 188,14,193,192,28,248,22,87,248,22,81,23,195,2,248,22,89,248,2,103,248,
22,163,17,23,196,1,250,22,90,248,2,103,248,22,163,17,23,198,2,2,50, 22,164,17,23,196,1,250,22,90,248,2,103,248,22,164,17,23,198,2,2,50,
248,2,102,248,22,164,17,23,198,1,249,22,190,7,2,51,194,32,107,88,163, 248,2,102,248,22,165,17,23,198,1,249,22,190,7,2,51,194,32,107,88,163,
36,38,48,11,66,102,105,108,116,101,114,222,33,108,28,248,22,87,23,195,2, 36,38,48,11,66,102,105,108,116,101,114,222,33,108,28,248,22,87,23,195,2,
9,28,248,23,194,2,248,22,80,23,196,2,249,22,79,248,22,163,17,23,197, 9,28,248,23,194,2,248,22,80,23,196,2,249,22,79,248,22,164,17,23,197,
2,249,2,107,23,197,1,248,22,164,17,23,199,1,249,2,107,194,248,22,164, 2,249,2,107,23,197,1,248,22,165,17,23,199,1,249,2,107,194,248,22,165,
17,196,249,22,190,7,2,51,248,22,134,2,23,196,1,28,248,22,87,23,199, 17,196,249,22,190,7,2,51,248,22,134,2,23,196,1,28,248,22,87,23,199,
2,86,94,23,198,1,28,23,199,2,28,196,249,22,138,15,200,198,198,27,28, 2,86,94,23,198,1,28,23,199,2,28,196,249,22,138,15,200,198,198,27,28,
248,22,87,23,197,2,2,49,249,22,1,22,165,7,248,2,102,23,199,2,248, 248,22,87,23,197,2,2,49,249,22,1,22,165,7,248,2,102,23,199,2,248,
@ -581,34 +581,37 @@
EVAL_ONE_SIZED_STR((char *)expr, 10019); EVAL_ONE_SIZED_STR((char *)expr, 10019);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,53,84,0,0,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,54,84,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,12,0,0,0,1,0,0,15,0,40,0, 0,0,0,0,0,0,0,0,0,0,14,0,0,0,1,0,0,15,0,40,0,
57,0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,0,0,179, 57,0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,190,0,197,
1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23,115, 0,0,0,222,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,
116,114,117,99,116,58,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101, 116,1,23,115,116,114,117,99,116,58,84,72,45,112,108,97,99,101,45,99,104,
108,76,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,77,84,72, 97,110,110,101,108,76,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,
45,112,108,97,99,101,45,99,104,97,110,110,101,108,63,1,20,84,72,45,112, 108,77,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,63,1,20,
108,97,99,101,45,99,104,97,110,110,101,108,45,114,101,102,1,21,84,72,45, 84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,114,101,102,1,
112,108,97,99,101,45,99,104,97,110,110,101,108,45,115,101,116,33,79,84,72, 21,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,115,101,116,
45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,105,110,1,20,84,72, 33,79,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,105,110,
45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,111,117,116,249,80,158, 1,20,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,111,117,
38,39,195,36,249,80,158,38,39,195,36,249,80,158,38,39,195,37,159,36,20, 116,249,80,158,38,39,195,36,249,80,158,38,39,195,36,249,80,158,38,39,195,
113,159,36,16,1,11,16,0,20,26,144,9,2,1,2,1,29,11,11,11,9, 36,249,80,158,38,39,195,37,249,80,158,38,39,195,37,159,36,20,113,159,36,
9,11,11,11,10,45,80,158,36,36,20,113,159,36,16,7,2,2,2,3,2, 16,1,11,16,0,20,26,144,9,2,1,2,1,29,11,11,11,9,9,11,11,
4,2,5,2,6,2,7,2,8,16,0,37,39,36,16,0,36,16,2,2,5, 11,10,45,80,158,36,36,20,113,159,36,16,7,2,2,2,3,2,4,2,5,
2,6,38,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,16,5,11, 2,6,2,7,2,8,16,0,37,39,36,16,0,36,16,2,2,5,2,6,38,
11,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,41,41,37,12,11, 11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,16,5,11,11,11,11,
11,16,0,16,0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36, 11,16,5,2,3,2,7,2,8,2,4,2,2,41,41,37,12,11,11,16,0,
16,2,20,15,16,6,253,22,135,11,2,3,11,38,36,11,248,22,89,249,22, 16,0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,3,20,
79,22,186,10,88,163,36,37,45,44,9,223,9,33,9,80,159,36,36,37,80, 15,16,6,253,22,135,11,2,3,11,38,36,11,248,22,89,249,22,79,22,186,
159,36,37,37,80,159,36,38,37,80,159,36,39,37,80,159,36,40,37,20,15, 10,88,163,36,37,45,44,9,223,9,33,9,80,159,36,36,37,80,159,36,37,
16,3,249,22,7,88,163,36,37,45,44,9,223,2,33,10,88,163,36,37,45, 37,80,159,36,38,37,80,159,36,39,37,80,159,36,40,37,20,15,16,2,20,
44,9,223,2,33,11,80,159,36,41,37,80,159,36,42,37,93,29,94,65,113, 27,158,88,163,36,37,45,44,9,223,0,33,10,88,163,36,37,45,44,9,223,
117,111,116,101,68,35,37,107,101,114,110,101,108,11,9,9,9,36,0}; 0,33,11,80,159,36,41,37,20,15,16,2,20,27,158,88,163,36,37,45,44,
EVAL_ONE_SIZED_STR((char *)expr, 501); 9,223,0,33,12,88,163,36,37,45,44,9,223,0,33,13,80,159,36,42,37,
93,29,94,65,113,117,111,116,101,68,35,37,107,101,114,110,101,108,11,9,9,
9,36,0};
EVAL_ONE_SIZED_STR((char *)expr, 548);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,53,84,0,0,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,54,84,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,89,0,0,0,1,0,0,7,0,18,0, 0,0,0,0,0,0,0,0,0,0,89,0,0,0,1,0,0,7,0,18,0,
45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0,187, 45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0,187,
0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,63,1,94,1,101,1, 0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,63,1,94,1,101,1,
@ -682,7 +685,7 @@
97,116,104,45,115,116,114,105,110,103,63,23,197,2,28,28,23,195,2,28,248, 97,116,104,45,115,116,114,105,110,103,63,23,197,2,28,28,23,195,2,28,248,
22,64,23,196,2,10,28,248,22,88,23,196,2,28,249,22,129,4,248,22,92, 22,64,23,196,2,10,28,248,22,88,23,196,2,28,249,22,129,4,248,22,92,
23,198,2,37,28,28,248,22,64,248,22,80,23,197,2,10,248,22,150,9,248, 23,198,2,37,28,28,248,22,64,248,22,80,23,197,2,10,248,22,150,9,248,
22,163,17,23,197,2,249,22,4,22,64,248,22,164,17,23,198,2,11,11,11, 22,164,17,23,197,2,249,22,4,22,64,248,22,165,17,23,198,2,11,11,11,
10,12,250,22,189,9,2,26,6,71,71,40,111,114,47,99,32,35,102,32,115, 10,12,250,22,189,9,2,26,6,71,71,40,111,114,47,99,32,35,102,32,115,
121,109,98,111,108,63,32,40,99,111,110,115,47,99,32,40,111,114,47,99,32, 121,109,98,111,108,63,32,40,99,111,110,115,47,99,32,40,111,114,47,99,32,
35,102,32,115,121,109,98,111,108,63,41,32,40,110,111,110,45,101,109,112,116, 35,102,32,115,121,109,98,111,108,63,41,32,40,110,111,110,45,101,109,112,116,
@ -750,7 +753,7 @@
11,80,159,8,32,38,37,22,189,4,11,20,13,159,80,159,8,27,38,37,250, 11,80,159,8,32,38,37,22,189,4,11,20,13,159,80,159,8,27,38,37,250,
80,159,8,30,39,37,249,22,33,11,80,159,8,32,38,37,22,172,5,28,248, 80,159,8,30,39,37,249,22,33,11,80,159,8,32,38,37,22,172,5,28,248,
22,184,14,23,218,2,23,217,1,86,94,23,217,1,247,22,161,15,249,247,22, 22,184,14,23,218,2,23,217,1,86,94,23,217,1,247,22,161,15,249,247,22,
170,5,248,22,163,17,195,23,31,86,94,23,193,1,27,28,23,197,1,28,23, 170,5,248,22,164,17,195,23,31,86,94,23,193,1,27,28,23,197,1,28,23,
201,1,27,249,22,5,20,20,95,88,163,36,37,48,8,128,3,9,226,31,26, 201,1,27,249,22,5,20,20,95,88,163,36,37,48,8,128,3,9,226,31,26,
25,22,33,53,23,215,1,23,219,1,23,220,1,27,28,23,205,2,11,193,28, 25,22,33,53,23,215,1,23,219,1,23,220,1,27,28,23,205,2,11,193,28,
192,192,28,193,28,204,28,249,22,131,4,248,22,81,196,248,22,81,23,15,193, 192,192,28,193,28,204,28,249,22,131,4,248,22,81,196,248,22,81,23,15,193,
@ -761,9 +764,9 @@
28,38,37,250,80,159,8,31,39,37,249,22,33,11,80,159,8,33,38,37,22, 28,38,37,250,80,159,8,31,39,37,249,22,33,11,80,159,8,33,38,37,22,
189,4,23,217,1,20,13,159,80,159,8,28,38,37,250,80,159,8,31,39,37, 189,4,23,217,1,20,13,159,80,159,8,28,38,37,250,80,159,8,31,39,37,
249,22,33,11,80,159,8,33,38,37,22,172,5,28,248,22,184,14,23,219,2, 249,22,33,11,80,159,8,33,38,37,22,172,5,28,248,22,184,14,23,219,2,
23,218,1,86,94,23,218,1,247,22,161,15,249,247,22,170,5,248,22,163,17, 23,218,1,86,94,23,218,1,247,22,161,15,249,247,22,170,5,248,22,164,17,
195,23,32,86,94,23,193,1,28,28,248,22,77,23,224,32,0,0,0,2,248, 195,23,32,86,94,23,193,1,28,28,248,22,77,23,224,32,0,0,0,2,248,
22,163,17,23,224,32,0,0,0,2,10,27,28,23,199,2,86,94,23,215,1, 22,164,17,23,224,32,0,0,0,2,10,27,28,23,199,2,86,94,23,215,1,
23,214,1,86,94,23,214,1,23,215,1,28,28,248,22,77,23,224,33,0,0, 23,214,1,86,94,23,214,1,23,215,1,28,28,248,22,77,23,224,33,0,0,
0,2,248,22,150,9,248,22,132,15,23,195,2,11,12,20,13,159,80,159,8, 0,2,248,22,150,9,248,22,132,15,23,195,2,11,12,20,13,159,80,159,8,
29,38,37,250,80,159,8,32,39,37,249,22,33,11,80,159,8,34,38,37,22, 29,38,37,250,80,159,8,32,39,37,249,22,33,11,80,159,8,34,38,37,22,
@ -787,13 +790,13 @@
193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,248,2,59,248,22, 193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,248,2,59,248,22,
113,23,197,1,248,22,89,194,248,22,89,194,248,22,89,194,248,22,89,194,32, 113,23,197,1,248,22,89,194,248,22,89,194,248,22,89,194,248,22,89,194,32,
61,88,163,36,37,55,11,2,31,222,33,62,28,248,22,87,248,22,81,23,195, 61,88,163,36,37,55,11,2,31,222,33,62,28,248,22,87,248,22,81,23,195,
2,249,22,7,9,248,22,163,17,195,90,159,38,11,89,161,38,36,11,27,248, 2,249,22,7,9,248,22,164,17,195,90,159,38,11,89,161,38,36,11,27,248,
22,164,17,196,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22,163, 22,165,17,196,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22,164,
17,195,90,159,38,11,89,161,38,36,11,27,248,22,164,17,196,28,248,22,87, 17,195,90,159,38,11,89,161,38,36,11,27,248,22,165,17,196,28,248,22,87,
248,22,81,23,195,2,249,22,7,9,248,22,163,17,195,90,159,38,11,89,161, 248,22,81,23,195,2,249,22,7,9,248,22,164,17,195,90,159,38,11,89,161,
38,36,11,248,2,61,248,22,164,17,196,249,22,7,249,22,79,248,22,163,17, 38,36,11,248,2,61,248,22,165,17,196,249,22,7,249,22,79,248,22,164,17,
199,196,195,249,22,7,249,22,79,248,22,163,17,199,196,195,249,22,7,249,22, 199,196,195,249,22,7,249,22,79,248,22,164,17,199,196,195,249,22,7,249,22,
79,248,22,163,17,199,196,195,27,27,249,22,173,15,2,58,23,197,2,28,23, 79,248,22,164,17,199,196,195,27,27,249,22,173,15,2,58,23,197,2,28,23,
193,2,86,94,23,195,1,249,22,79,248,22,104,23,196,2,27,248,22,113,23, 193,2,86,94,23,195,1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,
197,1,27,249,22,173,15,2,58,23,196,2,28,23,193,2,86,94,23,194,1, 197,1,27,249,22,173,15,2,58,23,196,2,28,23,193,2,86,94,23,194,1,
249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,173,15, 249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,173,15,
@ -801,20 +804,20 @@
196,2,27,248,22,113,23,197,1,27,249,22,173,15,2,58,23,196,2,28,23, 196,2,27,248,22,113,23,197,1,27,249,22,173,15,2,58,23,196,2,28,23,
193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,248,2,59,248,22, 193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,248,2,59,248,22,
113,23,197,1,248,22,89,194,248,22,89,194,248,22,89,194,248,22,89,195,28, 113,23,197,1,248,22,89,194,248,22,89,194,248,22,89,194,248,22,89,195,28,
23,195,1,192,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22,163, 23,195,1,192,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22,164,
17,195,27,248,22,164,17,194,90,159,38,11,89,161,38,36,11,28,248,22,87, 17,195,27,248,22,165,17,194,90,159,38,11,89,161,38,36,11,28,248,22,87,
248,22,81,23,197,2,249,22,7,9,248,22,163,17,197,27,248,22,164,17,196, 248,22,81,23,197,2,249,22,7,9,248,22,164,17,197,27,248,22,165,17,196,
90,159,38,11,89,161,38,36,11,28,248,22,87,248,22,81,23,197,2,249,22, 90,159,38,11,89,161,38,36,11,28,248,22,87,248,22,81,23,197,2,249,22,
7,9,248,22,163,17,197,90,159,38,11,89,161,38,36,11,248,2,61,248,22, 7,9,248,22,164,17,197,90,159,38,11,89,161,38,36,11,248,2,61,248,22,
164,17,198,249,22,7,249,22,79,248,22,163,17,201,196,195,249,22,7,249,22, 165,17,198,249,22,7,249,22,79,248,22,164,17,201,196,195,249,22,7,249,22,
79,248,22,163,17,202,196,195,249,22,7,249,22,79,248,22,163,17,200,196,195, 79,248,22,164,17,202,196,195,249,22,7,249,22,79,248,22,164,17,200,196,195,
28,24,194,2,12,20,13,159,80,159,36,57,37,80,158,36,55,89,161,37,37, 28,24,194,2,12,20,13,159,80,159,36,57,37,80,158,36,55,89,161,37,37,
10,249,22,190,4,21,94,2,32,6,19,19,112,108,97,110,101,116,47,114,101, 10,249,22,190,4,21,94,2,32,6,19,19,112,108,97,110,101,116,47,114,101,
115,111,108,118,101,114,46,114,107,116,1,27,112,108,97,110,101,116,45,109,111, 115,111,108,118,101,114,46,114,107,116,1,27,112,108,97,110,101,116,45,109,111,
100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,27,28, 100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,27,28,
23,195,2,28,249,22,152,9,23,197,2,80,158,39,52,86,94,23,195,1,80, 23,195,2,28,249,22,152,9,23,197,2,80,158,39,52,86,94,23,195,1,80,
158,37,53,27,248,22,148,5,23,197,2,27,28,248,22,77,23,195,2,248,22, 158,37,53,27,248,22,148,5,23,197,2,27,28,248,22,77,23,195,2,248,22,
163,17,23,195,1,23,194,1,28,248,22,184,14,23,194,2,90,159,39,11,89, 164,17,23,195,1,23,194,1,28,248,22,184,14,23,194,2,90,159,39,11,89,
161,39,36,11,248,22,141,15,23,197,1,86,95,20,18,159,11,80,158,42,52, 161,39,36,11,248,22,141,15,23,197,1,86,95,20,18,159,11,80,158,42,52,
199,20,18,159,11,80,158,42,53,192,192,11,11,28,23,193,2,192,86,94,23, 199,20,18,159,11,80,158,42,53,192,192,11,11,28,23,193,2,192,86,94,23,
193,1,27,247,22,172,5,28,192,192,247,22,161,15,90,159,39,11,89,161,39, 193,1,27,247,22,172,5,28,192,192,247,22,161,15,90,159,39,11,89,161,39,
@ -834,7 +837,7 @@
22,148,5,23,200,2,248,22,147,5,248,22,80,248,22,148,5,23,201,1,23, 22,148,5,23,200,2,248,22,147,5,248,22,80,248,22,148,5,23,201,1,23,
198,1,27,250,22,160,2,80,159,44,41,38,248,22,134,16,23,204,1,11,28, 198,1,27,250,22,160,2,80,159,44,41,38,248,22,134,16,23,204,1,11,28,
23,193,2,27,250,22,160,2,248,22,81,23,198,1,197,11,28,192,250,22,158, 23,193,2,27,250,22,160,2,248,22,81,23,198,1,197,11,28,192,250,22,158,
2,248,22,164,17,199,197,195,12,12,12,251,211,197,198,199,10,32,71,88,163, 2,248,22,165,17,199,197,195,12,12,12,251,211,197,198,199,10,32,71,88,163,
36,38,47,11,76,102,108,97,116,116,101,110,45,115,117,98,45,112,97,116,104, 36,38,47,11,76,102,108,97,116,116,101,110,45,115,117,98,45,112,97,116,104,
222,33,74,32,72,88,163,36,40,54,11,2,31,222,33,73,28,248,22,87,23, 222,33,74,32,72,88,163,36,40,54,11,2,31,222,33,73,28,248,22,87,23,
197,2,28,248,22,87,195,192,249,22,79,194,248,22,94,197,28,249,22,154,9, 197,2,28,248,22,87,195,192,249,22,79,194,248,22,94,197,28,249,22,154,9,
@ -843,8 +846,8 @@
46,46,34,115,32,105,110,32,115,117,98,109,111,100,117,108,101,32,112,97,116, 46,46,34,115,32,105,110,32,115,117,98,109,111,100,117,108,101,32,112,97,116,
104,58,32,126,46,115,250,22,90,2,34,28,249,22,154,9,23,201,2,2,36, 104,58,32,126,46,115,250,22,90,2,34,28,249,22,154,9,23,201,2,2,36,
198,28,248,22,184,14,199,198,249,22,89,28,248,22,64,201,2,4,2,37,200, 198,28,248,22,184,14,199,198,249,22,89,28,248,22,64,201,2,4,2,37,200,
199,251,2,72,196,197,248,22,81,199,248,22,164,17,200,251,2,72,196,197,249, 199,251,2,72,196,197,248,22,81,199,248,22,165,17,200,251,2,72,196,197,249,
22,79,248,22,163,17,202,200,248,22,164,17,200,251,2,72,196,197,9,197,27, 22,79,248,22,164,17,202,200,248,22,165,17,200,251,2,72,196,197,9,197,27,
249,22,165,7,6,31,31,115,116,97,110,100,97,114,100,45,109,111,100,117,108, 249,22,165,7,6,31,31,115,116,97,110,100,97,114,100,45,109,111,100,117,108,
101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,58,32,196,28,193,250, 101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,58,32,196,28,193,250,
22,187,9,11,195,196,248,22,185,9,193,28,249,22,148,7,194,2,36,2,28, 22,187,9,11,195,196,248,22,185,9,193,28,249,22,148,7,194,2,36,2,28,
@ -856,7 +859,7 @@
11,2,31,222,33,81,28,248,22,87,23,194,2,9,250,22,90,6,4,4,10, 11,2,31,222,33,81,28,248,22,87,23,194,2,9,250,22,90,6,4,4,10,
32,32,32,248,22,188,14,248,22,105,23,198,2,248,2,80,248,22,81,23,198, 32,32,32,248,22,188,14,248,22,105,23,198,2,248,2,80,248,22,81,23,198,
1,28,249,22,154,9,248,22,81,23,200,2,23,197,1,28,249,22,152,9,248, 1,28,249,22,154,9,248,22,81,23,200,2,23,197,1,28,249,22,152,9,248,
22,163,17,23,200,1,23,196,1,251,22,185,9,2,22,6,41,41,99,121,99, 22,164,17,23,200,1,23,196,1,251,22,185,9,2,22,6,41,41,99,121,99,
108,101,32,105,110,32,108,111,97,100,105,110,103,10,32,32,97,116,32,112,97, 108,101,32,105,110,32,108,111,97,100,105,110,103,10,32,32,97,116,32,112,97,
116,104,58,32,126,97,10,32,32,112,97,116,104,115,58,126,97,23,200,1,249, 116,104,58,32,126,97,10,32,32,112,97,116,104,115,58,126,97,23,200,1,249,
22,1,22,165,7,248,2,80,248,22,94,23,201,1,12,12,247,192,20,13,159, 22,1,22,165,7,248,2,80,248,22,94,23,201,1,12,12,247,192,20,13,159,
@ -868,47 +871,47 @@
28,248,22,156,5,23,196,2,12,28,23,197,2,250,22,187,9,11,6,15,15, 28,248,22,156,5,23,196,2,12,28,23,197,2,250,22,187,9,11,6,15,15,
98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250,22,189, 98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250,22,189,
9,2,22,2,33,23,198,2,28,28,248,22,77,23,196,2,249,22,152,9,248, 9,2,22,2,33,23,198,2,28,28,248,22,77,23,196,2,249,22,152,9,248,
22,163,17,23,198,2,2,4,11,248,22,147,5,248,22,104,196,28,28,248,22, 22,164,17,23,198,2,2,4,11,248,22,147,5,248,22,104,196,28,28,248,22,
77,23,196,2,28,249,22,152,9,248,22,163,17,23,198,2,2,34,28,248,22, 77,23,196,2,28,249,22,152,9,248,22,164,17,23,198,2,2,34,28,248,22,
77,248,22,104,23,197,2,249,22,152,9,248,22,108,23,198,2,2,4,11,11, 77,248,22,104,23,197,2,249,22,152,9,248,22,108,23,198,2,2,4,11,11,
11,86,97,23,198,1,23,197,1,23,196,1,23,193,1,248,22,147,5,249,2, 11,86,97,23,198,1,23,197,1,23,196,1,23,193,1,248,22,147,5,249,2,
71,248,22,121,23,199,2,248,22,106,23,199,1,28,28,248,22,77,23,196,2, 71,248,22,121,23,199,2,248,22,106,23,199,1,28,28,248,22,77,23,196,2,
28,249,22,152,9,248,22,163,17,23,198,2,2,34,28,28,249,22,154,9,248, 28,249,22,152,9,248,22,164,17,23,198,2,2,34,28,28,249,22,154,9,248,
22,104,23,198,2,2,36,10,249,22,154,9,248,22,104,23,198,2,2,35,28, 22,104,23,198,2,2,36,10,249,22,154,9,248,22,104,23,198,2,2,35,28,
23,196,2,27,248,22,148,5,23,198,2,28,248,22,64,193,10,28,248,22,77, 23,196,2,27,248,22,148,5,23,198,2,28,248,22,64,193,10,28,248,22,77,
193,248,22,64,248,22,163,17,194,11,11,11,11,11,86,96,23,198,1,23,197, 193,248,22,64,248,22,164,17,194,11,11,11,11,11,86,96,23,198,1,23,197,
1,23,193,1,27,248,22,148,5,23,198,1,248,22,147,5,249,2,71,28,248, 1,23,193,1,27,248,22,148,5,23,198,1,248,22,147,5,249,2,71,28,248,
22,77,23,197,2,248,22,163,17,23,197,2,23,196,2,27,28,249,22,154,9, 22,77,23,197,2,248,22,164,17,23,197,2,23,196,2,27,28,249,22,154,9,
248,22,104,23,203,2,2,35,248,22,164,17,200,248,22,106,200,28,248,22,77, 248,22,104,23,203,2,2,35,248,22,165,17,200,248,22,106,200,28,248,22,77,
23,198,2,249,22,93,248,22,164,17,199,194,192,28,28,248,22,77,23,196,2, 23,198,2,249,22,93,248,22,165,17,199,194,192,28,28,248,22,77,23,196,2,
249,22,152,9,248,22,163,17,23,198,2,2,38,11,86,94,248,80,159,38,8, 249,22,152,9,248,22,164,17,23,198,2,2,38,11,86,94,248,80,159,38,8,
28,39,193,253,213,200,201,202,203,11,80,158,43,55,28,28,248,22,77,23,196, 28,39,193,253,213,200,201,202,203,11,80,158,43,55,28,28,248,22,77,23,196,
2,28,249,22,152,9,248,22,163,17,23,198,2,2,34,28,248,22,77,248,22, 2,28,249,22,152,9,248,22,164,17,23,198,2,2,34,28,248,22,77,248,22,
104,23,197,2,249,22,152,9,248,22,108,23,198,2,2,38,11,11,11,86,94, 104,23,197,2,249,22,152,9,248,22,108,23,198,2,2,38,11,11,11,86,94,
248,80,159,38,8,28,39,193,253,213,248,22,104,201,201,202,203,248,22,106,201, 248,80,159,38,8,28,39,193,253,213,248,22,104,201,201,202,203,248,22,106,201,
80,158,43,55,86,94,23,193,1,27,88,163,8,36,37,47,11,79,115,104,111, 80,158,43,55,86,94,23,193,1,27,88,163,8,36,37,47,11,79,115,104,111,
119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223,5,33,75,27, 119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223,5,33,75,27,
28,248,22,77,23,198,2,28,249,22,152,9,2,34,248,22,163,17,23,200,2, 28,248,22,77,23,198,2,28,249,22,152,9,2,34,248,22,164,17,23,200,2,
27,248,22,104,23,199,2,28,28,249,22,154,9,23,195,2,2,36,10,249,22, 27,248,22,104,23,199,2,28,28,249,22,154,9,23,195,2,2,36,10,249,22,
154,9,23,195,2,2,35,86,94,23,193,1,28,23,199,2,27,248,22,148,5, 154,9,23,195,2,2,35,86,94,23,193,1,28,23,199,2,27,248,22,148,5,
23,201,2,28,248,22,77,193,248,22,163,17,193,192,250,22,185,9,2,22,6, 23,201,2,28,248,22,77,193,248,22,164,17,193,192,250,22,185,9,2,22,6,
45,45,110,111,32,98,97,115,101,32,112,97,116,104,32,102,111,114,32,114,101, 45,45,110,111,32,98,97,115,101,32,112,97,116,104,32,102,111,114,32,114,101,
108,97,116,105,118,101,32,115,117,98,109,111,100,117,108,101,32,112,97,116,104, 108,97,116,105,118,101,32,115,117,98,109,111,100,117,108,101,32,112,97,116,104,
58,32,126,46,115,23,201,2,192,23,197,2,23,197,2,27,28,248,22,77,23, 58,32,126,46,115,23,201,2,192,23,197,2,23,197,2,27,28,248,22,77,23,
199,2,28,249,22,152,9,2,34,248,22,163,17,23,201,2,27,28,28,28,249, 199,2,28,249,22,152,9,2,34,248,22,164,17,23,201,2,27,28,28,28,249,
22,154,9,248,22,104,23,202,2,2,36,10,249,22,154,9,248,22,104,23,202, 22,154,9,248,22,104,23,202,2,2,36,10,249,22,154,9,248,22,104,23,202,
2,2,35,23,200,2,11,27,248,22,148,5,23,202,2,27,28,249,22,154,9, 2,2,35,23,200,2,11,27,248,22,148,5,23,202,2,27,28,249,22,154,9,
248,22,104,23,204,2,2,35,248,22,164,17,23,202,1,248,22,106,23,202,1, 248,22,104,23,204,2,2,35,248,22,165,17,23,202,1,248,22,106,23,202,1,
28,248,22,77,23,195,2,249,2,71,248,22,163,17,23,197,2,249,22,93,248, 28,248,22,77,23,195,2,249,2,71,248,22,164,17,23,197,2,249,22,93,248,
22,164,17,23,199,1,23,197,1,249,2,71,23,196,1,23,195,1,249,2,71, 22,165,17,23,199,1,23,197,1,249,2,71,23,196,1,23,195,1,249,2,71,
2,36,28,249,22,154,9,248,22,104,23,204,2,2,35,248,22,164,17,23,202, 2,36,28,249,22,154,9,248,22,104,23,204,2,2,35,248,22,165,17,23,202,
1,248,22,106,23,202,1,28,248,22,77,193,248,22,164,17,193,11,11,11,27, 1,248,22,106,23,202,1,28,248,22,77,193,248,22,165,17,193,11,11,11,27,
28,248,22,64,23,196,2,27,248,80,159,43,48,39,249,22,79,23,199,2,247, 28,248,22,64,23,196,2,27,248,80,159,43,48,39,249,22,79,23,199,2,247,
22,162,15,28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,36, 22,162,15,28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,36,
11,249,80,159,46,54,39,248,22,70,23,201,2,11,27,28,248,22,87,23,195, 11,249,80,159,46,54,39,248,22,70,23,201,2,11,27,28,248,22,87,23,195,
2,2,39,249,22,165,7,23,197,2,2,40,251,80,159,49,59,39,23,204,1, 2,2,39,249,22,165,7,23,197,2,2,40,251,80,159,49,59,39,23,204,1,
28,248,22,87,23,199,2,23,199,1,86,94,23,199,1,248,22,80,23,199,2, 28,248,22,87,23,199,2,23,199,1,86,94,23,199,1,248,22,80,23,199,2,
28,248,22,87,23,199,2,86,94,23,198,1,9,248,22,164,17,23,199,1,23, 28,248,22,87,23,199,2,86,94,23,198,1,9,248,22,165,17,23,199,1,23,
197,1,28,248,22,142,7,23,196,2,86,94,23,196,1,27,248,80,159,43,8, 197,1,28,248,22,142,7,23,196,2,86,94,23,196,1,27,248,80,159,43,8,
29,39,23,202,2,27,248,80,159,44,48,39,249,22,79,23,200,2,23,197,2, 29,39,23,202,2,27,248,80,159,44,48,39,249,22,79,23,200,2,23,197,2,
28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,36,11,249,80, 28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,36,11,249,80,
@ -928,7 +931,7 @@
249,22,1,22,93,249,22,2,80,159,53,8,31,39,248,22,106,23,208,2,23, 249,22,1,22,93,249,22,2,80,159,53,8,31,39,248,22,106,23,208,2,23,
197,1,28,248,22,87,23,196,2,86,94,23,195,1,248,22,89,23,197,1,86, 197,1,28,248,22,87,23,196,2,86,94,23,195,1,248,22,89,23,197,1,86,
94,23,196,1,23,195,1,251,80,159,51,59,39,23,206,1,248,22,80,23,198, 94,23,196,1,23,195,1,251,80,159,51,59,39,23,206,1,248,22,80,23,198,
2,248,22,164,17,23,198,1,23,198,1,28,249,22,152,9,248,22,163,17,23, 2,248,22,165,17,23,198,1,23,198,1,28,249,22,152,9,248,22,164,17,23,
198,2,2,37,248,80,159,42,8,30,39,248,22,147,15,249,22,145,15,248,22, 198,2,2,37,248,80,159,42,8,30,39,248,22,147,15,249,22,145,15,248,22,
149,15,248,22,104,23,201,2,248,80,159,46,8,29,39,23,205,2,12,86,94, 149,15,248,22,104,23,201,2,248,80,159,46,8,29,39,23,205,2,12,86,94,
28,28,248,22,184,14,23,194,2,10,248,22,167,8,23,194,2,86,94,23,201, 28,28,248,22,184,14,23,194,2,10,248,22,167,8,23,194,2,86,94,23,201,
@ -956,7 +959,7 @@
20,20,96,88,163,36,36,56,8,240,12,64,0,0,9,230,19,15,13,12,8, 20,20,96,88,163,36,36,56,8,240,12,64,0,0,9,230,19,15,13,12,8,
7,5,2,33,84,23,195,1,23,198,1,23,208,1,12,28,28,248,22,167,8, 7,5,2,33,84,23,195,1,23,198,1,23,208,1,12,28,28,248,22,167,8,
23,204,1,11,28,248,22,142,7,23,206,2,10,28,248,22,64,23,206,2,10, 23,204,1,11,28,248,22,142,7,23,206,2,10,28,248,22,64,23,206,2,10,
28,248,22,77,23,206,2,249,22,152,9,248,22,163,17,23,208,2,2,32,11, 28,248,22,77,23,206,2,249,22,152,9,248,22,164,17,23,208,2,2,32,11,
249,80,159,53,49,39,28,248,22,142,7,23,208,2,249,22,79,23,209,1,248, 249,80,159,53,49,39,28,248,22,142,7,23,208,2,249,22,79,23,209,1,248,
80,159,56,8,29,39,23,215,1,86,94,23,212,1,249,22,79,23,209,1,247, 80,159,56,8,29,39,23,215,1,86,94,23,212,1,249,22,79,23,209,1,247,
22,162,15,252,22,169,8,23,209,1,23,208,1,23,206,1,23,204,1,23,203, 22,162,15,252,22,169,8,23,209,1,23,208,1,23,206,1,23,204,1,23,203,
@ -1017,7 +1020,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 8518); EVAL_ONE_SIZED_STR((char *)expr, 8518);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,53,84,0,0,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,54,84,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,16,0, 0,0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,16,0,
29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,98,1,0, 29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,98,1,0,
0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2, 0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2,

View File

@ -1228,7 +1228,7 @@ int scheme_generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int
int dest); int dest);
int scheme_generate_inlined_test(mz_jit_state *jitter, Scheme_Object *obj, int branch_short, int scheme_generate_inlined_test(mz_jit_state *jitter, Scheme_Object *obj, int branch_short,
Branch_Info *for_branch, int need_sync); Branch_Info *for_branch, int need_sync);
int scheme_generate_cons_alloc(mz_jit_state *jitter, int rev, int inline_retry, int dest); int scheme_generate_cons_alloc(mz_jit_state *jitter, int rev, int inline_retry, int known_list, int dest);
int scheme_generate_struct_alloc(mz_jit_state *jitter, int num_args, int scheme_generate_struct_alloc(mz_jit_state *jitter, int num_args,
int inline_slow, int pop_and_jump, int inline_slow, int pop_and_jump,
int is_tail, int multi_ok, int dest); int is_tail, int multi_ok, int dest);
@ -1238,7 +1238,7 @@ int scheme_generate_struct_alloc(mz_jit_state *jitter, int num_args,
/**********************************************************************/ /**********************************************************************/
#ifdef CAN_INLINE_ALLOC #ifdef CAN_INLINE_ALLOC
int scheme_inline_alloc(mz_jit_state *jitter, int amt, Scheme_Type ty, int immut, int scheme_inline_alloc(mz_jit_state *jitter, int amt, Scheme_Type ty, int flags,
int keep_r0_r1, int keep_fpr1, int inline_retry); int keep_r0_r1, int keep_fpr1, int inline_retry);
int scheme_generate_alloc_retry(mz_jit_state *jitter, int i); int scheme_generate_alloc_retry(mz_jit_state *jitter, int i);
#else #else

View File

@ -2168,7 +2168,7 @@ static int common5(mz_jit_state *jitter, void *_data)
jit_ldxr_p(JIT_R1, JIT_RUNSTACK, JIT_R2); jit_ldxr_p(JIT_R1, JIT_RUNSTACK, JIT_R2);
mz_set_local_p(JIT_R2, JIT_LOCAL3); mz_set_local_p(JIT_R2, JIT_LOCAL3);
scheme_generate_cons_alloc(jitter, 1, 1, JIT_R0); scheme_generate_cons_alloc(jitter, 1, 1, !i, JIT_R0);
CHECK_LIMIT(); CHECK_LIMIT();
mz_get_local_p(JIT_R2, JIT_LOCAL3); mz_get_local_p(JIT_R2, JIT_LOCAL3);

View File

@ -1053,7 +1053,7 @@ int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in
scheme_generate_arith(jitter, rator, app->rand, NULL, 1, 0, CMP_ODDP, 0, for_branch, branch_short, 0, 0, NULL, dest); scheme_generate_arith(jitter, rator, app->rand, NULL, 1, 0, CMP_ODDP, 0, for_branch, branch_short, 0, 0, NULL, dest);
return 1; return 1;
} else if (IS_NAMED_PRIM(rator, "list?")) { } else if (IS_NAMED_PRIM(rator, "list?")) {
GC_CAN_IGNORE jit_insn *ref0, *ref1, *ref3, *ref4; GC_CAN_IGNORE jit_insn *ref0, *ref1, *ref3, *ref4, *ref6;
mz_runstack_skipped(jitter, 1); mz_runstack_skipped(jitter, 1);
@ -1077,11 +1077,16 @@ int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in
ref4 = jit_bnei_p(jit_forward(), JIT_R1, scheme_pair_type); ref4 = jit_bnei_p(jit_forward(), JIT_R1, scheme_pair_type);
CHECK_LIMIT(); CHECK_LIMIT();
/* We have a pair. Optimistically check for PAIR_IS_LIST: */
jit_ldxi_s(JIT_R2, JIT_R0, &MZ_OPT_HASH_KEY(&((Scheme_Stx *)0x0)->iso));
ref6 = jit_bmsi_ul(jit_forward(), JIT_R2, PAIR_IS_LIST);
if (for_branch) { if (for_branch) {
ref0 = jit_patchable_movi_p(JIT_V1, jit_forward()); ref0 = jit_patchable_movi_p(JIT_V1, jit_forward());
(void)jit_calli(sjc.list_p_branch_code); (void)jit_calli(sjc.list_p_branch_code);
mz_patch_branch(ref3); mz_patch_branch(ref3);
mz_patch_branch(ref6);
scheme_add_branch_false_movi(for_branch, ref0); scheme_add_branch_false_movi(for_branch, ref0);
scheme_add_branch_false(for_branch, ref1); scheme_add_branch_false(for_branch, ref1);
@ -1100,6 +1105,7 @@ int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in
ref1 = jit_jmpi(jit_forward()); ref1 = jit_jmpi(jit_forward());
mz_patch_branch(ref3); mz_patch_branch(ref3);
mz_patch_branch(ref6);
(void)jit_movi_p(dest, scheme_true); (void)jit_movi_p(dest, scheme_true);
mz_patch_ucbranch(ref5); mz_patch_ucbranch(ref5);
@ -1721,7 +1727,7 @@ int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in
mz_rs_sync(); mz_rs_sync();
mz_runstack_unskipped(jitter, 1); mz_runstack_unskipped(jitter, 1);
(void)jit_movi_p(JIT_R1, &scheme_null); (void)jit_movi_p(JIT_R1, &scheme_null);
return scheme_generate_cons_alloc(jitter, 0, 0, dest); return scheme_generate_cons_alloc(jitter, 0, 0, 1, dest);
} else if (IS_NAMED_PRIM(rator, "box")) { } else if (IS_NAMED_PRIM(rator, "box")) {
mz_runstack_skipped(jitter, 1); mz_runstack_skipped(jitter, 1);
scheme_generate_non_tail(app->rand, jitter, 0, 1, 0); scheme_generate_non_tail(app->rand, jitter, 0, 1, 0);
@ -3023,14 +3029,28 @@ int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i
return 1; return 1;
} else if (IS_NAMED_PRIM(rator, "cons") } else if (IS_NAMED_PRIM(rator, "cons")
|| IS_NAMED_PRIM(rator, "list*")) { || IS_NAMED_PRIM(rator, "list*")) {
int dir; int dir, known_list;
LOG_IT(("inlined cons\n")); LOG_IT(("inlined cons\n"));
dir = generate_two_args(app->rand1, app->rand2, jitter, 0, 2); dir = generate_two_args(app->rand1, app->rand2, jitter, 0, 2);
CHECK_LIMIT(); CHECK_LIMIT();
mz_rs_sync(); mz_rs_sync();
if (scheme_is_list(app->rand2))
known_list = 1;
else
known_list = 2;
return scheme_generate_cons_alloc(jitter, dir == -1, 0, dest); return scheme_generate_cons_alloc(jitter, dir == -1, 0, known_list, dest);
} else if (IS_NAMED_PRIM(rator, "unsafe-cons-list")) {
int dir;
LOG_IT(("inlined unsafe-cons-list\n"));
dir = generate_two_args(app->rand1, app->rand2, jitter, 0, 2);
CHECK_LIMIT();
mz_rs_sync();
return scheme_generate_cons_alloc(jitter, dir == -1, 0, 1, dest);
} else if (IS_NAMED_PRIM(rator, "mcons")) { } else if (IS_NAMED_PRIM(rator, "mcons")) {
LOG_IT(("inlined mcons\n")); LOG_IT(("inlined mcons\n"));
@ -3074,7 +3094,7 @@ int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i
CHECK_LIMIT(); CHECK_LIMIT();
mz_rs_sync(); mz_rs_sync();
scheme_generate_cons_alloc(jitter, 1, 0, JIT_R0); scheme_generate_cons_alloc(jitter, 1, 0, 1, JIT_R0);
CHECK_LIMIT(); CHECK_LIMIT();
jit_ldr_p(JIT_R1, JIT_RUNSTACK); jit_ldr_p(JIT_R1, JIT_RUNSTACK);
@ -3082,7 +3102,7 @@ int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i
mz_runstack_popped(jitter, 1); mz_runstack_popped(jitter, 1);
CHECK_LIMIT(); CHECK_LIMIT();
return scheme_generate_cons_alloc(jitter, 1, 0, dest); return scheme_generate_cons_alloc(jitter, 1, 0, 1, dest);
} else if (IS_NAMED_PRIM(rator, "vector-immutable") } else if (IS_NAMED_PRIM(rator, "vector-immutable")
|| IS_NAMED_PRIM(rator, "vector")) { || IS_NAMED_PRIM(rator, "vector")) {
return generate_vector_alloc(jitter, rator, NULL, NULL, app, dest); return generate_vector_alloc(jitter, rator, NULL, NULL, app, dest);
@ -3780,28 +3800,50 @@ int scheme_generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int
CHECK_LIMIT(); CHECK_LIMIT();
mz_rs_sync(); mz_rs_sync();
if (c <= 4) {
/* fully inline a small list */
int i, c2 = c, known_list;
if (star) {
c2--;
mz_rs_ldxi(JIT_R1, c2);
known_list = scheme_is_list(app->args[c2]);
} else {
known_list = 1;
if (c)
(void)jit_movi_p(JIT_R1, scheme_null);
else
(void)jit_movi_p(dest, scheme_null);
}
for (i = c2; i--; ) {
mz_rs_ldxi(JIT_R0, i);
scheme_generate_cons_alloc(jitter, 0, 0, known_list, (i > 0) ? JIT_R1 : dest);
CHECK_LIMIT();
}
} else {
#ifdef CAN_INLINE_ALLOC #ifdef CAN_INLINE_ALLOC
jit_movi_l(JIT_R2, c); jit_movi_l(JIT_R2, c);
if (star)
(void)jit_calli(sjc.make_list_star_code);
else
(void)jit_calli(sjc.make_list_code);
jit_movr_p(dest, JIT_R0);
#else
JIT_UPDATE_THREAD_RSPTR_IF_NEEDED();
jit_movi_l(JIT_R0, c);
mz_prepare(2);
jit_pusharg_l(JIT_R0);
jit_pusharg_p(JIT_RUNSTACK);
{
GC_CAN_IGNORE jit_insn *refr;
if (star) if (star)
(void)mz_finish_lwe(ts_scheme_jit_make_list_star, refr); (void)jit_calli(sjc.make_list_star_code);
else else
(void)mz_finish_lwe(ts_scheme_jit_make_list, refr); (void)jit_calli(sjc.make_list_code);
} jit_movr_p(dest, JIT_R0);
jit_retval(dest); #else
JIT_UPDATE_THREAD_RSPTR_IF_NEEDED();
jit_movi_l(JIT_R0, c);
mz_prepare(2);
jit_pusharg_l(JIT_R0);
jit_pusharg_p(JIT_RUNSTACK);
{
GC_CAN_IGNORE jit_insn *refr;
if (star)
(void)mz_finish_lwe(ts_scheme_jit_make_list_star, refr);
else
(void)mz_finish_lwe(ts_scheme_jit_make_list, refr);
}
jit_retval(dest);
#endif #endif
}
if (c) { if (c) {
mz_rs_inc(c); /* no sync */ mz_rs_inc(c); /* no sync */
@ -3877,12 +3919,13 @@ int scheme_generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int
return 0; return 0;
} }
int scheme_generate_cons_alloc(mz_jit_state *jitter, int rev, int inline_retry, int dest) int scheme_generate_cons_alloc(mz_jit_state *jitter, int rev, int inline_retry, int known_list, int dest)
/* Args must be in R0 (car) and R1 (cdr); uses R2 and V1 as temporaries */ /* Args must be in R0 (car) and R1 (cdr); uses R2 and V1 as temporaries */
{ {
#ifdef CAN_INLINE_ALLOC #ifdef CAN_INLINE_ALLOC
/* Inlined alloc */ /* Inlined alloc */
scheme_inline_alloc(jitter, sizeof(Scheme_Simple_Object), scheme_pair_type, 0, 1, 0, inline_retry); scheme_inline_alloc(jitter, sizeof(Scheme_Simple_Object), scheme_pair_type, 0, 1,
known_list ? PAIR_IS_LIST : 0, inline_retry);
CHECK_LIMIT(); CHECK_LIMIT();
if (rev) { if (rev) {

View File

@ -37,6 +37,7 @@ READ_ONLY Scheme_Object *scheme_list_star_proc;
READ_ONLY Scheme_Object *scheme_box_proc; READ_ONLY Scheme_Object *scheme_box_proc;
READ_ONLY Scheme_Object *scheme_box_p_proc; READ_ONLY Scheme_Object *scheme_box_p_proc;
READ_ONLY Scheme_Object *scheme_hash_ref_proc; READ_ONLY Scheme_Object *scheme_hash_ref_proc;
READ_ONLY Scheme_Object *scheme_unsafe_cons_list_proc;
READ_ONLY Scheme_Object *scheme_unsafe_car_proc; READ_ONLY Scheme_Object *scheme_unsafe_car_proc;
READ_ONLY Scheme_Object *scheme_unsafe_cdr_proc; READ_ONLY Scheme_Object *scheme_unsafe_cdr_proc;
READ_ONLY Scheme_Object *scheme_unsafe_mcar_proc; READ_ONLY Scheme_Object *scheme_unsafe_mcar_proc;
@ -155,6 +156,7 @@ static Scheme_Object *make_hasheq_placeholder(int argc, Scheme_Object *argv[]);
static Scheme_Object *make_hasheqv_placeholder(int argc, Scheme_Object *argv[]); static Scheme_Object *make_hasheqv_placeholder(int argc, Scheme_Object *argv[]);
static Scheme_Object *table_placeholder_p(int argc, Scheme_Object *argv[]); static Scheme_Object *table_placeholder_p(int argc, Scheme_Object *argv[]);
static Scheme_Object *unsafe_cons_list (int argc, Scheme_Object *argv[]);
static Scheme_Object *unsafe_car (int argc, Scheme_Object *argv[]); static Scheme_Object *unsafe_car (int argc, Scheme_Object *argv[]);
static Scheme_Object *unsafe_cdr (int argc, Scheme_Object *argv[]); static Scheme_Object *unsafe_cdr (int argc, Scheme_Object *argv[]);
static Scheme_Object *unsafe_list_ref (int argc, Scheme_Object *argv[]); static Scheme_Object *unsafe_list_ref (int argc, Scheme_Object *argv[]);
@ -752,6 +754,13 @@ scheme_init_unsafe_list (Scheme_Env *env)
scheme_null->type = scheme_null_type; scheme_null->type = scheme_null_type;
REGISTER_SO(scheme_unsafe_cons_list_proc);
p = scheme_make_immed_prim(unsafe_cons_list, "unsafe-cons-list", 2, 2);
SCHEME_PRIM_PROC_FLAGS(p) |= (SCHEME_PRIM_IS_BINARY_INLINED
| SCHEME_PRIM_IS_OMITABLE);
scheme_add_global_constant ("unsafe-cons-list", p, env);
scheme_unsafe_cons_list_proc = p;
REGISTER_SO(scheme_unsafe_car_proc); REGISTER_SO(scheme_unsafe_car_proc);
p = scheme_make_folding_prim(unsafe_car, "unsafe-car", 1, 1, 1); p = scheme_make_folding_prim(unsafe_car, "unsafe-car", 1, 1, 1);
SCHEME_PRIM_PROC_FLAGS(p) |= (SCHEME_PRIM_IS_UNARY_INLINED SCHEME_PRIM_PROC_FLAGS(p) |= (SCHEME_PRIM_IS_UNARY_INLINED
@ -842,6 +851,14 @@ Scheme_Object *scheme_make_pair(Scheme_Object *car, Scheme_Object *cdr)
#endif #endif
} }
Scheme_Object *scheme_make_list_pair(Scheme_Object *car, Scheme_Object *cdr)
{
GC_CAN_IGNORE Scheme_Object *r;
r = scheme_make_pair(car, cdr);
SCHEME_PAIR_FLAGS(r) |= PAIR_IS_LIST;
return r;
}
Scheme_Object *scheme_make_mutable_pair(Scheme_Object *car, Scheme_Object *cdr) Scheme_Object *scheme_make_mutable_pair(Scheme_Object *car, Scheme_Object *cdr)
{ {
Scheme_Object *cons; Scheme_Object *cons;
@ -877,6 +894,7 @@ Scheme_Object *scheme_make_raw_pair(Scheme_Object *car, Scheme_Object *cdr)
} }
# define cons(car, cdr) scheme_make_pair(car, cdr) # define cons(car, cdr) scheme_make_pair(car, cdr)
# define lcons(car, cdr) scheme_make_list_pair(car, cdr)
Scheme_Object *scheme_build_list(int size, Scheme_Object **argv) Scheme_Object *scheme_build_list(int size, Scheme_Object **argv)
{ {
@ -884,7 +902,7 @@ Scheme_Object *scheme_build_list(int size, Scheme_Object **argv)
int i; int i;
for (i = size; i--; ) { for (i = size; i--; ) {
pair = cons(argv[i], pair); pair = lcons(argv[i], pair);
} }
return pair; return pair;
@ -900,12 +918,12 @@ Scheme_Object *scheme_build_list_offset(int size, Scheme_Object **argv, int delt
/* clearing mode: */ /* clearing mode: */
size = -size; size = -size;
for (i = size; i-- > delta; ) { for (i = size; i-- > delta; ) {
pair = cons(argv[i], pair); pair = lcons(argv[i], pair);
argv[i] = NULL; argv[i] = NULL;
} }
} else { } else {
for (i = size; i-- > delta; ) { for (i = size; i-- > delta; ) {
pair = cons(argv[i], pair); pair = lcons(argv[i], pair);
} }
} }
@ -918,7 +936,7 @@ Scheme_Object *scheme_alloc_list(int size)
int i; int i;
for (i = size; i--; ) { for (i = size; i--; ) {
pair = cons(scheme_false, pair); pair = lcons(scheme_false, pair);
} }
return pair; return pair;
@ -968,7 +986,7 @@ scheme_named_map_1(char *name, Scheme_Object *(*fun)(Scheme_Object*, Scheme_Obje
Scheme_Object *v; Scheme_Object *v;
v = SCHEME_STX_CAR(lst); v = SCHEME_STX_CAR(lst);
v = fun(v, form); v = fun(v, form);
pr = cons(v, scheme_null); pr = lcons(v, scheme_null);
if (last) if (last)
SCHEME_CDR(last) = pr; SCHEME_CDR(last) = pr;
else else
@ -1168,10 +1186,18 @@ int scheme_is_list(Scheme_Object *obj1)
} }
/* Propagate info further up the chain. */ /* Propagate info further up the chain. */
/* We could have a race with JIT-generated code, but the worst #ifdef MZ_USE_FUTURES
should be that we lose a flag setting (dangerous in principle, {
but not in practice). */ short orig_flags = flags & (~PAIR_FLAG_MASK);
while (!mzrt_cas16(&SCHEME_PAIR_FLAGS(obj2), orig_flags, flags)) {
orig_flags = SCHEME_PAIR_FLAGS(obj2);
flags = orig_flags | (flags & PAIR_FLAG_MASK);
}
}
#else
/* no fuel check, so flags could not have changed */
SCHEME_PAIR_FLAGS(obj2) |= (flags & PAIR_FLAG_MASK); SCHEME_PAIR_FLAGS(obj2) |= (flags & PAIR_FLAG_MASK);
#endif
return (flags & PAIR_IS_LIST); return (flags & PAIR_IS_LIST);
} }
@ -1187,7 +1213,7 @@ list_p_prim (int argc, Scheme_Object *argv[])
#define NORMAL_LIST_INIT() l = scheme_null #define NORMAL_LIST_INIT() l = scheme_null
#define STAR_LIST_INIT() --argc; l = argv[argc] #define STAR_LIST_INIT() --argc; l = argv[argc]
#define LIST_BODY(INIT) \ #define LIST_BODY(INIT, cons) \
int i; \ int i; \
GC_CAN_IGNORE Scheme_Object *l; \ GC_CAN_IGNORE Scheme_Object *l; \
INIT; \ INIT; \
@ -1199,13 +1225,13 @@ list_p_prim (int argc, Scheme_Object *argv[])
static Scheme_Object * static Scheme_Object *
list_prim (int argc, Scheme_Object *argv[]) list_prim (int argc, Scheme_Object *argv[])
{ {
LIST_BODY(NORMAL_LIST_INIT()); LIST_BODY(NORMAL_LIST_INIT(), lcons);
} }
static Scheme_Object * static Scheme_Object *
list_star_prim (int argc, Scheme_Object *argv[]) list_star_prim (int argc, Scheme_Object *argv[])
{ {
LIST_BODY(STAR_LIST_INIT()); LIST_BODY(STAR_LIST_INIT(), cons);
} }
static Scheme_Object * static Scheme_Object *
@ -1313,7 +1339,7 @@ reverse_prim (int argc, Scheme_Object *argv[])
while (!SCHEME_NULLP (lst)) { while (!SCHEME_NULLP (lst)) {
if (!SCHEME_PAIRP(lst)) if (!SCHEME_PAIRP(lst))
scheme_wrong_contract("reverse", "list?", 0, argc, argv); scheme_wrong_contract("reverse", "list?", 0, argc, argv);
last = cons(SCHEME_CAR (lst), last); last = lcons(SCHEME_CAR (lst), last);
lst = SCHEME_CDR (lst); lst = SCHEME_CDR (lst);
SCHEME_USE_FUEL(1); SCHEME_USE_FUEL(1);
@ -2498,7 +2524,7 @@ static Scheme_Object *do_map_hash_table(int argc,
p[1] = v; p[1] = v;
if (keep) { if (keep) {
v = _scheme_apply(f, 2, p); v = _scheme_apply(f, 2, p);
v = cons(v, scheme_null); v = lcons(v, scheme_null);
if (last) if (last)
SCHEME_CDR(last) = v; SCHEME_CDR(last) = v;
else else
@ -2530,7 +2556,7 @@ static Scheme_Object *do_map_hash_table(int argc,
p[1] = v; p[1] = v;
if (keep) { if (keep) {
v = _scheme_apply(f, 2, p); v = _scheme_apply(f, 2, p);
v = cons(v, scheme_null); v = lcons(v, scheme_null);
if (last) if (last)
SCHEME_CDR(last) = v; SCHEME_CDR(last) = v;
else else
@ -2562,7 +2588,7 @@ static Scheme_Object *do_map_hash_table(int argc,
p[1] = iv; p[1] = iv;
if (keep) { if (keep) {
v = _scheme_apply(f, 2, p); v = _scheme_apply(f, 2, p);
v = cons(v, scheme_null); v = lcons(v, scheme_null);
if (last) if (last)
SCHEME_CDR(last) = v; SCHEME_CDR(last) = v;
else else
@ -3559,6 +3585,12 @@ void scheme_init_ephemerons(void)
/* unsafe */ /* unsafe */
/************************************************************/ /************************************************************/
static Scheme_Object *unsafe_cons_list(int argc, Scheme_Object *argv[])
{
return lcons(argv[0], argv[1]);
}
static Scheme_Object *unsafe_car (int argc, Scheme_Object *argv[]) static Scheme_Object *unsafe_car (int argc, Scheme_Object *argv[])
{ {
if (scheme_current_thread->constant_folding) return scheme_checked_car(argc, argv); if (scheme_current_thread->constant_folding) return scheme_checked_car(argc, argv);

View File

@ -945,6 +945,7 @@ static int is_movable_prim(Scheme_Object *rator, int n, int cross_lambda)
return values that contain all arguments: */ return values that contain all arguments: */
&& (SAME_OBJ(scheme_list_proc, rator) && (SAME_OBJ(scheme_list_proc, rator)
|| (SAME_OBJ(scheme_cons_proc, rator) && (n == 2)) || (SAME_OBJ(scheme_cons_proc, rator) && (n == 2))
|| (SAME_OBJ(scheme_unsafe_cons_list_proc, rator) && (n == 2))
|| SAME_OBJ(scheme_list_star_proc, rator) || SAME_OBJ(scheme_list_star_proc, rator)
|| SAME_OBJ(scheme_vector_proc, rator) || SAME_OBJ(scheme_vector_proc, rator)
|| SAME_OBJ(scheme_vector_immutable_proc, rator) || SAME_OBJ(scheme_vector_immutable_proc, rator)
@ -2410,6 +2411,7 @@ static Scheme_Object *finish_optimize_application2(Scheme_App2_Rec *app, Optimiz
Scheme_App3_Rec *app3 = (Scheme_App3_Rec *)rand; Scheme_App3_Rec *app3 = (Scheme_App3_Rec *)rand;
if (IS_NAMED_PRIM(app->rator, "car")) { if (IS_NAMED_PRIM(app->rator, "car")) {
if (SAME_OBJ(scheme_cons_proc, app3->rator) if (SAME_OBJ(scheme_cons_proc, app3->rator)
|| SAME_OBJ(scheme_unsafe_cons_list_proc, app3->rator)
|| SAME_OBJ(scheme_list_proc, app3->rator) || SAME_OBJ(scheme_list_proc, app3->rator)
|| SAME_OBJ(scheme_list_star_proc, app3->rator)) { || SAME_OBJ(scheme_list_star_proc, app3->rator)) {
/* (car ({cons|list|list*} X Y)) */ /* (car ({cons|list|list*} X Y)) */
@ -2421,7 +2423,8 @@ static Scheme_Object *finish_optimize_application2(Scheme_App2_Rec *app, Optimiz
} }
} else if (IS_NAMED_PRIM(app->rator, "cdr")) { } else if (IS_NAMED_PRIM(app->rator, "cdr")) {
/* (cdr (cons X Y)) */ /* (cdr (cons X Y)) */
if (SAME_OBJ(scheme_cons_proc, app3->rator)) { if (SAME_OBJ(scheme_cons_proc, app3->rator)
|| SAME_OBJ(scheme_unsafe_cons_list_proc, app3->rator)) {
if ((scheme_omittable_expr(app3->rand2, 1, 5, 0, info, NULL, -1, 0) if ((scheme_omittable_expr(app3->rand2, 1, 5, 0, info, NULL, -1, 0)
|| single_valued_noncm_expression(app3->rand2, 5)) || single_valued_noncm_expression(app3->rand2, 5))
&& scheme_omittable_expr(app3->rand1, 1, 5, 0, info, NULL, -1, 0)) { && scheme_omittable_expr(app3->rand1, 1, 5, 0, info, NULL, -1, 0)) {

View File

@ -568,6 +568,7 @@ MZ_EXTERN void scheme_prim_is_method(Scheme_Object *o);
MZ_EXTERN Scheme_Object *scheme_make_pair(Scheme_Object *car, Scheme_Object *cdr); MZ_EXTERN Scheme_Object *scheme_make_pair(Scheme_Object *car, Scheme_Object *cdr);
MZ_EXTERN Scheme_Object *scheme_make_mutable_pair(Scheme_Object *car, Scheme_Object *cdr); MZ_EXTERN Scheme_Object *scheme_make_mutable_pair(Scheme_Object *car, Scheme_Object *cdr);
MZ_EXTERN Scheme_Object *scheme_make_list_pair(Scheme_Object *car, Scheme_Object *cdr);
MZ_EXTERN Scheme_Object *scheme_make_raw_pair(Scheme_Object *, Scheme_Object *); MZ_EXTERN Scheme_Object *scheme_make_raw_pair(Scheme_Object *, Scheme_Object *);

View File

@ -454,6 +454,7 @@ Scheme_Object *(*scheme_make_closed_prim_w_everything)(Scheme_Closed_Prim *fun,
void (*scheme_prim_is_method)(Scheme_Object *o); void (*scheme_prim_is_method)(Scheme_Object *o);
Scheme_Object *(*scheme_make_pair)(Scheme_Object *car, Scheme_Object *cdr); Scheme_Object *(*scheme_make_pair)(Scheme_Object *car, Scheme_Object *cdr);
Scheme_Object *(*scheme_make_mutable_pair)(Scheme_Object *car, Scheme_Object *cdr); Scheme_Object *(*scheme_make_mutable_pair)(Scheme_Object *car, Scheme_Object *cdr);
Scheme_Object *(*scheme_make_list_pair)(Scheme_Object *car, Scheme_Object *cdr);
Scheme_Object *(*scheme_make_raw_pair)(Scheme_Object *, Scheme_Object *); Scheme_Object *(*scheme_make_raw_pair)(Scheme_Object *, Scheme_Object *);
Scheme_Object *(*scheme_make_byte_string)(const char *chars); Scheme_Object *(*scheme_make_byte_string)(const char *chars);
Scheme_Object *(*scheme_make_sized_byte_string)(char *chars, intptr_t len, int copy); Scheme_Object *(*scheme_make_sized_byte_string)(char *chars, intptr_t len, int copy);

View File

@ -319,6 +319,7 @@
scheme_extension_table->scheme_prim_is_method = scheme_prim_is_method; scheme_extension_table->scheme_prim_is_method = scheme_prim_is_method;
scheme_extension_table->scheme_make_pair = scheme_make_pair; scheme_extension_table->scheme_make_pair = scheme_make_pair;
scheme_extension_table->scheme_make_mutable_pair = scheme_make_mutable_pair; scheme_extension_table->scheme_make_mutable_pair = scheme_make_mutable_pair;
scheme_extension_table->scheme_make_list_pair = scheme_make_list_pair;
scheme_extension_table->scheme_make_raw_pair = scheme_make_raw_pair; scheme_extension_table->scheme_make_raw_pair = scheme_make_raw_pair;
scheme_extension_table->scheme_make_byte_string = scheme_make_byte_string; scheme_extension_table->scheme_make_byte_string = scheme_make_byte_string;
scheme_extension_table->scheme_make_sized_byte_string = scheme_make_sized_byte_string; scheme_extension_table->scheme_make_sized_byte_string = scheme_make_sized_byte_string;

View File

@ -319,6 +319,7 @@
#define scheme_prim_is_method (scheme_extension_table->scheme_prim_is_method) #define scheme_prim_is_method (scheme_extension_table->scheme_prim_is_method)
#define scheme_make_pair (scheme_extension_table->scheme_make_pair) #define scheme_make_pair (scheme_extension_table->scheme_make_pair)
#define scheme_make_mutable_pair (scheme_extension_table->scheme_make_mutable_pair) #define scheme_make_mutable_pair (scheme_extension_table->scheme_make_mutable_pair)
#define scheme_make_list_pair (scheme_extension_table->scheme_make_list_pair)
#define scheme_make_raw_pair (scheme_extension_table->scheme_make_raw_pair) #define scheme_make_raw_pair (scheme_extension_table->scheme_make_raw_pair)
#define scheme_make_byte_string (scheme_extension_table->scheme_make_byte_string) #define scheme_make_byte_string (scheme_extension_table->scheme_make_byte_string)
#define scheme_make_sized_byte_string (scheme_extension_table->scheme_make_sized_byte_string) #define scheme_make_sized_byte_string (scheme_extension_table->scheme_make_sized_byte_string)

View File

@ -15,7 +15,7 @@
#define USE_COMPILED_STARTUP 1 #define USE_COMPILED_STARTUP 1
#define EXPECTED_PRIM_COUNT 1073 #define EXPECTED_PRIM_COUNT 1073
#define EXPECTED_UNSAFE_COUNT 79 #define EXPECTED_UNSAFE_COUNT 80
#define EXPECTED_FLFXNUM_COUNT 69 #define EXPECTED_FLFXNUM_COUNT 69
#define EXPECTED_FUTURES_COUNT 15 #define EXPECTED_FUTURES_COUNT 15

View File

@ -361,6 +361,7 @@ extern Scheme_Object *scheme_procedure_arity_includes_proc;
extern Scheme_Object *scheme_void_proc; extern Scheme_Object *scheme_void_proc;
extern Scheme_Object *scheme_pair_p_proc; extern Scheme_Object *scheme_pair_p_proc;
extern Scheme_Object *scheme_mpair_p_proc; extern Scheme_Object *scheme_mpair_p_proc;
extern Scheme_Object *scheme_unsafe_cons_list_proc;
extern Scheme_Object *scheme_unsafe_car_proc; extern Scheme_Object *scheme_unsafe_car_proc;
extern Scheme_Object *scheme_unsafe_cdr_proc; extern Scheme_Object *scheme_unsafe_cdr_proc;
extern Scheme_Object *scheme_unsafe_mcar_proc; extern Scheme_Object *scheme_unsafe_mcar_proc;

View File

@ -13,12 +13,12 @@
consistently.) consistently.)
*/ */
#define MZSCHEME_VERSION "5.3.1.5" #define MZSCHEME_VERSION "5.3.1.6"
#define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_X 5
#define MZSCHEME_VERSION_Y 3 #define MZSCHEME_VERSION_Y 3
#define MZSCHEME_VERSION_Z 1 #define MZSCHEME_VERSION_Z 1
#define MZSCHEME_VERSION_W 5 #define MZSCHEME_VERSION_W 6
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)