compile-context-preservation-enabled and slightly better stack traces for errors from JIT-inlined arithmetic

svn: r12602
This commit is contained in:
Matthew Flatt 2008-11-26 23:07:13 +00:00
parent 2c48c2c817
commit 7022d3cf0a
11 changed files with 358 additions and 260 deletions

View File

@ -408,6 +408,14 @@ is not defined at the time the @scheme[set!] is performed. Note that
this parameter is used when an expression is @italic{compiled}, not
when it is @italic{evaluated}.}
@defboolparam[compile-context-preservation-enabled on?]{
A parameter that determines whether compilation should avoid
function-call inlining and other optimizations that may cause
information to be lost from stack traces (as reported by
@scheme[continuation-mark-set->context]). The default is @scheme[#f],
which allows such optimizations.}
@defboolparam[eval-jit-enabled on?]{
A parameter that determines whether the native-code just-in-time

View File

@ -1,3 +1,7 @@
Version 4.1.3.3
Added compile-context-preservation-enabled
Added scheme/package, scheme/splicing
Version 4.1.3.2
Added internal-definition-context-seal, which must be used on an
internal-definition context before it's part of a fully expanded form

View File

@ -1197,6 +1197,7 @@ enum {
MZCONFIG_ALLOW_SET_UNDEFINED,
MZCONFIG_COMPILE_MODULE_CONSTS,
MZCONFIG_USE_JIT,
MZCONFIG_DISALLOW_INLINE,
MZCONFIG_CUSTODIAN,
MZCONFIG_INSPECTOR,

View File

@ -1,10 +1,10 @@
{
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,50,50,0,0,0,1,0,0,6,0,9,0,
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,51,50,0,0,0,1,0,0,6,0,9,0,
13,0,26,0,29,0,34,0,41,0,46,0,51,0,58,0,65,0,69,0,78,
0,84,0,98,0,112,0,115,0,119,0,121,0,132,0,134,0,148,0,155,0,
177,0,179,0,193,0,253,0,23,1,32,1,41,1,51,1,68,1,107,1,146,
1,215,1,4,2,92,2,137,2,142,2,162,2,53,3,73,3,124,3,190,3,
75,4,233,4,20,5,31,5,110,5,0,0,119,7,0,0,65,98,101,103,105,
1,215,1,4,2,92,2,137,2,142,2,162,2,51,3,71,3,121,3,187,3,
72,4,230,4,17,5,28,5,107,5,0,0,106,7,0,0,65,98,101,103,105,
110,29,11,11,63,108,101,116,72,112,97,114,97,109,101,116,101,114,105,122,101,
62,111,114,64,108,101,116,42,66,117,110,108,101,115,115,64,99,111,110,100,64,
119,104,101,110,66,108,101,116,114,101,99,66,100,101,102,105,110,101,63,97,110,
@ -14,11 +14,11 @@
115,61,120,73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,97,109,
98,100,97,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,
45,107,101,121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,98,
10,35,11,8,174,227,94,159,2,16,35,35,159,2,15,35,35,16,20,2,3,
10,35,11,8,133,229,94,159,2,16,35,35,159,2,15,35,35,16,20,2,3,
2,2,2,4,2,2,2,10,2,2,2,5,2,2,2,6,2,2,2,7,2,
2,2,8,2,2,2,9,2,2,2,11,2,2,2,12,2,2,97,36,11,8,
174,227,93,159,2,15,35,36,16,2,2,13,161,2,2,36,2,13,2,2,2,
13,97,10,11,11,8,174,227,16,0,97,10,37,11,8,174,227,16,0,13,16,
133,229,93,159,2,15,35,36,16,2,2,13,161,2,2,36,2,13,2,2,2,
13,97,10,11,11,8,133,229,16,0,97,10,37,11,8,133,229,16,0,13,16,
4,35,29,11,11,2,2,11,18,98,64,104,101,114,101,8,31,8,30,8,29,
8,28,8,27,27,248,22,133,4,23,196,1,249,22,190,3,80,158,38,35,251,
22,74,2,17,248,22,89,23,200,2,12,249,22,64,2,1,248,22,91,23,202,
@ -28,78 +28,78 @@
36,28,248,22,72,248,22,66,23,195,2,248,22,65,193,249,22,190,3,80,158,
38,35,251,22,74,2,17,248,22,65,23,200,2,249,22,64,2,12,248,22,66,
23,202,1,11,18,100,10,8,31,8,30,8,29,8,28,8,27,16,4,11,11,
2,18,3,1,7,101,110,118,57,55,50,53,16,4,11,11,2,19,3,1,7,
101,110,118,57,55,50,54,27,248,22,66,248,22,133,4,23,197,1,28,248,22,
2,18,3,1,7,101,110,118,57,55,57,56,16,4,11,11,2,19,3,1,7,
101,110,118,57,55,57,57,27,248,22,66,248,22,133,4,23,197,1,28,248,22,
72,23,194,2,20,15,159,36,35,36,28,248,22,72,248,22,66,23,195,2,248,
22,65,193,249,22,190,3,80,158,38,35,250,22,74,2,20,248,22,74,249,22,
74,248,22,74,2,21,248,22,65,23,202,2,251,22,74,2,17,2,21,2,21,
249,22,64,2,5,248,22,66,23,205,1,18,100,11,8,31,8,30,8,29,8,
28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,57,55,50,56,16,4,
11,11,2,19,3,1,7,101,110,118,57,55,50,57,248,22,133,4,193,27,248,
28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,57,56,48,49,16,4,
11,11,2,19,3,1,7,101,110,118,57,56,48,50,248,22,133,4,193,27,248,
22,133,4,194,249,22,64,248,22,74,248,22,65,196,248,22,66,195,27,248,22,
66,248,22,133,4,23,197,1,249,22,190,3,80,158,38,35,28,248,22,52,248,
22,191,3,248,22,65,23,198,2,27,249,22,2,32,0,89,162,8,44,36,42,
9,222,33,39,248,22,133,4,248,22,89,23,200,2,250,22,74,2,22,248,22,
74,249,22,74,248,22,74,248,22,65,23,204,2,250,22,75,2,23,249,22,2,
22,65,23,204,2,248,22,91,23,206,2,249,22,64,248,22,65,23,202,1,249,
22,2,22,89,23,200,1,250,22,75,2,20,249,22,2,32,0,89,162,8,44,
36,46,9,222,33,40,248,22,133,4,248,22,65,201,248,22,66,198,27,248,22,
133,4,194,249,22,64,248,22,74,248,22,65,196,248,22,66,195,27,248,22,66,
248,22,133,4,23,197,1,249,22,190,3,80,158,38,35,250,22,75,2,22,249,
22,2,32,0,89,162,8,44,36,46,9,222,33,42,248,22,133,4,248,22,65,
201,248,22,66,198,27,248,22,66,248,22,133,4,196,27,248,22,133,4,248,22,
65,195,249,22,190,3,80,158,39,35,28,248,22,72,195,250,22,75,2,20,9,
248,22,66,199,250,22,74,2,3,248,22,74,248,22,65,199,250,22,75,2,6,
248,22,66,201,248,22,66,202,27,248,22,66,248,22,133,4,23,197,1,27,249,
22,1,22,78,249,22,2,22,133,4,248,22,133,4,248,22,65,199,249,22,190,
3,80,158,39,35,251,22,74,1,22,119,105,116,104,45,99,111,110,116,105,110,
117,97,116,105,111,110,45,109,97,114,107,2,24,250,22,75,1,23,101,120,116,
101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,21,
95,1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,45,
115,101,116,45,102,105,114,115,116,11,2,24,201,250,22,75,2,20,9,248,22,
66,203,27,248,22,66,248,22,133,4,23,197,1,28,248,22,72,23,194,2,20,
15,159,36,35,36,249,22,190,3,80,158,38,35,27,248,22,133,4,248,22,65,
23,198,2,28,249,22,162,8,62,61,62,248,22,191,3,248,22,89,23,197,2,
250,22,74,2,20,248,22,74,249,22,74,21,93,2,25,248,22,65,199,250,22,
75,2,8,249,22,74,2,25,249,22,74,248,22,98,203,2,25,248,22,66,202,
251,22,74,2,17,28,249,22,162,8,248,22,191,3,248,22,65,23,201,2,64,
101,108,115,101,10,248,22,65,23,198,2,250,22,75,2,20,9,248,22,66,23,
201,1,249,22,64,2,8,248,22,66,23,203,1,99,8,31,8,30,8,29,8,
28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,57,55,53,49,16,4,
11,11,2,19,3,1,7,101,110,118,57,55,53,50,18,158,94,10,64,118,111,
105,100,8,47,27,248,22,66,248,22,133,4,196,249,22,190,3,80,158,38,35,
28,248,22,52,248,22,191,3,248,22,65,197,250,22,74,2,26,248,22,74,248,
22,65,199,248,22,89,198,27,248,22,191,3,248,22,65,197,250,22,74,2,26,
248,22,74,248,22,65,197,250,22,75,2,23,248,22,66,199,248,22,66,202,159,
35,20,103,159,35,16,1,2,1,16,0,83,158,41,20,100,138,69,35,37,109,
105,110,45,115,116,120,2,2,11,10,11,10,35,80,158,35,35,20,103,159,35,
16,0,16,0,11,11,16,0,35,11,38,35,11,11,16,10,2,3,2,4,2,
5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,16,10,11,11,11,11,
11,11,11,11,11,11,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2,
9,2,10,2,11,2,12,35,45,36,11,11,16,0,16,0,16,0,35,35,11,
11,11,16,0,16,0,16,0,35,35,16,11,16,5,93,2,13,20,15,159,35,
35,35,35,20,103,159,35,16,0,16,1,33,32,10,16,5,93,2,7,89,162,
8,44,36,52,9,223,0,33,33,35,20,103,159,35,16,1,20,25,159,36,2,
2,2,13,16,0,11,16,5,93,2,9,89,162,8,44,36,52,9,223,0,33,
34,35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,5,
93,2,12,89,162,8,44,36,52,9,223,0,33,35,35,20,103,159,35,16,1,
20,25,159,36,2,2,2,13,16,1,33,36,11,16,5,93,2,5,89,162,8,
44,36,55,9,223,0,33,37,35,20,103,159,35,16,1,20,25,159,36,2,2,
2,13,16,1,33,38,11,16,5,93,2,3,89,162,8,44,36,57,9,223,0,
33,41,35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,
5,93,2,10,89,162,8,44,36,52,9,223,0,33,43,35,20,103,159,35,16,
1,20,25,159,36,2,2,2,13,16,0,11,16,5,93,2,6,89,162,8,44,
36,53,9,223,0,33,44,35,20,103,159,35,16,1,20,25,159,36,2,2,2,
13,16,0,11,16,5,93,2,4,89,162,8,44,36,54,9,223,0,33,45,35,
20,103,159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,5,93,2,
8,89,162,8,44,36,57,9,223,0,33,46,35,20,103,159,35,16,1,20,25,
159,36,2,2,2,13,16,1,33,48,11,16,5,93,2,11,89,162,8,44,36,
53,9,223,0,33,49,35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,
16,0,11,16,0,94,2,15,2,16,93,2,15,9,9,35,0};
EVAL_ONE_SIZED_STR((char *)expr, 2032);
22,191,3,248,22,65,23,198,2,27,249,22,2,32,0,89,162,43,36,42,9,
222,33,39,248,22,133,4,248,22,89,23,200,2,250,22,74,2,22,248,22,74,
249,22,74,248,22,74,248,22,65,23,204,2,250,22,75,2,23,249,22,2,22,
65,23,204,2,248,22,91,23,206,2,249,22,64,248,22,65,23,202,1,249,22,
2,22,89,23,200,1,250,22,75,2,20,249,22,2,32,0,89,162,43,36,46,
9,222,33,40,248,22,133,4,248,22,65,201,248,22,66,198,27,248,22,133,4,
194,249,22,64,248,22,74,248,22,65,196,248,22,66,195,27,248,22,66,248,22,
133,4,23,197,1,249,22,190,3,80,158,38,35,250,22,75,2,22,249,22,2,
32,0,89,162,43,36,46,9,222,33,42,248,22,133,4,248,22,65,201,248,22,
66,198,27,248,22,66,248,22,133,4,196,27,248,22,133,4,248,22,65,195,249,
22,190,3,80,158,39,35,28,248,22,72,195,250,22,75,2,20,9,248,22,66,
199,250,22,74,2,3,248,22,74,248,22,65,199,250,22,75,2,6,248,22,66,
201,248,22,66,202,27,248,22,66,248,22,133,4,23,197,1,27,249,22,1,22,
78,249,22,2,22,133,4,248,22,133,4,248,22,65,199,249,22,190,3,80,158,
39,35,251,22,74,1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,
105,111,110,45,109,97,114,107,2,24,250,22,75,1,23,101,120,116,101,110,100,
45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,21,95,1,27,
99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,45,115,101,116,
45,102,105,114,115,116,11,2,24,201,250,22,75,2,20,9,248,22,66,203,27,
248,22,66,248,22,133,4,23,197,1,28,248,22,72,23,194,2,20,15,159,36,
35,36,249,22,190,3,80,158,38,35,27,248,22,133,4,248,22,65,23,198,2,
28,249,22,162,8,62,61,62,248,22,191,3,248,22,89,23,197,2,250,22,74,
2,20,248,22,74,249,22,74,21,93,2,25,248,22,65,199,250,22,75,2,8,
249,22,74,2,25,249,22,74,248,22,98,203,2,25,248,22,66,202,251,22,74,
2,17,28,249,22,162,8,248,22,191,3,248,22,65,23,201,2,64,101,108,115,
101,10,248,22,65,23,198,2,250,22,75,2,20,9,248,22,66,23,201,1,249,
22,64,2,8,248,22,66,23,203,1,99,8,31,8,30,8,29,8,28,8,27,
16,4,11,11,2,18,3,1,7,101,110,118,57,56,50,52,16,4,11,11,2,
19,3,1,7,101,110,118,57,56,50,53,18,158,94,10,64,118,111,105,100,8,
47,27,248,22,66,248,22,133,4,196,249,22,190,3,80,158,38,35,28,248,22,
52,248,22,191,3,248,22,65,197,250,22,74,2,26,248,22,74,248,22,65,199,
248,22,89,198,27,248,22,191,3,248,22,65,197,250,22,74,2,26,248,22,74,
248,22,65,197,250,22,75,2,23,248,22,66,199,248,22,66,202,159,35,20,103,
159,35,16,1,2,1,16,0,83,158,41,20,100,138,69,35,37,109,105,110,45,
115,116,120,2,2,11,10,11,10,35,80,158,35,35,20,103,159,35,16,0,16,
0,11,11,16,0,35,11,38,35,11,11,16,10,2,3,2,4,2,5,2,6,
2,7,2,8,2,9,2,10,2,11,2,12,16,10,11,11,11,11,11,11,11,
11,11,11,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,
2,11,2,12,35,45,36,11,11,16,0,16,0,16,0,35,35,11,11,11,16,
0,16,0,16,0,35,35,16,11,16,5,93,2,13,20,15,159,35,35,35,35,
20,103,159,35,16,0,16,1,33,32,10,16,5,93,2,7,89,162,43,36,52,
9,223,0,33,33,35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,16,
0,11,16,5,93,2,9,89,162,43,36,52,9,223,0,33,34,35,20,103,159,
35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,5,93,2,12,89,162,
43,36,52,9,223,0,33,35,35,20,103,159,35,16,1,20,25,159,36,2,2,
2,13,16,1,33,36,11,16,5,93,2,5,89,162,43,36,55,9,223,0,33,
37,35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,16,1,33,38,11,
16,5,93,2,3,89,162,43,36,57,9,223,0,33,41,35,20,103,159,35,16,
1,20,25,159,36,2,2,2,13,16,0,11,16,5,93,2,10,89,162,43,36,
52,9,223,0,33,43,35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,
16,0,11,16,5,93,2,6,89,162,43,36,53,9,223,0,33,44,35,20,103,
159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,5,93,2,4,89,
162,43,36,54,9,223,0,33,45,35,20,103,159,35,16,1,20,25,159,36,2,
2,2,13,16,0,11,16,5,93,2,8,89,162,43,36,57,9,223,0,33,46,
35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,16,1,33,48,11,16,
5,93,2,11,89,162,43,36,53,9,223,0,33,49,35,20,103,159,35,16,1,
20,25,159,36,2,2,2,13,16,0,11,16,0,94,2,15,2,16,93,2,15,
9,9,35,0};
EVAL_ONE_SIZED_STR((char *)expr, 2019);
}
{
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,50,60,0,0,0,1,0,0,3,0,16,0,
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,51,60,0,0,0,1,0,0,3,0,16,0,
21,0,38,0,53,0,71,0,87,0,97,0,115,0,135,0,151,0,169,0,200,
0,229,0,251,0,9,1,15,1,29,1,34,1,44,1,52,1,80,1,112,1,
157,1,202,1,226,1,9,2,11,2,68,2,158,3,199,3,33,5,137,5,241,
@ -131,173 +131,173 @@
111,114,32,98,121,116,101,32,115,116,114,105,110,103,6,36,36,99,97,110,110,
111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32,116,111,32,97,32,
114,111,111,116,32,112,97,116,104,58,32,5,0,27,20,14,159,80,158,36,50,
250,80,158,39,51,249,22,27,11,80,158,41,50,22,178,12,10,248,22,155,5,
250,80,158,39,51,249,22,27,11,80,158,41,50,22,179,12,10,248,22,155,5,
23,196,2,28,248,22,152,6,23,194,2,12,87,94,248,22,165,8,23,194,1,
248,80,159,37,53,36,195,28,248,22,72,23,195,2,9,27,248,22,65,23,196,
2,27,28,248,22,159,13,23,195,2,23,194,1,28,248,22,158,13,23,195,2,
249,22,160,13,23,196,1,250,80,158,42,48,248,22,174,13,2,20,11,10,250,
80,158,40,48,248,22,174,13,2,20,23,197,1,10,28,23,193,2,249,22,64,
248,22,162,13,249,22,160,13,23,198,1,247,22,175,13,27,248,22,66,23,200,
1,28,248,22,72,23,194,2,9,27,248,22,65,23,195,2,27,28,248,22,159,
13,23,195,2,23,194,1,28,248,22,158,13,23,195,2,249,22,160,13,23,196,
1,250,80,158,47,48,248,22,174,13,2,20,11,10,250,80,158,45,48,248,22,
174,13,2,20,23,197,1,10,28,23,193,2,249,22,64,248,22,162,13,249,22,
160,13,23,198,1,247,22,175,13,248,80,159,45,52,36,248,22,66,23,199,1,
2,27,28,248,22,160,13,23,195,2,23,194,1,28,248,22,159,13,23,195,2,
249,22,161,13,23,196,1,250,80,158,42,48,248,22,175,13,2,20,11,10,250,
80,158,40,48,248,22,175,13,2,20,23,197,1,10,28,23,193,2,249,22,64,
248,22,163,13,249,22,161,13,23,198,1,247,22,176,13,27,248,22,66,23,200,
1,28,248,22,72,23,194,2,9,27,248,22,65,23,195,2,27,28,248,22,160,
13,23,195,2,23,194,1,28,248,22,159,13,23,195,2,249,22,161,13,23,196,
1,250,80,158,47,48,248,22,175,13,2,20,11,10,250,80,158,45,48,248,22,
175,13,2,20,23,197,1,10,28,23,193,2,249,22,64,248,22,163,13,249,22,
161,13,23,198,1,247,22,176,13,248,80,159,45,52,36,248,22,66,23,199,1,
87,94,23,193,1,248,80,159,43,52,36,248,22,66,23,197,1,87,94,23,193,
1,27,248,22,66,23,198,1,28,248,22,72,23,194,2,9,27,248,22,65,23,
195,2,27,28,248,22,159,13,23,195,2,23,194,1,28,248,22,158,13,23,195,
2,249,22,160,13,23,196,1,250,80,158,45,48,248,22,174,13,2,20,11,10,
250,80,158,43,48,248,22,174,13,2,20,23,197,1,10,28,23,193,2,249,22,
64,248,22,162,13,249,22,160,13,23,198,1,247,22,175,13,248,80,159,43,52,
36,248,22,66,23,199,1,248,80,159,41,52,36,248,22,66,196,27,248,22,135,
195,2,27,28,248,22,160,13,23,195,2,23,194,1,28,248,22,159,13,23,195,
2,249,22,161,13,23,196,1,250,80,158,45,48,248,22,175,13,2,20,11,10,
250,80,158,43,48,248,22,175,13,2,20,23,197,1,10,28,23,193,2,249,22,
64,248,22,163,13,249,22,161,13,23,198,1,247,22,176,13,248,80,159,43,52,
36,248,22,66,23,199,1,248,80,159,41,52,36,248,22,66,196,27,248,22,136,
13,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,157,6,23,195,
2,27,248,22,157,13,195,28,192,192,248,22,158,13,195,11,87,94,28,28,248,
22,136,13,23,195,2,10,27,248,22,135,13,23,196,2,28,23,193,2,192,87,
94,23,193,1,28,248,22,157,6,23,196,2,27,248,22,157,13,23,197,2,28,
23,193,2,192,87,94,23,193,1,248,22,158,13,23,197,2,11,12,250,22,128,
2,27,248,22,158,13,195,28,192,192,248,22,159,13,195,11,87,94,28,28,248,
22,137,13,23,195,2,10,27,248,22,136,13,23,196,2,28,23,193,2,192,87,
94,23,193,1,28,248,22,157,6,23,196,2,27,248,22,158,13,23,197,2,28,
23,193,2,192,87,94,23,193,1,248,22,159,13,23,197,2,11,12,250,22,129,
9,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,101,6,42,42,
112,97,116,104,32,40,102,111,114,32,97,110,121,32,115,121,115,116,101,109,41,
32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,
23,197,2,28,28,248,22,136,13,23,195,2,249,22,162,8,248,22,137,13,23,
23,197,2,28,28,248,22,137,13,23,195,2,249,22,162,8,248,22,138,13,23,
197,2,2,21,249,22,162,8,247,22,176,7,2,21,27,28,248,22,157,6,23,
196,2,23,195,2,248,22,166,7,248,22,140,13,23,197,2,28,249,22,187,13,
196,2,23,195,2,248,22,166,7,248,22,141,13,23,197,2,28,249,22,188,13,
0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,
93,34,23,195,2,28,248,22,157,6,195,248,22,143,13,195,194,27,248,22,132,
7,23,195,1,249,22,144,13,248,22,169,7,250,22,129,14,0,6,35,114,120,
34,47,34,28,249,22,187,13,0,22,35,114,120,34,91,47,92,92,93,91,46,
32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22,129,14,
93,34,23,195,2,28,248,22,157,6,195,248,22,144,13,195,194,27,248,22,132,
7,23,195,1,249,22,145,13,248,22,169,7,250,22,130,14,0,6,35,114,120,
34,47,34,28,249,22,188,13,0,22,35,114,120,34,91,47,92,92,93,91,46,
32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22,130,14,
0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,34,
23,202,1,6,2,2,92,49,80,158,43,36,2,21,28,248,22,157,6,194,248,
22,143,13,194,193,87,94,28,27,248,22,135,13,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,157,6,23,196,2,27,248,22,157,13,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,158,13,23,197,2,11,12,250,22,
128,9,23,196,2,2,22,23,197,2,28,248,22,157,13,23,195,2,12,248,22,
154,11,249,22,163,10,248,22,186,6,250,22,141,7,2,23,23,200,1,23,201,
1,247,22,23,87,94,28,27,248,22,135,13,23,196,2,28,23,193,2,192,87,
94,23,193,1,28,248,22,157,6,23,196,2,27,248,22,157,13,23,197,2,28,
23,193,2,192,87,94,23,193,1,248,22,158,13,23,197,2,11,12,250,22,128,
9,23,196,2,2,22,23,197,2,28,248,22,157,13,23,195,2,12,248,22,154,
11,249,22,163,10,248,22,186,6,250,22,141,7,2,23,23,200,1,23,201,1,
247,22,23,87,94,87,94,28,27,248,22,135,13,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,157,6,23,196,2,27,248,22,157,13,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,158,13,23,197,2,11,12,250,22,
128,9,195,2,22,23,197,2,28,248,22,157,13,23,195,2,12,248,22,154,11,
249,22,163,10,248,22,186,6,250,22,141,7,2,23,199,23,201,1,247,22,23,
249,22,3,89,162,8,44,36,49,9,223,2,33,34,196,248,22,154,11,249,22,
129,11,23,196,1,247,22,23,87,94,250,80,159,38,39,36,2,7,196,197,251,
22,144,13,194,193,87,94,28,27,248,22,136,13,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,157,6,23,196,2,27,248,22,158,13,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,159,13,23,197,2,11,12,250,22,
129,9,23,196,2,2,22,23,197,2,28,248,22,158,13,23,195,2,12,248,22,
155,11,249,22,164,10,248,22,186,6,250,22,141,7,2,23,23,200,1,23,201,
1,247,22,23,87,94,28,27,248,22,136,13,23,196,2,28,23,193,2,192,87,
94,23,193,1,28,248,22,157,6,23,196,2,27,248,22,158,13,23,197,2,28,
23,193,2,192,87,94,23,193,1,248,22,159,13,23,197,2,11,12,250,22,129,
9,23,196,2,2,22,23,197,2,28,248,22,158,13,23,195,2,12,248,22,155,
11,249,22,164,10,248,22,186,6,250,22,141,7,2,23,23,200,1,23,201,1,
247,22,23,87,94,87,94,28,27,248,22,136,13,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,157,6,23,196,2,27,248,22,158,13,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,159,13,23,197,2,11,12,250,22,
129,9,195,2,22,23,197,2,28,248,22,158,13,23,195,2,12,248,22,155,11,
249,22,164,10,248,22,186,6,250,22,141,7,2,23,199,23,201,1,247,22,23,
249,22,3,89,162,8,44,36,49,9,223,2,33,34,196,248,22,155,11,249,22,
130,11,23,196,1,247,22,23,87,94,250,80,159,38,39,36,2,7,196,197,251,
80,159,39,41,36,2,7,32,0,89,162,8,44,36,44,9,222,33,36,197,198,
32,38,89,162,43,41,58,65,99,108,111,111,112,222,33,39,28,248,22,72,23,
199,2,87,94,23,198,1,248,23,196,1,251,22,141,7,2,24,23,199,1,28,
248,22,72,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,153,13,23,
204,1,23,205,1,23,198,1,27,249,22,153,13,248,22,65,23,202,2,23,199,
2,28,248,22,148,13,23,194,2,27,250,22,1,22,153,13,23,197,1,23,202,
2,28,248,22,148,13,23,194,2,192,87,94,23,193,1,27,248,22,66,23,202,
248,22,72,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,154,13,23,
204,1,23,205,1,23,198,1,27,249,22,154,13,248,22,65,23,202,2,23,199,
2,28,248,22,149,13,23,194,2,27,250,22,1,22,154,13,23,197,1,23,202,
2,28,248,22,149,13,23,194,2,192,87,94,23,193,1,27,248,22,66,23,202,
1,28,248,22,72,23,194,2,87,94,23,193,1,248,23,199,1,251,22,141,7,
2,24,23,202,1,28,248,22,72,23,206,2,87,94,23,205,1,23,204,1,250,
22,1,22,153,13,23,207,1,23,208,1,23,201,1,27,249,22,153,13,248,22,
65,23,197,2,23,202,2,28,248,22,148,13,23,194,2,27,250,22,1,22,153,
13,23,197,1,204,28,248,22,148,13,193,192,253,2,38,203,204,205,206,23,15,
22,1,22,154,13,23,207,1,23,208,1,23,201,1,27,249,22,154,13,248,22,
65,23,197,2,23,202,2,28,248,22,149,13,23,194,2,27,250,22,1,22,154,
13,23,197,1,204,28,248,22,149,13,193,192,253,2,38,203,204,205,206,23,15,
248,22,66,201,253,2,38,202,203,204,205,206,248,22,66,200,87,94,23,193,1,
27,248,22,66,23,201,1,28,248,22,72,23,194,2,87,94,23,193,1,248,23,
198,1,251,22,141,7,2,24,23,201,1,28,248,22,72,23,205,2,87,94,23,
204,1,23,203,1,250,22,1,22,153,13,23,206,1,23,207,1,23,200,1,27,
249,22,153,13,248,22,65,23,197,2,23,201,2,28,248,22,148,13,23,194,2,
27,250,22,1,22,153,13,23,197,1,203,28,248,22,148,13,193,192,253,2,38,
204,1,23,203,1,250,22,1,22,154,13,23,206,1,23,207,1,23,200,1,27,
249,22,154,13,248,22,65,23,197,2,23,201,2,28,248,22,149,13,23,194,2,
27,250,22,1,22,154,13,23,197,1,203,28,248,22,149,13,193,192,253,2,38,
202,203,204,205,206,248,22,66,201,253,2,38,201,202,203,204,205,248,22,66,200,
27,247,22,176,13,253,2,38,198,199,200,201,202,198,87,95,28,28,248,22,136,
13,23,194,2,10,27,248,22,135,13,23,195,2,28,23,193,2,192,87,94,23,
193,1,28,248,22,157,6,23,195,2,27,248,22,157,13,23,196,2,28,23,193,
2,192,87,94,23,193,1,248,22,158,13,23,196,2,11,12,252,22,128,9,23,
27,247,22,177,13,253,2,38,198,199,200,201,202,198,87,95,28,28,248,22,137,
13,23,194,2,10,27,248,22,136,13,23,195,2,28,23,193,2,192,87,94,23,
193,1,28,248,22,157,6,23,195,2,27,248,22,158,13,23,196,2,28,23,193,
2,192,87,94,23,193,1,248,22,159,13,23,196,2,11,12,252,22,129,9,23,
200,2,2,25,35,23,198,2,23,199,2,28,28,248,22,157,6,23,195,2,10,
248,22,145,7,23,195,2,87,94,23,194,1,12,252,22,128,9,23,200,2,2,
26,36,23,198,2,23,199,1,91,159,38,11,90,161,38,35,11,248,22,156,13,
23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,129,9,23,201,1,2,
248,22,145,7,23,195,2,87,94,23,194,1,12,252,22,129,9,23,200,2,2,
26,36,23,198,2,23,199,1,91,159,38,11,90,161,38,35,11,248,22,157,13,
23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,130,9,23,201,1,2,
27,23,199,1,249,22,7,194,195,91,159,37,11,90,161,37,35,11,87,95,28,
28,248,22,136,13,23,196,2,10,27,248,22,135,13,23,197,2,28,23,193,2,
192,87,94,23,193,1,28,248,22,157,6,23,197,2,27,248,22,157,13,23,198,
2,28,23,193,2,192,87,94,23,193,1,248,22,158,13,23,198,2,11,12,252,
22,128,9,2,10,2,25,35,23,200,2,23,201,2,28,28,248,22,157,6,23,
197,2,10,248,22,145,7,23,197,2,12,252,22,128,9,2,10,2,26,36,23,
200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22,156,13,23,199,2,
87,94,23,195,1,87,94,28,192,12,250,22,129,9,2,10,2,27,23,201,2,
249,22,7,194,195,27,249,22,145,13,250,22,128,14,0,18,35,114,120,35,34,
40,91,46,93,91,94,46,93,42,124,41,36,34,248,22,141,13,23,201,1,28,
28,248,22,137,13,23,196,2,10,27,248,22,136,13,23,197,2,28,23,193,2,
192,87,94,23,193,1,28,248,22,157,6,23,197,2,27,248,22,158,13,23,198,
2,28,23,193,2,192,87,94,23,193,1,248,22,159,13,23,198,2,11,12,252,
22,129,9,2,10,2,25,35,23,200,2,23,201,2,28,28,248,22,157,6,23,
197,2,10,248,22,145,7,23,197,2,12,252,22,129,9,2,10,2,26,36,23,
200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22,157,13,23,199,2,
87,94,23,195,1,87,94,28,192,12,250,22,130,9,2,10,2,27,23,201,2,
249,22,7,194,195,27,249,22,146,13,250,22,129,14,0,18,35,114,120,35,34,
40,91,46,93,91,94,46,93,42,124,41,36,34,248,22,142,13,23,201,1,28,
248,22,157,6,23,203,2,249,22,169,7,23,204,1,8,63,23,202,1,28,248,
22,136,13,23,199,2,248,22,137,13,23,199,1,87,94,23,198,1,247,22,138,
13,28,248,22,135,13,194,249,22,153,13,195,194,192,91,159,37,11,90,161,37,
35,11,87,95,28,28,248,22,136,13,23,196,2,10,27,248,22,135,13,23,197,
22,137,13,23,199,2,248,22,138,13,23,199,1,87,94,23,198,1,247,22,139,
13,28,248,22,136,13,194,249,22,154,13,195,194,192,91,159,37,11,90,161,37,
35,11,87,95,28,28,248,22,137,13,23,196,2,10,27,248,22,136,13,23,197,
2,28,23,193,2,192,87,94,23,193,1,28,248,22,157,6,23,197,2,27,248,
22,157,13,23,198,2,28,23,193,2,192,87,94,23,193,1,248,22,158,13,23,
198,2,11,12,252,22,128,9,2,11,2,25,35,23,200,2,23,201,2,28,28,
248,22,157,6,23,197,2,10,248,22,145,7,23,197,2,12,252,22,128,9,2,
22,158,13,23,198,2,28,23,193,2,192,87,94,23,193,1,248,22,159,13,23,
198,2,11,12,252,22,129,9,2,11,2,25,35,23,200,2,23,201,2,28,28,
248,22,157,6,23,197,2,10,248,22,145,7,23,197,2,12,252,22,129,9,2,
11,2,26,36,23,200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22,
156,13,23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,129,9,2,11,
2,27,23,201,2,249,22,7,194,195,27,249,22,145,13,249,22,155,7,250,22,
129,14,0,9,35,114,120,35,34,91,46,93,34,248,22,141,13,23,203,1,6,
157,13,23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,130,9,2,11,
2,27,23,201,2,249,22,7,194,195,27,249,22,146,13,249,22,155,7,250,22,
130,14,0,9,35,114,120,35,34,91,46,93,34,248,22,142,13,23,203,1,6,
1,1,95,28,248,22,157,6,23,202,2,249,22,169,7,23,203,1,8,63,23,
201,1,28,248,22,136,13,23,199,2,248,22,137,13,23,199,1,87,94,23,198,
1,247,22,138,13,28,248,22,135,13,194,249,22,153,13,195,194,192,249,247,22,
201,1,28,248,22,137,13,23,199,2,248,22,138,13,23,199,1,87,94,23,198,
1,247,22,139,13,28,248,22,136,13,194,249,22,154,13,195,194,192,249,247,22,
188,4,194,11,249,80,158,37,46,9,9,249,80,158,37,46,195,9,27,247,22,
178,13,249,80,158,38,47,28,23,195,2,27,248,22,174,7,6,11,11,80,76,
179,13,249,80,158,38,47,28,23,195,2,27,248,22,174,7,6,11,11,80,76,
84,67,79,76,76,69,67,84,83,28,192,192,6,0,0,6,0,0,27,28,23,
196,1,250,22,153,13,248,22,174,13,69,97,100,100,111,110,45,100,105,114,247,
196,1,250,22,154,13,248,22,175,13,69,97,100,100,111,110,45,100,105,114,247,
22,172,7,6,8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,41,52,
36,250,22,78,23,203,1,248,22,74,248,22,174,13,72,99,111,108,108,101,99,
36,250,22,78,23,203,1,248,22,74,248,22,175,13,72,99,111,108,108,101,99,
116,115,45,100,105,114,23,204,1,28,23,194,2,249,22,64,23,196,1,23,195,
1,192,32,48,89,162,8,44,38,54,2,19,222,33,49,27,249,22,185,13,23,
1,192,32,48,89,162,8,44,38,54,2,19,222,33,49,27,249,22,186,13,23,
197,2,23,198,2,28,23,193,2,87,94,23,196,1,27,248,22,89,23,195,2,
27,27,248,22,98,23,197,1,27,249,22,185,13,23,201,2,23,196,2,28,23,
27,27,248,22,98,23,197,1,27,249,22,186,13,23,201,2,23,196,2,28,23,
193,2,87,94,23,194,1,27,248,22,89,23,195,2,27,250,2,48,23,203,2,
23,204,1,248,22,98,23,199,1,28,249,22,151,7,23,196,2,2,28,249,22,
78,23,202,2,194,249,22,64,248,22,144,13,23,197,1,23,195,1,87,95,23,
78,23,202,2,194,249,22,64,248,22,145,13,23,197,1,23,195,1,87,95,23,
199,1,23,193,1,28,249,22,151,7,23,196,2,2,28,249,22,78,23,200,2,
9,249,22,64,248,22,144,13,23,197,1,9,28,249,22,151,7,23,196,2,2,
28,249,22,78,197,194,87,94,23,196,1,249,22,64,248,22,144,13,23,197,1,
9,249,22,64,248,22,145,13,23,197,1,9,28,249,22,151,7,23,196,2,2,
28,249,22,78,197,194,87,94,23,196,1,249,22,64,248,22,145,13,23,197,1,
194,87,94,23,193,1,28,249,22,151,7,23,198,2,2,28,249,22,78,195,9,
87,94,23,194,1,249,22,64,248,22,144,13,23,199,1,9,87,95,28,28,248,
22,145,7,194,10,248,22,157,6,194,12,250,22,128,9,2,14,6,21,21,98,
87,94,23,194,1,249,22,64,248,22,145,13,23,199,1,9,87,95,28,28,248,
22,145,7,194,10,248,22,157,6,194,12,250,22,129,9,2,14,6,21,21,98,
121,116,101,32,115,116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,196,
28,28,248,22,73,195,249,22,4,22,135,13,196,11,12,250,22,128,9,2,14,
28,28,248,22,73,195,249,22,4,22,136,13,196,11,12,250,22,129,9,2,14,
6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,197,250,2,48,197,
195,28,248,22,157,6,197,248,22,168,7,197,196,32,51,89,162,8,44,39,57,
2,19,222,33,54,32,52,89,162,8,44,38,54,70,102,111,117,110,100,45,101,
120,101,99,222,33,53,28,23,193,2,91,159,38,11,90,161,38,35,11,248,22,
156,13,23,199,2,87,95,23,195,1,23,194,1,27,28,23,198,2,27,248,22,
161,13,23,201,2,28,249,22,164,8,23,195,2,23,202,2,11,28,248,22,157,
13,23,194,2,250,2,52,23,201,2,23,202,2,249,22,153,13,23,200,2,23,
157,13,23,199,2,87,95,23,195,1,23,194,1,27,28,23,198,2,27,248,22,
162,13,23,201,2,28,249,22,164,8,23,195,2,23,202,2,11,28,248,22,158,
13,23,194,2,250,2,52,23,201,2,23,202,2,249,22,154,13,23,200,2,23,
198,1,250,2,52,23,201,2,23,202,2,23,196,1,11,28,23,193,2,192,87,
94,23,193,1,27,28,248,22,135,13,23,196,2,27,249,22,153,13,23,198,2,
23,201,2,28,28,248,22,148,13,193,10,248,22,147,13,193,192,11,11,28,23,
193,2,192,87,94,23,193,1,28,23,199,2,11,27,248,22,161,13,23,202,2,
28,249,22,164,8,23,195,2,23,203,1,11,28,248,22,157,13,23,194,2,250,
2,52,23,202,1,23,203,1,249,22,153,13,23,201,1,23,198,1,250,2,52,
201,202,195,194,28,248,22,72,23,197,2,11,27,248,22,160,13,248,22,65,23,
199,2,27,249,22,153,13,23,196,1,23,197,2,28,248,22,147,13,23,194,2,
94,23,193,1,27,28,248,22,136,13,23,196,2,27,249,22,154,13,23,198,2,
23,201,2,28,28,248,22,149,13,193,10,248,22,148,13,193,192,11,11,28,23,
193,2,192,87,94,23,193,1,28,23,199,2,11,27,248,22,162,13,23,202,2,
28,249,22,164,8,23,195,2,23,203,1,11,28,248,22,158,13,23,194,2,250,
2,52,23,202,1,23,203,1,249,22,154,13,23,201,1,23,198,1,250,2,52,
201,202,195,194,28,248,22,72,23,197,2,11,27,248,22,161,13,248,22,65,23,
199,2,27,249,22,154,13,23,196,1,23,197,2,28,248,22,148,13,23,194,2,
250,2,52,198,199,195,87,94,23,193,1,27,248,22,66,23,200,1,28,248,22,
72,23,194,2,11,27,248,22,160,13,248,22,65,23,196,2,27,249,22,153,13,
23,196,1,23,200,2,28,248,22,147,13,23,194,2,250,2,52,201,202,195,87,
72,23,194,2,11,27,248,22,161,13,248,22,65,23,196,2,27,249,22,154,13,
23,196,1,23,200,2,28,248,22,148,13,23,194,2,250,2,52,201,202,195,87,
94,23,193,1,27,248,22,66,23,197,1,28,248,22,72,23,194,2,11,27,248,
22,160,13,248,22,65,195,27,249,22,153,13,23,196,1,202,28,248,22,147,13,
22,161,13,248,22,65,195,27,249,22,154,13,23,196,1,202,28,248,22,148,13,
193,250,2,52,204,205,195,251,2,51,204,205,206,248,22,66,199,87,95,28,27,
248,22,135,13,23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,157,
6,23,196,2,27,248,22,157,13,23,197,2,28,23,193,2,192,87,94,23,193,
1,248,22,158,13,23,197,2,11,12,250,22,128,9,2,15,6,25,25,112,97,
248,22,136,13,23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,157,
6,23,196,2,27,248,22,158,13,23,197,2,28,23,193,2,192,87,94,23,193,
1,248,22,159,13,23,197,2,11,12,250,22,129,9,2,15,6,25,25,112,97,
116,104,32,111,114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,
108,41,23,197,2,28,28,23,195,2,28,27,248,22,135,13,23,197,2,28,23,
193,2,192,87,94,23,193,1,28,248,22,157,6,23,197,2,27,248,22,157,13,
23,198,2,28,23,193,2,192,87,94,23,193,1,248,22,158,13,23,198,2,11,
248,22,157,13,23,196,2,11,10,12,250,22,128,9,2,15,6,29,29,35,102,
108,41,23,197,2,28,28,23,195,2,28,27,248,22,136,13,23,197,2,28,23,
193,2,192,87,94,23,193,1,28,248,22,157,6,23,197,2,27,248,22,158,13,
23,198,2,28,23,193,2,192,87,94,23,193,1,248,22,159,13,23,198,2,11,
248,22,158,13,23,196,2,11,10,12,250,22,129,9,2,15,6,29,29,35,102,
32,111,114,32,114,101,108,97,116,105,118,101,32,112,97,116,104,32,111,114,32,
115,116,114,105,110,103,23,198,2,28,28,248,22,157,13,23,195,2,91,159,38,
11,90,161,38,35,11,248,22,156,13,23,198,2,249,22,162,8,194,68,114,101,
115,116,114,105,110,103,23,198,2,28,28,248,22,158,13,23,195,2,91,159,38,
11,90,161,38,35,11,248,22,157,13,23,198,2,249,22,162,8,194,68,114,101,
108,97,116,105,118,101,11,27,248,22,174,7,6,4,4,80,65,84,72,251,2,
51,23,199,1,23,200,1,23,201,1,28,23,197,2,27,249,80,158,43,47,23,
200,1,9,28,249,22,162,8,247,22,176,7,2,21,249,22,64,248,22,144,13,
5,1,46,23,195,1,192,9,27,248,22,160,13,23,196,1,28,248,22,147,13,
200,1,9,28,249,22,162,8,247,22,176,7,2,21,249,22,64,248,22,145,13,
5,1,46,23,195,1,192,9,27,248,22,161,13,23,196,1,28,248,22,148,13,
193,250,2,52,198,199,195,11,250,80,158,38,48,196,197,11,250,80,158,38,48,
196,11,11,87,94,249,22,148,6,247,22,184,4,195,248,22,174,5,249,22,170,
3,35,249,22,154,3,197,198,27,28,23,197,2,87,95,23,196,1,23,195,1,
23,197,1,87,94,23,197,1,27,248,22,174,13,2,20,27,249,80,158,40,48,
23,197,1,87,94,23,197,1,27,248,22,175,13,2,20,27,249,80,158,40,48,
23,196,1,11,27,27,248,22,173,3,23,200,1,28,192,192,35,27,27,248,22,
173,3,23,202,1,28,192,192,35,249,22,151,5,23,197,1,83,158,39,20,97,
95,89,162,8,44,35,47,9,224,3,2,33,58,23,195,1,23,196,1,27,248,
@ -332,7 +332,7 @@
222,33,44,80,159,35,45,36,83,158,35,16,2,83,158,38,20,96,96,2,13,
89,162,43,35,43,9,223,0,33,45,89,162,43,36,44,9,223,0,33,46,89,
162,43,37,54,9,223,0,33,47,80,159,35,46,36,83,158,35,16,2,27,248,
22,181,13,248,22,168,7,27,28,249,22,162,8,247,22,176,7,2,21,6,1,
22,182,13,248,22,168,7,27,28,249,22,162,8,247,22,176,7,2,21,6,1,
1,59,6,1,1,58,250,22,141,7,6,14,14,40,91,94,126,97,93,42,41,
126,97,40,46,42,41,23,196,2,23,196,1,89,162,8,44,37,47,2,14,223,
0,33,50,80,159,35,47,36,83,158,35,16,2,83,158,38,20,96,96,2,15,
@ -344,12 +344,12 @@
EVAL_ONE_SIZED_STR((char *)expr, 5068);
}
{
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,50,8,0,0,0,1,0,0,6,0,19,0,
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,51,8,0,0,0,1,0,0,6,0,19,0,
34,0,48,0,62,0,76,0,111,0,0,0,255,0,0,0,65,113,117,111,116,
101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69,35,37,
110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,109,122,
11,29,94,2,1,68,35,37,101,120,112,111,98,115,11,29,94,2,1,68,35,
37,107,101,114,110,101,108,11,98,10,35,11,8,176,229,97,159,2,2,35,35,
37,107,101,114,110,101,108,11,98,10,35,11,8,135,231,97,159,2,2,35,35,
159,2,3,35,35,159,2,4,35,35,159,2,5,35,35,159,2,6,35,35,16,
0,159,35,20,103,159,35,16,1,65,98,101,103,105,110,16,0,83,158,41,20,
100,138,69,35,37,98,117,105,108,116,105,110,29,11,11,11,10,10,18,96,11,
@ -361,7 +361,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 292);
}
{
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,50,53,0,0,0,1,0,0,3,0,14,0,
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,51,46,51,53,0,0,0,1,0,0,3,0,14,0,
41,0,47,0,60,0,74,0,96,0,122,0,134,0,152,0,172,0,184,0,200,
0,223,0,3,1,8,1,13,1,18,1,27,1,32,1,63,1,67,1,75,1,
83,1,91,1,194,1,239,1,3,2,31,2,62,2,117,2,127,2,174,2,184,
@ -385,30 +385,30 @@
111,108,118,101,114,63,108,105,98,67,105,103,110,111,114,101,100,249,22,14,195,
80,158,37,45,249,80,159,37,48,36,195,10,27,28,23,195,2,28,249,22,162,
8,23,197,2,80,158,38,46,87,94,23,195,1,80,158,36,47,27,248,22,171,
4,23,197,2,28,248,22,135,13,23,194,2,91,159,38,11,90,161,38,35,11,
248,22,156,13,23,197,1,87,95,83,160,37,11,80,158,40,46,198,83,160,37,
4,23,197,2,28,248,22,136,13,23,194,2,91,159,38,11,90,161,38,35,11,
248,22,157,13,23,197,1,87,95,83,160,37,11,80,158,40,46,198,83,160,37,
11,80,158,40,47,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,
22,189,4,28,192,192,247,22,175,13,20,14,159,80,158,35,39,250,80,158,38,
40,249,22,27,11,80,158,40,39,22,189,4,28,248,22,135,13,23,198,2,23,
197,1,87,94,23,197,1,247,22,175,13,247,194,250,22,153,13,23,197,1,23,
199,1,249,80,158,42,38,23,198,1,2,18,252,22,153,13,23,199,1,23,201,
22,189,4,28,192,192,247,22,176,13,20,14,159,80,158,35,39,250,80,158,38,
40,249,22,27,11,80,158,40,39,22,189,4,28,248,22,136,13,23,198,2,23,
197,1,87,94,23,197,1,247,22,176,13,247,194,250,22,154,13,23,197,1,23,
199,1,249,80,158,42,38,23,198,1,2,18,252,22,154,13,23,199,1,23,201,
1,2,19,247,22,177,7,249,80,158,44,38,23,200,1,80,158,44,35,87,94,
23,194,1,27,250,22,170,13,196,11,32,0,89,162,8,44,35,40,9,222,11,
28,192,249,22,64,195,194,11,27,252,22,153,13,23,200,1,23,202,1,2,19,
247,22,177,7,249,80,158,45,38,23,201,1,80,158,45,35,27,250,22,170,13,
23,194,1,27,250,22,171,13,196,11,32,0,89,162,8,44,35,40,9,222,11,
28,192,249,22,64,195,194,11,27,252,22,154,13,23,200,1,23,202,1,2,19,
247,22,177,7,249,80,158,45,38,23,201,1,80,158,45,35,27,250,22,171,13,
196,11,32,0,89,162,8,44,35,40,9,222,11,28,192,249,22,64,195,194,11,
249,247,22,180,13,248,22,65,195,195,27,250,22,153,13,23,198,1,23,200,1,
249,80,158,43,38,23,199,1,2,18,27,250,22,170,13,196,11,32,0,89,162,
249,247,22,181,13,248,22,65,195,195,27,250,22,154,13,23,198,1,23,200,1,
249,80,158,43,38,23,199,1,2,18,27,250,22,171,13,196,11,32,0,89,162,
8,44,35,40,9,222,11,28,192,249,22,64,195,194,11,249,247,22,187,4,248,
22,65,195,195,249,247,22,187,4,194,195,87,94,28,248,80,158,36,37,23,195,
2,12,250,22,128,9,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,
2,12,250,22,129,9,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,
108,101,100,6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,
97,116,104,32,115,116,114,105,110,103,23,197,2,91,159,41,11,90,161,36,35,
11,28,248,22,159,13,23,201,2,23,200,1,27,247,22,189,4,28,23,193,2,
249,22,160,13,23,203,1,23,195,1,200,90,161,38,36,11,248,22,156,13,23,
11,28,248,22,160,13,23,201,2,23,200,1,27,247,22,189,4,28,23,193,2,
249,22,161,13,23,203,1,23,195,1,200,90,161,38,36,11,248,22,157,13,23,
194,2,87,94,23,196,1,90,161,36,39,11,28,249,22,162,8,23,196,2,68,
114,101,108,97,116,105,118,101,87,94,23,194,1,2,17,23,194,1,90,161,36,
40,11,247,22,177,13,27,89,162,43,36,49,62,122,111,225,7,5,3,33,28,
40,11,247,22,178,13,27,89,162,43,36,49,62,122,111,225,7,5,3,33,28,
27,89,162,43,36,51,9,225,8,6,4,33,29,27,249,22,5,89,162,8,44,
36,46,9,223,5,33,30,23,203,2,27,28,23,195,1,27,249,22,5,89,162,
8,44,36,52,9,225,13,11,9,33,31,23,205,2,27,28,23,196,2,11,193,
@ -421,10 +421,10 @@
54,36,203,89,162,43,35,45,9,224,15,2,33,34,249,80,159,48,54,36,203,
89,162,43,35,44,9,224,15,7,33,35,32,37,89,162,8,44,36,54,2,20,
222,33,39,0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,
34,27,249,22,185,13,2,38,23,196,2,28,23,193,2,87,94,23,194,1,249,
22,64,248,22,89,23,196,2,27,248,22,98,23,197,1,27,249,22,185,13,2,
34,27,249,22,186,13,2,38,23,196,2,28,23,193,2,87,94,23,194,1,249,
22,64,248,22,89,23,196,2,27,248,22,98,23,197,1,27,249,22,186,13,2,
38,23,196,2,28,23,193,2,87,94,23,194,1,249,22,64,248,22,89,23,196,
2,27,248,22,98,23,197,1,27,249,22,185,13,2,38,23,196,2,28,23,193,
2,27,248,22,98,23,197,1,27,249,22,186,13,2,38,23,196,2,28,23,193,
2,87,94,23,194,1,249,22,64,248,22,89,23,196,2,248,2,37,248,22,98,
23,197,1,248,22,74,194,248,22,74,194,248,22,74,194,32,40,89,162,43,36,
54,2,20,222,33,41,28,248,22,72,248,22,66,23,195,2,249,22,7,9,248,
@ -435,83 +435,83 @@
22,66,23,197,2,249,22,7,249,22,64,248,22,65,23,200,1,23,197,1,195,
249,22,7,249,22,64,248,22,65,23,200,1,23,197,1,195,249,22,7,249,22,
64,248,22,65,23,200,1,23,197,1,195,27,248,2,37,23,195,1,28,194,192,
248,2,40,193,87,95,28,248,22,169,4,195,12,250,22,128,9,2,21,6,20,
248,2,40,193,87,95,28,248,22,169,4,195,12,250,22,129,9,2,21,6,20,
20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,
197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,27,250,22,138,
2,80,158,41,42,248,22,141,14,247,22,182,11,11,28,23,193,2,192,87,94,
23,193,1,27,247,22,122,87,94,250,22,136,2,80,158,42,42,248,22,141,14,
247,22,182,11,195,192,250,22,136,2,195,198,66,97,116,116,97,99,104,251,211,
197,198,199,10,28,192,250,22,191,8,11,196,195,248,22,189,8,194,28,249,22,
2,80,158,41,42,248,22,142,14,247,22,183,11,11,28,23,193,2,192,87,94,
23,193,1,27,247,22,122,87,94,250,22,136,2,80,158,42,42,248,22,142,14,
247,22,183,11,195,192,250,22,136,2,195,198,66,97,116,116,97,99,104,251,211,
197,198,199,10,28,192,250,22,128,9,11,196,195,248,22,190,8,194,28,249,22,
163,6,194,6,1,1,46,2,17,28,249,22,163,6,194,6,2,2,46,46,62,
117,112,192,28,249,22,164,8,248,22,66,23,200,2,23,197,1,28,249,22,162,
8,248,22,65,23,200,2,23,196,1,251,22,189,8,2,21,6,26,26,99,121,
8,248,22,65,23,200,2,23,196,1,251,22,190,8,2,21,6,26,26,99,121,
99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,101,58,
32,126,101,23,200,1,249,22,2,22,66,248,22,79,249,22,64,23,206,1,23,
202,1,12,12,247,192,20,14,159,80,158,39,44,249,22,64,248,22,141,14,247,
22,182,11,23,197,1,20,14,159,80,158,39,39,250,80,158,42,40,249,22,27,
202,1,12,12,247,192,20,14,159,80,158,39,44,249,22,64,248,22,142,14,247,
22,183,11,23,197,1,20,14,159,80,158,39,39,250,80,158,42,40,249,22,27,
11,80,158,44,39,22,151,4,23,196,1,249,247,22,188,4,23,198,1,248,22,
53,248,22,139,13,23,198,1,87,94,28,28,248,22,135,13,23,197,2,10,248,
22,175,4,23,197,2,12,28,23,198,2,250,22,191,8,11,6,15,15,98,97,
100,32,109,111,100,117,108,101,32,112,97,116,104,23,201,2,250,22,128,9,2,
53,248,22,140,13,23,198,1,87,94,28,28,248,22,136,13,23,197,2,10,248,
22,175,4,23,197,2,12,28,23,198,2,250,22,128,9,11,6,15,15,98,97,
100,32,109,111,100,117,108,101,32,112,97,116,104,23,201,2,250,22,129,9,2,
21,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32,111,114,32,112,97,
116,104,23,199,2,28,28,248,22,62,23,197,2,249,22,162,8,248,22,65,23,
199,2,2,4,11,248,22,170,4,248,22,89,197,28,28,248,22,62,23,197,2,
249,22,162,8,248,22,65,23,199,2,66,112,108,97,110,101,116,11,87,94,28,
207,12,20,14,159,80,158,37,39,250,80,158,40,40,249,22,27,11,80,158,42,
39,22,182,11,23,197,1,90,161,36,35,10,249,22,152,4,21,94,2,22,6,
39,22,183,11,23,197,1,90,161,36,35,10,249,22,152,4,21,94,2,22,6,
18,18,112,108,97,110,101,116,47,114,101,115,111,108,118,101,114,46,115,115,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,251,211,199,200,201,202,87,94,23,193,1,27,89,
162,8,44,36,45,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,
45,101,114,114,223,6,33,45,27,28,248,22,52,23,199,2,27,250,22,138,2,
80,158,43,43,249,22,64,23,204,2,247,22,176,13,11,28,23,193,2,192,87,
80,158,43,43,249,22,64,23,204,2,247,22,177,13,11,28,23,193,2,192,87,
94,23,193,1,91,159,37,11,90,161,37,35,11,249,80,159,44,48,36,248,22,
55,23,204,2,11,27,251,80,158,47,50,2,21,23,202,1,28,248,22,72,23,
199,2,23,199,2,248,22,65,23,199,2,28,248,22,72,23,199,2,9,248,22,
66,23,199,2,249,22,153,13,23,195,1,28,248,22,72,23,197,1,87,94,23,
66,23,199,2,249,22,154,13,23,195,1,28,248,22,72,23,197,1,87,94,23,
197,1,6,7,7,109,97,105,110,46,115,115,249,22,180,6,23,199,1,6,3,
3,46,115,115,28,248,22,157,6,23,199,2,87,94,23,194,1,27,248,80,159,
41,55,36,23,201,2,27,250,22,138,2,80,158,44,43,249,22,64,23,205,2,
23,199,2,11,28,23,193,2,192,87,94,23,193,1,91,159,37,11,90,161,37,
35,11,249,80,159,45,48,36,23,204,2,11,250,22,1,22,153,13,23,199,1,
35,11,249,80,159,45,48,36,23,204,2,11,250,22,1,22,154,13,23,199,1,
249,22,78,249,22,2,32,0,89,162,8,44,36,43,9,222,33,46,23,200,1,
248,22,74,23,200,1,28,248,22,135,13,23,199,2,87,94,23,194,1,28,248,
22,158,13,23,199,2,23,198,2,248,22,74,6,26,26,32,40,97,32,112,97,
248,22,74,23,200,1,28,248,22,136,13,23,199,2,87,94,23,194,1,28,248,
22,159,13,23,199,2,23,198,2,248,22,74,6,26,26,32,40,97,32,112,97,
116,104,32,109,117,115,116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,
249,22,162,8,248,22,65,23,201,2,2,22,27,250,22,138,2,80,158,43,43,
249,22,64,23,204,2,247,22,176,13,11,28,23,193,2,192,87,94,23,193,1,
249,22,64,23,204,2,247,22,177,13,11,28,23,193,2,192,87,94,23,193,1,
91,159,38,11,90,161,37,35,11,249,80,159,45,48,36,248,22,89,23,205,2,
11,90,161,36,37,11,28,248,22,72,248,22,91,23,204,2,28,248,22,72,23,
194,2,249,22,187,13,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10,
194,2,249,22,188,13,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10,
27,27,28,23,197,2,249,22,78,28,248,22,72,248,22,91,23,208,2,21,93,
6,5,5,109,122,108,105,98,249,22,1,22,78,249,22,2,80,159,51,56,36,
248,22,91,23,211,2,23,197,2,28,248,22,72,23,196,2,248,22,74,23,197,
2,23,195,2,251,80,158,49,50,2,21,23,204,1,248,22,65,23,198,2,248,
22,66,23,198,1,249,22,153,13,23,195,1,28,23,198,1,87,94,23,196,1,
22,66,23,198,1,249,22,154,13,23,195,1,28,23,198,1,87,94,23,196,1,
23,197,1,28,248,22,72,23,197,1,87,94,23,197,1,6,7,7,109,97,105,
110,46,115,115,28,249,22,187,13,0,8,35,114,120,34,91,46,93,34,23,199,
110,46,115,115,28,249,22,188,13,0,8,35,114,120,34,91,46,93,34,23,199,
2,23,197,1,249,22,180,6,23,199,1,6,3,3,46,115,115,28,249,22,162,
8,248,22,65,23,201,2,64,102,105,108,101,249,22,160,13,248,22,164,13,248,
8,248,22,65,23,201,2,64,102,105,108,101,249,22,161,13,248,22,165,13,248,
22,89,23,202,2,248,80,159,42,55,36,23,202,2,12,87,94,28,28,248,22,
135,13,23,194,2,10,248,22,179,7,23,194,2,87,94,23,200,1,12,28,23,
200,2,250,22,191,8,67,114,101,113,117,105,114,101,249,22,141,7,6,17,17,
136,13,23,194,2,10,248,22,179,7,23,194,2,87,94,23,200,1,12,28,23,
200,2,250,22,128,9,67,114,101,113,117,105,114,101,249,22,141,7,6,17,17,
98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,
248,22,65,23,199,2,6,0,0,23,203,1,87,94,23,200,1,250,22,128,9,
248,22,65,23,199,2,6,0,0,23,203,1,87,94,23,200,1,250,22,129,9,
2,21,249,22,141,7,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,
97,28,23,198,2,248,22,65,23,199,2,6,0,0,23,201,2,27,28,248,22,
179,7,23,195,2,249,22,184,7,23,196,2,35,249,22,162,13,248,22,163,13,
179,7,23,195,2,249,22,184,7,23,196,2,35,249,22,163,13,248,22,164,13,
23,197,2,11,27,28,248,22,179,7,23,196,2,249,22,184,7,23,197,2,36,
248,80,158,42,51,23,195,2,91,159,38,11,90,161,38,35,11,28,248,22,179,
7,23,199,2,250,22,7,2,23,249,22,184,7,23,203,2,37,2,23,248,22,
156,13,23,198,2,87,95,23,195,1,23,193,1,27,28,248,22,179,7,23,200,
157,13,23,198,2,87,95,23,195,1,23,193,1,27,28,248,22,179,7,23,200,
2,249,22,184,7,23,201,2,38,249,80,158,47,52,23,197,2,5,0,27,28,
248,22,179,7,23,201,2,249,22,184,7,23,202,2,39,248,22,170,4,23,200,
2,27,27,250,22,138,2,80,158,51,42,248,22,141,14,247,22,182,11,11,28,
2,27,27,250,22,138,2,80,158,51,42,248,22,142,14,247,22,183,11,11,28,
23,193,2,192,87,94,23,193,1,27,247,22,122,87,94,250,22,136,2,80,158,
52,42,248,22,141,14,247,22,182,11,195,192,87,95,28,23,209,1,27,250,22,
52,42,248,22,142,14,247,22,183,11,195,192,87,95,28,23,209,1,27,250,22,
138,2,23,197,2,197,11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,
158,51,45,80,158,50,45,247,22,19,250,22,25,248,22,23,23,197,2,80,158,
53,44,23,196,1,27,248,22,141,14,247,22,182,11,249,22,3,83,158,39,20,
53,44,23,196,1,27,248,22,142,14,247,22,183,11,249,22,3,83,158,39,20,
97,94,89,162,8,44,36,54,9,226,12,11,2,3,33,47,23,195,1,23,196,
1,248,28,248,22,17,80,158,50,45,32,0,89,162,43,36,41,9,222,33,48,
80,159,49,57,36,89,162,43,35,50,9,227,14,9,8,4,3,33,49,250,22,
@ -519,12 +519,12 @@
157,6,23,208,2,28,192,192,28,248,22,62,23,208,2,249,22,162,8,248,22,
65,23,210,2,2,22,11,250,22,136,2,80,158,50,43,28,248,22,157,6,23,
210,2,249,22,64,23,211,1,248,80,159,53,55,36,23,213,1,87,94,23,210,
1,249,22,64,23,211,1,247,22,176,13,252,22,181,7,23,208,1,23,207,1,
1,249,22,64,23,211,1,247,22,177,13,252,22,181,7,23,208,1,23,207,1,
23,205,1,23,203,1,201,12,193,91,159,37,10,90,161,36,35,10,11,90,161,
36,36,10,83,158,38,20,96,96,2,21,89,162,8,44,36,50,9,224,2,0,
33,43,89,162,43,38,48,9,223,1,33,44,89,162,43,39,8,30,9,225,2,
3,0,33,50,208,87,95,248,22,150,4,248,80,158,37,49,247,22,182,11,248,
22,188,4,80,158,36,36,248,22,173,12,80,159,36,41,36,159,35,20,103,159,
3,0,33,50,208,87,95,248,22,150,4,248,80,158,37,49,247,22,183,11,248,
22,188,4,80,158,36,36,248,22,174,12,80,159,36,41,36,159,35,20,103,159,
35,16,1,65,98,101,103,105,110,16,0,83,158,41,20,100,138,66,35,37,98,
111,111,116,2,1,11,11,10,10,36,80,158,35,35,20,103,159,39,16,19,30,
2,1,2,2,193,30,2,1,2,3,193,30,2,5,72,112,97,116,104,45,115,

View File

@ -221,6 +221,7 @@ static Scheme_Object *top_introduce_stx(int argc, Scheme_Object **argv);
static Scheme_Object *allow_set_undefined(int argc, Scheme_Object **argv);
static Scheme_Object *compile_module_constants(int argc, Scheme_Object **argv);
static Scheme_Object *use_jit(int argc, Scheme_Object **argv);
static Scheme_Object *disallow_inline(int argc, Scheme_Object **argv);
static Scheme_Object *app_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec);
static Scheme_Object *app_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec);
@ -378,6 +379,7 @@ scheme_init_eval (Scheme_Env *env)
GLOBAL_PARAMETER("compile-allow-set!-undefined", allow_set_undefined, MZCONFIG_ALLOW_SET_UNDEFINED, env);
GLOBAL_PARAMETER("compile-enforce-module-constants", compile_module_constants, MZCONFIG_COMPILE_MODULE_CONSTS, env);
GLOBAL_PARAMETER("eval-jit-enabled", use_jit, MZCONFIG_USE_JIT, env);
GLOBAL_PARAMETER("compile-context-preservation-enabled", disallow_inline, MZCONFIG_DISALLOW_INLINE, env);
REGISTER_SO(app_symbol);
REGISTER_SO(datum_symbol);
@ -2215,6 +2217,9 @@ Scheme_Object *optimize_for_inline(Optimize_Info *info, Scheme_Object *le, int a
int offset = 0, single_use = 0;
Scheme_Object *bad_app = NULL;
if (info->inline_fuel < 0)
return NULL;
if (SAME_TYPE(SCHEME_TYPE(le), scheme_local_type)) {
/* Check for inlining: */
le = scheme_optimize_info_lookup(info, SCHEME_LOCAL_POS(le), &offset, &single_use);
@ -4564,6 +4569,7 @@ void scheme_init_compile_recs(Scheme_Compile_Info *src, int drec,
dest[i].observer = src[drec].observer;
dest[i].pre_unwrapped = 0;
dest[i].env_already = 0;
dest[i].comp_flags = src[drec].comp_flags;
}
}
@ -4583,6 +4589,7 @@ void scheme_init_expand_recs(Scheme_Expand_Info *src, int drec,
dest[i].observer = src[drec].observer;
dest[i].pre_unwrapped = 0;
dest[i].env_already = 0;
dest[i].comp_flags = src[drec].comp_flags;
}
}
@ -4606,6 +4613,7 @@ void scheme_init_lambda_rec(Scheme_Compile_Info *src, int drec,
lam[dlrec].observer = src[drec].observer;
lam[dlrec].pre_unwrapped = 0;
lam[dlrec].env_already = 0;
lam[dlrec].comp_flags = src[drec].comp_flags;
}
void scheme_merge_lambda_rec(Scheme_Compile_Info *src, int drec,
@ -4761,6 +4769,23 @@ static Scheme_Object *add_renames_unless_module(Scheme_Object *form, Scheme_Env
return form;
}
static int get_comp_flags(Scheme_Config *config)
{
int comp_flags = 0;
if (!config)
config = scheme_current_config();
if (SCHEME_TRUEP(scheme_get_param(scheme_current_config(),
MZCONFIG_ALLOW_SET_UNDEFINED)))
comp_flags |= COMP_ALLOW_SET_UNDEFINED;
if (SCHEME_FALSEP(scheme_get_param(scheme_current_config(),
MZCONFIG_DISALLOW_INLINE)))
comp_flags |= COMP_CAN_INLINE;
return comp_flags;
}
void scheme_enable_expression_resolve_lifts(Resolve_Info *ri)
{
Scheme_Object *lift_vec;
@ -4800,7 +4825,7 @@ static void *compile_k(void)
{
Scheme_Thread *p = scheme_current_thread;
Scheme_Object *form;
int writeable, for_eval, rename, enforce_consts;
int writeable, for_eval, rename, enforce_consts, comp_flags;
Scheme_Env *genv;
Scheme_Compile_Info rec, rec2;
Scheme_Object *o, *tl_queue;
@ -4843,6 +4868,7 @@ static void *compile_k(void)
config = scheme_current_config();
insp = scheme_get_param(config, MZCONFIG_CODE_INSPECTOR);
enforce_consts = SCHEME_TRUEP(scheme_get_param(config, MZCONFIG_COMPILE_MODULE_CONSTS));
comp_flags = get_comp_flags(config);
}
while (1) {
@ -4854,6 +4880,7 @@ static void *compile_k(void)
rec.observer = NULL;
rec.pre_unwrapped = 0;
rec.env_already = 0;
rec.comp_flags = comp_flags;
cenv = scheme_new_comp_env(genv, insp, SCHEME_TOPLEVEL_FRAME);
@ -4931,6 +4958,8 @@ static void *compile_k(void)
oi = scheme_optimize_info_create();
oi->enforce_const = enforce_consts;
if (!(comp_flags & COMP_CAN_INLINE))
oi->inline_fuel = -1;
o = scheme_optimize_expr(o, oi);
rp = scheme_resolve_prefix(0, cenv->prefix, 1);
@ -8717,7 +8746,7 @@ static void *expand_k(void)
Scheme_Object *obj, *certs, *observer, *catch_lifts_key;
Scheme_Comp_Env *env;
Scheme_Expand_Info erec1;
int depth, rename, just_to_top, as_local;
int depth, rename, just_to_top, as_local, comp_flags;
obj = (Scheme_Object *)p->ku.k.p1;
env = (Scheme_Comp_Env *)p->ku.k.p2;
@ -8744,6 +8773,8 @@ static void *expand_k(void)
observer = scheme_get_expand_observe();
SCHEME_EXPAND_OBSERVE_START_EXPAND(observer);
comp_flags = get_comp_flags(NULL);
/* Loop for lifted expressions: */
while (1) {
erec1.comp = 0;
@ -8753,6 +8784,7 @@ static void *expand_k(void)
erec1.observer = observer;
erec1.pre_unwrapped = 0;
erec1.env_already = 0;
erec1.comp_flags = comp_flags;
if (catch_lifts_key)
scheme_frame_captures_lifts(env, scheme_make_lifted_defn, scheme_sys_wraps(env), scheme_false, catch_lifts_key);
@ -9207,6 +9239,11 @@ do_local_expand(const char *name, int for_stx, int catch_lifts, int for_expr, in
drec[0].certs = scheme_current_thread->current_local_certs;
drec[0].depth = -2;
drec[0].observer = observer;
{
int comp_flags;
comp_flags = get_comp_flags(NULL);
drec[0].comp_flags = comp_flags;
}
xl = scheme_check_immediate_macro(l, env, drec, 0, 0, &gval, NULL, NULL);
@ -9504,6 +9541,14 @@ static Scheme_Object *use_jit(int argc, Scheme_Object **argv)
-1, NULL, NULL, 1);
}
static Scheme_Object *disallow_inline(int argc, Scheme_Object **argv)
{
return scheme_param_config("compile-context-preservation-enabled",
scheme_make_integer(MZCONFIG_DISALLOW_INLINE),
argc, argv,
-1, NULL, NULL, 1);
}
static Scheme_Object *
enable_break(int argc, Scheme_Object *argv[])
{
@ -9591,6 +9636,7 @@ local_eval(int argc, Scheme_Object **argv)
rec.observer = observer;
rec.pre_unwrapped = 0;
rec.env_already = 0;
rec.comp_flags = get_comp_flags(NULL);
/* Evaluate and bind syntaxes */
expr = scheme_add_remove_mark(expr, scheme_current_thread->current_local_mark);

View File

@ -6563,24 +6563,26 @@ static int do_generate_common(mz_jit_state *jitter, void *_data)
/* R0 is arg, R2 is code pointer, V1 is return address */
for (i = 0; i < 3; i++) {
int argc, j;
void *code, *code_end;
for (j = 0; j < 2; j++) {
code = jit_get_ip().ptr;
if (!i) {
if (!j)
call_original_unary_arith_code = jit_get_ip().ptr;
call_original_unary_arith_code = code;
else
call_original_unary_arith_for_branch_code = jit_get_ip().ptr;
call_original_unary_arith_for_branch_code = code;
argc = 1;
} else if (i == 1) {
if (!j)
call_original_binary_arith_code = jit_get_ip().ptr;
call_original_binary_arith_code = code;
else
call_original_binary_arith_for_branch_code = jit_get_ip().ptr;
call_original_binary_arith_for_branch_code = code;
argc = 2;
} else {
if (!j)
call_original_binary_rev_arith_code = jit_get_ip().ptr;
call_original_binary_rev_arith_code = code;
else
call_original_binary_rev_arith_for_branch_code = jit_get_ip().ptr;
call_original_binary_rev_arith_for_branch_code = code;
argc = 2;
}
jit_subi_p(JIT_RUNSTACK, JIT_RUNSTACK, WORDS_TO_BYTES(argc));
@ -6595,6 +6597,10 @@ static int do_generate_common(mz_jit_state *jitter, void *_data)
jit_str_p(JIT_RUNSTACK, JIT_R0);
}
jit_movi_i(JIT_R1, argc);
if (!j) {
/* For stack-trace reporting, stuff return address into LOCAL2 */
mz_set_local_p(JIT_V1, JIT_LOCAL2);
}
JIT_UPDATE_THREAD_RSPTR();
mz_prepare(2);
jit_pusharg_p(JIT_RUNSTACK);
@ -6618,6 +6624,10 @@ static int do_generate_common(mz_jit_state *jitter, void *_data)
__END_TINY_JUMPS__(1);
}
CHECK_LIMIT();
code_end = jit_get_ip().ptr;
if (jitter->retain_start)
add_symbol((unsigned long)code, (unsigned long)code_end - 1, scheme_void, 0);
}
}
@ -8121,17 +8131,32 @@ Scheme_Object *scheme_native_stack_trace(void)
q = ((void **)p)[RETURN_ADDRESS_OFFSET];
name = find_symbol((unsigned long)q);
if (SCHEME_FALSEP(name)) {
if (SCHEME_FALSEP(name) || SCHEME_VOIDP(name)) {
/* Code uses special calling convention */
#ifdef MZ_USE_JIT_PPC
/* JIT_LOCAL2 has the next return address */
q = ((void **)p)[JIT_LOCAL2 >> JIT_LOG_WORD_SIZE];
#endif
#ifdef MZ_USE_JIT_I386
if (SCHEME_VOIDP(name)) {
/* JIT_LOCAL2 has the next return address */
q = *(void **)p;
if (STK_COMP((unsigned long)q, stack_end)
&& STK_COMP(stack_start, (unsigned long)q)) {
q = ((void **)q)[JIT_LOCAL2 >> JIT_LOG_WORD_SIZE];
} else
q = NULL;
} else {
/* Push after local stack of return-address proc
has the next return address */
q = *(void **)p;
if (STK_COMP((unsigned long)q, stack_end)
&& STK_COMP(stack_start, (unsigned long)q)) {
q = ((void **)q)[-(3 + LOCAL_FRAME_SIZE + 1)];
} else {
q = NULL;
}
}
#endif
name = find_symbol((unsigned long)q);
}

View File

@ -5774,6 +5774,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env,
erec1.observer = rec[drec].observer;
erec1.pre_unwrapped = 0;
erec1.env_already = 0;
erec1.comp_flags = rec[drec].comp_flags;
e = scheme_expand_expr(e, xenv, &erec1, 0);
}
@ -5977,6 +5978,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env,
mrec.observer = NULL;
mrec.pre_unwrapped = 0;
mrec.env_already = 0;
mrec.comp_flags = rec[drec].comp_flags;
if (!rec[drec].comp) {
Scheme_Expand_Info erec1;
@ -5987,6 +5989,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env,
erec1.observer = rec[drec].observer;
erec1.pre_unwrapped = 0;
erec1.env_already = 0;
erec1.comp_flags = rec[drec].comp_flags;
SCHEME_EXPAND_OBSERVE_PHASE_UP(observer);
code = scheme_expand_expr_lift_to_let(code, eenv, &erec1, 0);
}
@ -5994,6 +5997,8 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env,
oi = scheme_optimize_info_create();
oi->context = (Scheme_Object *)env->genv->module;
if (!(rec[drec].comp_flags & COMP_CAN_INLINE))
oi->inline_fuel = -1;
m = scheme_optimize_expr(m, oi);
/* Simplify only in compile mode; it is too slow in expand mode. */

View File

@ -13,7 +13,7 @@
#define USE_COMPILED_STARTUP 1
#define EXPECTED_PRIM_COUNT 942
#define EXPECTED_PRIM_COUNT 943
#ifdef MZSCHEME_SOMETHING_OMITTED
# undef USE_COMPILED_STARTUP

View File

@ -1834,7 +1834,8 @@ typedef struct Scheme_Comp_Env
typedef struct Scheme_Compile_Expand_Info
{
MZTAG_IF_REQUIRED
int comp;
short comp;
short comp_flags;
Scheme_Object *value_name;
Scheme_Object *certs;
Scheme_Object *observer;
@ -1845,6 +1846,9 @@ typedef struct Scheme_Compile_Expand_Info
int env_already;
} Scheme_Compile_Expand_Info;
#define COMP_ALLOW_SET_UNDEFINED 0x1
#define COMP_CAN_INLINE 0x2
typedef Scheme_Compile_Expand_Info Scheme_Compile_Info;
typedef Scheme_Compile_Expand_Info Scheme_Expand_Info;

View File

@ -13,12 +13,12 @@
consistently.)
*/
#define MZSCHEME_VERSION "4.1.3.2"
#define MZSCHEME_VERSION "4.1.3.3"
#define MZSCHEME_VERSION_X 4
#define MZSCHEME_VERSION_Y 1
#define MZSCHEME_VERSION_Z 3
#define MZSCHEME_VERSION_W 2
#define MZSCHEME_VERSION_W 3
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)

