add `unsafe-cons-pair'
Also, make `list?' more optimistic about checking is the "is list?" flag on a pair.
This commit is contained in:
parent
9e3f9fbe3e
commit
5400b41bce
|
@ -192,6 +192,12 @@ Unsafe variants of @racket[car], @racket[cdr], @racket[mcar],
|
|||
@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[(
|
||||
@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]
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
Version 5.3.1.6
|
||||
racket/unsafe/ops: added unsafe-cons-list
|
||||
|
||||
Version 5.3.1.5
|
||||
racket/gui: added get-current-mouse-state
|
||||
|
||||
|
|
|
@ -271,6 +271,7 @@ EXPORTS
|
|||
scheme_prim_is_method
|
||||
scheme_make_pair
|
||||
scheme_make_mutable_pair
|
||||
scheme_make_list_pair
|
||||
scheme_make_raw_pair
|
||||
scheme_make_byte_string
|
||||
scheme_make_sized_byte_string
|
||||
|
|
|
@ -286,6 +286,7 @@ EXPORTS
|
|||
scheme_prim_is_method
|
||||
scheme_make_pair
|
||||
scheme_make_mutable_pair
|
||||
scheme_make_list_pair
|
||||
scheme_make_raw_pair
|
||||
scheme_make_byte_string
|
||||
scheme_make_sized_byte_string
|
||||
|
|
|
@ -288,6 +288,7 @@ scheme_make_closed_prim_w_everything
|
|||
scheme_prim_is_method
|
||||
scheme_make_pair
|
||||
scheme_make_mutable_pair
|
||||
scheme_make_list_pair
|
||||
scheme_make_raw_pair
|
||||
scheme_make_byte_string
|
||||
scheme_make_sized_byte_string
|
||||
|
|
|
@ -294,6 +294,7 @@ scheme_make_closed_prim_w_everything
|
|||
scheme_prim_is_method
|
||||
scheme_make_pair
|
||||
scheme_make_mutable_pair
|
||||
scheme_make_list_pair
|
||||
scheme_make_raw_pair
|
||||
scheme_make_byte_string
|
||||
scheme_make_sized_byte_string
|
||||
|
|
|
@ -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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
81,194,248,22,163,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,
|
||||
81,194,248,22,164,17,193,249,22,156,4,80,158,39,36,251,22,89,2,18,248,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
2,23,248,22,163,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,
|
||||
2,23,248,22,164,17,201,251,22,89,2,18,2,23,2,23,249,22,79,2,7,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
22,163,17,201,248,22,164,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,
|
||||
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,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,
|
||||
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,
|
||||
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,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,
|
||||
|
@ -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,
|
||||
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,
|
||||
9,248,22,157,4,248,22,80,200,64,101,108,115,101,10,248,22,163,17,197,250,
|
||||
22,90,2,22,9,248,22,164,17,200,249,22,79,2,11,248,22,81,202,99,13,
|
||||
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,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,
|
||||
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,
|
||||
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,104,198,27,248,22,157,4,248,22,163,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,
|
||||
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,164,17,197,250,22,89,2,28,248,22,
|
||||
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,
|
||||
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,
|
||||
|
@ -100,7 +100,7 @@
|
|||
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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
22,163,17,23,196,1,250,22,90,248,2,103,248,22,163,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,
|
||||
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,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,
|
||||
9,28,248,23,194,2,248,22,80,23,196,2,249,22,79,248,22,163,17,23,197,
|
||||
2,249,2,107,23,197,1,248,22,164,17,23,199,1,249,2,107,194,248,22,164,
|
||||
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,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,
|
||||
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,
|
||||
|
@ -581,34 +581,37 @@
|
|||
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,
|
||||
0,0,0,0,0,0,0,0,0,0,12,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,
|
||||
1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23,115,
|
||||
116,114,117,99,116,58,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,
|
||||
108,76,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,77,84,72,
|
||||
45,112,108,97,99,101,45,99,104,97,110,110,101,108,63,1,20,84,72,45,112,
|
||||
108,97,99,101,45,99,104,97,110,110,101,108,45,114,101,102,1,21,84,72,45,
|
||||
112,108,97,99,101,45,99,104,97,110,110,101,108,45,115,101,116,33,79,84,72,
|
||||
45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,105,110,1,20,84,72,
|
||||
45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,111,117,116,249,80,158,
|
||||
38,39,195,36,249,80,158,38,39,195,36,249,80,158,38,39,195,37,159,36,20,
|
||||
113,159,36,16,1,11,16,0,20,26,144,9,2,1,2,1,29,11,11,11,9,
|
||||
9,11,11,11,10,45,80,158,36,36,20,113,159,36,16,7,2,2,2,3,2,
|
||||
4,2,5,2,6,2,7,2,8,16,0,37,39,36,16,0,36,16,2,2,5,
|
||||
2,6,38,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,16,5,11,
|
||||
11,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,41,41,37,12,11,
|
||||
11,16,0,16,0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,
|
||||
16,2,20,15,16,6,253,22,135,11,2,3,11,38,36,11,248,22,89,249,22,
|
||||
79,22,186,10,88,163,36,37,45,44,9,223,9,33,9,80,159,36,36,37,80,
|
||||
159,36,37,37,80,159,36,38,37,80,159,36,39,37,80,159,36,40,37,20,15,
|
||||
16,3,249,22,7,88,163,36,37,45,44,9,223,2,33,10,88,163,36,37,45,
|
||||
44,9,223,2,33,11,80,159,36,41,37,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, 501);
|
||||
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,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,190,0,197,
|
||||
0,0,0,222,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,
|
||||
116,1,23,115,116,114,117,99,116,58,84,72,45,112,108,97,99,101,45,99,104,
|
||||
97,110,110,101,108,76,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,
|
||||
108,77,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,63,1,20,
|
||||
84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,114,101,102,1,
|
||||
21,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,115,101,116,
|
||||
33,79,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,105,110,
|
||||
1,20,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,111,117,
|
||||
116,249,80,158,38,39,195,36,249,80,158,38,39,195,36,249,80,158,38,39,195,
|
||||
36,249,80,158,38,39,195,37,249,80,158,38,39,195,37,159,36,20,113,159,36,
|
||||
16,1,11,16,0,20,26,144,9,2,1,2,1,29,11,11,11,9,9,11,11,
|
||||
11,10,45,80,158,36,36,20,113,159,36,16,7,2,2,2,3,2,4,2,5,
|
||||
2,6,2,7,2,8,16,0,37,39,36,16,0,36,16,2,2,5,2,6,38,
|
||||
11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,16,5,11,11,11,11,
|
||||
11,16,5,2,3,2,7,2,8,2,4,2,2,41,41,37,12,11,11,16,0,
|
||||
16,0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,3,20,
|
||||
15,16,6,253,22,135,11,2,3,11,38,36,11,248,22,89,249,22,79,22,186,
|
||||
10,88,163,36,37,45,44,9,223,9,33,9,80,159,36,36,37,80,159,36,37,
|
||||
37,80,159,36,38,37,80,159,36,39,37,80,159,36,40,37,20,15,16,2,20,
|
||||
27,158,88,163,36,37,45,44,9,223,0,33,10,88,163,36,37,45,44,9,223,
|
||||
0,33,11,80,159,36,41,37,20,15,16,2,20,27,158,88,163,36,37,45,44,
|
||||
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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
2,249,22,7,9,248,22,163,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,
|
||||
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,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,
|
||||
199,196,195,249,22,7,249,22,79,248,22,163,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,
|
||||
2,249,22,7,9,248,22,164,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,164,
|
||||
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,164,17,195,90,159,38,11,89,161,
|
||||
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,164,17,199,196,195,249,22,7,249,22,
|
||||
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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
23,195,1,192,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22,163,
|
||||
17,195,27,248,22,164,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,
|
||||
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,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,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,
|
||||
7,9,248,22,163,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,
|
||||
79,248,22,163,17,202,196,195,249,22,7,249,22,79,248,22,163,17,200,196,195,
|
||||
7,9,248,22,164,17,197,90,159,38,11,89,161,38,36,11,248,2,61,248,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,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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
199,251,2,72,196,197,248,22,81,199,248,22,164,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,
|
||||
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,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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
22,163,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,
|
||||
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,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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
22,77,23,197,2,248,22,163,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,
|
||||
23,198,2,249,22,93,248,22,164,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,
|
||||
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,165,17,200,248,22,106,200,28,248,22,77,
|
||||
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,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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
28,248,22,77,23,195,2,249,2,71,248,22,163,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,
|
||||
2,36,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,28,248,22,77,193,248,22,164,17,193,11,11,11,27,
|
||||
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,164,17,23,197,2,249,22,93,248,
|
||||
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,165,17,23,202,
|
||||
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,
|
||||
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,
|
||||
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,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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
|
@ -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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
|
@ -1017,7 +1020,7 @@
|
|||
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,
|
||||
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,
|
||||
|
|
|
@ -1228,7 +1228,7 @@ int scheme_generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int
|
|||
int dest);
|
||||
int scheme_generate_inlined_test(mz_jit_state *jitter, Scheme_Object *obj, int branch_short,
|
||||
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 inline_slow, int pop_and_jump,
|
||||
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
|
||||
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 scheme_generate_alloc_retry(mz_jit_state *jitter, int i);
|
||||
#else
|
||||
|
|
|
@ -2168,7 +2168,7 @@ static int common5(mz_jit_state *jitter, void *_data)
|
|||
jit_ldxr_p(JIT_R1, JIT_RUNSTACK, JIT_R2);
|
||||
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();
|
||||
|
||||
mz_get_local_p(JIT_R2, JIT_LOCAL3);
|
||||
|
|
|
@ -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);
|
||||
return 1;
|
||||
} 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);
|
||||
|
||||
|
@ -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);
|
||||
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) {
|
||||
ref0 = jit_patchable_movi_p(JIT_V1, jit_forward());
|
||||
(void)jit_calli(sjc.list_p_branch_code);
|
||||
|
||||
mz_patch_branch(ref3);
|
||||
mz_patch_branch(ref6);
|
||||
|
||||
scheme_add_branch_false_movi(for_branch, ref0);
|
||||
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());
|
||||
|
||||
mz_patch_branch(ref3);
|
||||
mz_patch_branch(ref6);
|
||||
(void)jit_movi_p(dest, scheme_true);
|
||||
|
||||
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_runstack_unskipped(jitter, 1);
|
||||
(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")) {
|
||||
mz_runstack_skipped(jitter, 1);
|
||||
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;
|
||||
} else if (IS_NAMED_PRIM(rator, "cons")
|
||||
|| IS_NAMED_PRIM(rator, "list*")) {
|
||||
int dir;
|
||||
int dir, known_list;
|
||||
LOG_IT(("inlined cons\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, dest);
|
||||
if (scheme_is_list(app->rand2))
|
||||
known_list = 1;
|
||||
else
|
||||
known_list = 2;
|
||||
|
||||
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")) {
|
||||
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();
|
||||
mz_rs_sync();
|
||||
|
||||
scheme_generate_cons_alloc(jitter, 1, 0, JIT_R0);
|
||||
scheme_generate_cons_alloc(jitter, 1, 0, 1, JIT_R0);
|
||||
CHECK_LIMIT();
|
||||
|
||||
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);
|
||||
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")
|
||||
|| IS_NAMED_PRIM(rator, "vector")) {
|
||||
return generate_vector_alloc(jitter, rator, NULL, NULL, app, dest);
|
||||
|
@ -3780,6 +3800,27 @@ int scheme_generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int
|
|||
CHECK_LIMIT();
|
||||
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
|
||||
jit_movi_l(JIT_R2, c);
|
||||
if (star)
|
||||
|
@ -3802,6 +3843,7 @@ int scheme_generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int
|
|||
}
|
||||
jit_retval(dest);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (c) {
|
||||
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;
|
||||
}
|
||||
|
||||
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 */
|
||||
{
|
||||
#ifdef CAN_INLINE_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();
|
||||
|
||||
if (rev) {
|
||||
|
|
|
@ -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_p_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_cdr_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 *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_cdr (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;
|
||||
|
||||
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);
|
||||
p = scheme_make_folding_prim(unsafe_car, "unsafe-car", 1, 1, 1);
|
||||
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
|
||||
}
|
||||
|
||||
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 *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 lcons(car, cdr) scheme_make_list_pair(car, cdr)
|
||||
|
||||
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;
|
||||
|
||||
for (i = size; i--; ) {
|
||||
pair = cons(argv[i], pair);
|
||||
pair = lcons(argv[i], pair);
|
||||
}
|
||||
|
||||
return pair;
|
||||
|
@ -900,12 +918,12 @@ Scheme_Object *scheme_build_list_offset(int size, Scheme_Object **argv, int delt
|
|||
/* clearing mode: */
|
||||
size = -size;
|
||||
for (i = size; i-- > delta; ) {
|
||||
pair = cons(argv[i], pair);
|
||||
pair = lcons(argv[i], pair);
|
||||
argv[i] = NULL;
|
||||
}
|
||||
} else {
|
||||
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;
|
||||
|
||||
for (i = size; i--; ) {
|
||||
pair = cons(scheme_false, pair);
|
||||
pair = lcons(scheme_false, pair);
|
||||
}
|
||||
|
||||
return pair;
|
||||
|
@ -968,7 +986,7 @@ scheme_named_map_1(char *name, Scheme_Object *(*fun)(Scheme_Object*, Scheme_Obje
|
|||
Scheme_Object *v;
|
||||
v = SCHEME_STX_CAR(lst);
|
||||
v = fun(v, form);
|
||||
pr = cons(v, scheme_null);
|
||||
pr = lcons(v, scheme_null);
|
||||
if (last)
|
||||
SCHEME_CDR(last) = pr;
|
||||
else
|
||||
|
@ -1168,10 +1186,18 @@ int scheme_is_list(Scheme_Object *obj1)
|
|||
}
|
||||
|
||||
/* Propagate info further up the chain. */
|
||||
/* We could have a race with JIT-generated code, but the worst
|
||||
should be that we lose a flag setting (dangerous in principle,
|
||||
but not in practice). */
|
||||
#ifdef MZ_USE_FUTURES
|
||||
{
|
||||
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);
|
||||
#endif
|
||||
|
||||
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 STAR_LIST_INIT() --argc; l = argv[argc]
|
||||
|
||||
#define LIST_BODY(INIT) \
|
||||
#define LIST_BODY(INIT, cons) \
|
||||
int i; \
|
||||
GC_CAN_IGNORE Scheme_Object *l; \
|
||||
INIT; \
|
||||
|
@ -1199,13 +1225,13 @@ list_p_prim (int argc, Scheme_Object *argv[])
|
|||
static Scheme_Object *
|
||||
list_prim (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
LIST_BODY(NORMAL_LIST_INIT());
|
||||
LIST_BODY(NORMAL_LIST_INIT(), lcons);
|
||||
}
|
||||
|
||||
static Scheme_Object *
|
||||
list_star_prim (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
LIST_BODY(STAR_LIST_INIT());
|
||||
LIST_BODY(STAR_LIST_INIT(), cons);
|
||||
}
|
||||
|
||||
static Scheme_Object *
|
||||
|
@ -1313,7 +1339,7 @@ reverse_prim (int argc, Scheme_Object *argv[])
|
|||
while (!SCHEME_NULLP (lst)) {
|
||||
if (!SCHEME_PAIRP(lst))
|
||||
scheme_wrong_contract("reverse", "list?", 0, argc, argv);
|
||||
last = cons(SCHEME_CAR (lst), last);
|
||||
last = lcons(SCHEME_CAR (lst), last);
|
||||
lst = SCHEME_CDR (lst);
|
||||
|
||||
SCHEME_USE_FUEL(1);
|
||||
|
@ -2498,7 +2524,7 @@ static Scheme_Object *do_map_hash_table(int argc,
|
|||
p[1] = v;
|
||||
if (keep) {
|
||||
v = _scheme_apply(f, 2, p);
|
||||
v = cons(v, scheme_null);
|
||||
v = lcons(v, scheme_null);
|
||||
if (last)
|
||||
SCHEME_CDR(last) = v;
|
||||
else
|
||||
|
@ -2530,7 +2556,7 @@ static Scheme_Object *do_map_hash_table(int argc,
|
|||
p[1] = v;
|
||||
if (keep) {
|
||||
v = _scheme_apply(f, 2, p);
|
||||
v = cons(v, scheme_null);
|
||||
v = lcons(v, scheme_null);
|
||||
if (last)
|
||||
SCHEME_CDR(last) = v;
|
||||
else
|
||||
|
@ -2562,7 +2588,7 @@ static Scheme_Object *do_map_hash_table(int argc,
|
|||
p[1] = iv;
|
||||
if (keep) {
|
||||
v = _scheme_apply(f, 2, p);
|
||||
v = cons(v, scheme_null);
|
||||
v = lcons(v, scheme_null);
|
||||
if (last)
|
||||
SCHEME_CDR(last) = v;
|
||||
else
|
||||
|
@ -3559,6 +3585,12 @@ void scheme_init_ephemerons(void)
|
|||
/* 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[])
|
||||
{
|
||||
if (scheme_current_thread->constant_folding) return scheme_checked_car(argc, argv);
|
||||
|
|
|
@ -945,6 +945,7 @@ static int is_movable_prim(Scheme_Object *rator, int n, int cross_lambda)
|
|||
return values that contain all arguments: */
|
||||
&& (SAME_OBJ(scheme_list_proc, rator)
|
||||
|| (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_vector_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;
|
||||
if (IS_NAMED_PRIM(app->rator, "car")) {
|
||||
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_star_proc, app3->rator)) {
|
||||
/* (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")) {
|
||||
/* (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)
|
||||
|| single_valued_noncm_expression(app3->rand2, 5))
|
||||
&& scheme_omittable_expr(app3->rand1, 1, 5, 0, info, NULL, -1, 0)) {
|
||||
|
|
|
@ -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_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 *);
|
||||
|
||||
|
|
|
@ -454,6 +454,7 @@ Scheme_Object *(*scheme_make_closed_prim_w_everything)(Scheme_Closed_Prim *fun,
|
|||
void (*scheme_prim_is_method)(Scheme_Object *o);
|
||||
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_list_pair)(Scheme_Object *car, Scheme_Object *cdr);
|
||||
Scheme_Object *(*scheme_make_raw_pair)(Scheme_Object *, Scheme_Object *);
|
||||
Scheme_Object *(*scheme_make_byte_string)(const char *chars);
|
||||
Scheme_Object *(*scheme_make_sized_byte_string)(char *chars, intptr_t len, int copy);
|
||||
|
|
|
@ -319,6 +319,7 @@
|
|||
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_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_byte_string = scheme_make_byte_string;
|
||||
scheme_extension_table->scheme_make_sized_byte_string = scheme_make_sized_byte_string;
|
||||
|
|
|
@ -319,6 +319,7 @@
|
|||
#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_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_byte_string (scheme_extension_table->scheme_make_byte_string)
|
||||
#define scheme_make_sized_byte_string (scheme_extension_table->scheme_make_sized_byte_string)
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#define USE_COMPILED_STARTUP 1
|
||||
|
||||
#define EXPECTED_PRIM_COUNT 1073
|
||||
#define EXPECTED_UNSAFE_COUNT 79
|
||||
#define EXPECTED_UNSAFE_COUNT 80
|
||||
#define EXPECTED_FLFXNUM_COUNT 69
|
||||
#define EXPECTED_FUTURES_COUNT 15
|
||||
|
||||
|
|
|
@ -361,6 +361,7 @@ extern Scheme_Object *scheme_procedure_arity_includes_proc;
|
|||
extern Scheme_Object *scheme_void_proc;
|
||||
extern Scheme_Object *scheme_pair_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_cdr_proc;
|
||||
extern Scheme_Object *scheme_unsafe_mcar_proc;
|
||||
|
|
|
@ -13,12 +13,12 @@
|
|||
consistently.)
|
||||
*/
|
||||
|
||||
#define MZSCHEME_VERSION "5.3.1.5"
|
||||
#define MZSCHEME_VERSION "5.3.1.6"
|
||||
|
||||
#define MZSCHEME_VERSION_X 5
|
||||
#define MZSCHEME_VERSION_Y 3
|
||||
#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_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)
|
||||
|
|
Loading…
Reference in New Issue
Block a user