diff --git a/collects/scribblings/reference/eval.scrbl b/collects/scribblings/reference/eval.scrbl index 95c8905cf0..3d3a131e95 100644 --- a/collects/scribblings/reference/eval.scrbl +++ b/collects/scribblings/reference/eval.scrbl @@ -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 diff --git a/doc/release-notes/mzscheme/HISTORY.txt b/doc/release-notes/mzscheme/HISTORY.txt index 3f2e2654cb..bf4872339c 100644 --- a/doc/release-notes/mzscheme/HISTORY.txt +++ b/doc/release-notes/mzscheme/HISTORY.txt @@ -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 diff --git a/src/mzscheme/include/scheme.h b/src/mzscheme/include/scheme.h index 260879629e..1fdc0be8d3 100644 --- a/src/mzscheme/include/scheme.h +++ b/src/mzscheme/include/scheme.h @@ -1197,6 +1197,7 @@ enum { MZCONFIG_ALLOW_SET_UNDEFINED, MZCONFIG_COMPILE_MODULE_CONSTS, MZCONFIG_USE_JIT, + MZCONFIG_DISALLOW_INLINE, MZCONFIG_CUSTODIAN, MZCONFIG_INSPECTOR, diff --git a/src/mzscheme/src/cstartup.inc b/src/mzscheme/src/cstartup.inc index 9e6dc1fde0..63912f26f4 100644 --- a/src/mzscheme/src/cstartup.inc +++ b/src/mzscheme/src/cstartup.inc @@ -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, diff --git a/src/mzscheme/src/eval.c b/src/mzscheme/src/eval.c index c5180ca477..21ebc52e48 100644 --- a/src/mzscheme/src/eval.c +++ b/src/mzscheme/src/eval.c @@ -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); diff --git a/src/mzscheme/src/jit.c b/src/mzscheme/src/jit.c index 3c4c239c2e..89b9481b09 100644 --- a/src/mzscheme/src/jit.c +++ b/src/mzscheme/src/jit.c @@ -2668,7 +2668,7 @@ static int generate_app(Scheme_App_Rec *app, Scheme_Object **alt_rands, int num_ if (no_call) { /* leave actual call to inlining code */ } else if (!(direct_self && is_tail) - && (num_rands >= MAX_SHARED_CALL_RANDS)) { + && (num_rands >= MAX_SHARED_CALL_RANDS)) { LOG_IT(("<-many args\n")); if (is_tail) { if (direct_prim) { @@ -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 - /* Push after local stack of return-address proc - has the next return address */ - q = *(void **)p; - q = ((void **)q)[-(3 + LOCAL_FRAME_SIZE + 1)]; + 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); } diff --git a/src/mzscheme/src/module.c b/src/mzscheme/src/module.c index 77d3f168c4..7488e72507 100644 --- a/src/mzscheme/src/module.c +++ b/src/mzscheme/src/module.c @@ -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. */ diff --git a/src/mzscheme/src/schminc.h b/src/mzscheme/src/schminc.h index 40e1023314..61f22b0fa8 100644 --- a/src/mzscheme/src/schminc.h +++ b/src/mzscheme/src/schminc.h @@ -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 diff --git a/src/mzscheme/src/schpriv.h b/src/mzscheme/src/schpriv.h index 01ea43d5b4..7d28bfc77d 100644 --- a/src/mzscheme/src/schpriv.h +++ b/src/mzscheme/src/schpriv.h @@ -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; diff --git a/src/mzscheme/src/schvers.h b/src/mzscheme/src/schvers.h index d53c03204c..767de3f5e3 100644 --- a/src/mzscheme/src/schvers.h +++ b/src/mzscheme/src/schvers.h @@ -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) diff --git a/src/mzscheme/src/syntax.c b/src/mzscheme/src/syntax.c index 4a1e6a4546..c72640d8e5 100644 --- a/src/mzscheme/src/syntax.c +++ b/src/mzscheme/src/syntax.c @@ -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);