View File

@ -1738,8 +1738,7 @@ set_syntax (Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec,
}
}
set_undef = SCHEME_TRUEP(scheme_get_param(scheme_current_config(),
MZCONFIG_ALLOW_SET_UNDEFINED));
set_undef = (rec[drec].comp_flags & COMP_ALLOW_SET_UNDEFINED);
return scheme_make_syntax_compiled(SET_EXPD,
cons(set_undef
@ -5400,6 +5399,8 @@ static Scheme_Object *do_define_syntaxes_optimize(Scheme_Object *data, Optimize_
val = SCHEME_CDR(data);
einfo = scheme_optimize_info_create();
if (info->inline_fuel < 0)
einfo->inline_fuel = -1;
val = scheme_optimize_expr(val, einfo);
@ -5541,6 +5542,7 @@ do_define_syntaxes_syntax(Scheme_Object *form, Scheme_Comp_Env *env,
rec1.observer = NULL;
rec1.pre_unwrapped = 0;
rec1.env_already = 0;
rec1.comp_flags = rec[drec].comp_flags;
if (for_stx) {
names = defn_targets_syntax(names, exp_env, &rec1, 0);
@ -5733,6 +5735,7 @@ void scheme_bind_syntaxes(const char *where, Scheme_Object *names, Scheme_Object
mrec.observer = NULL;
mrec.pre_unwrapped = 0;
mrec.env_already = 0;
mrec.comp_flags = rec[drec].comp_flags;
a = scheme_compile_expr_lift_to_let(a, eenv, &mrec, 0);
@ -5743,6 +5746,8 @@ void scheme_bind_syntaxes(const char *where, Scheme_Object *names, Scheme_Object
rp = scheme_resolve_prefix(eenv->genv->phase, eenv->prefix, 0);
oi = scheme_optimize_info_create();
if (!(rec[drec].comp_flags & COMP_CAN_INLINE))
oi->inline_fuel = -1;
a = scheme_optimize_expr(a, oi);
ri = scheme_resolve_info_create(rp);