prevent compile from binding in the current namespace

When `compile` is used on a top-level definition, do not
create a binding in the current namespace, but arrange for
a suitable binding to be in place for the target namespace.

Closes #1036
This commit is contained in:
Matthew Flatt 2015-09-05 10:23:57 -06:00
parent 24592f78fc
commit 16c198805b
18 changed files with 569 additions and 319 deletions

View File

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

View File

@ -36,15 +36,28 @@ structures that are produced by @racket[zo-parse] and consumed by
@defstruct+[(compilation-top zo)
([max-let-depth exact-nonnegative-integer?]
[binding-namess (hash/c exact-nonnegative-integer?
(hash/c symbol? identifier?))]
[prefix prefix?]
[code (or/c form? any/c)])]{
Wraps compiled code. The @racket[max-let-depth] field indicates the
Wraps compiled code.
The @racket[max-let-depth] field indicates the
maximum stack depth that @racket[code] creates (not counting the
@racket[prefix] array). The @racket[prefix] field describes top-level
variables, module-level variables, and quoted syntax-objects accessed
by @racket[code]. The @racket[code] field contains executable code;
it is normally a @racket[form], but a literal value is represented as
itself.}
@racket[prefix] array).
The @racket[binding-namess] field provides a per-phase mapping from
symbols that appear in @racket[prefix] for top-level
@racket[def-values] forms and in top-level @racket[def-syntaxes]
forms. Each symbol is mapped to an identifier that will be bound
(after introduction into the namespace) by the definition.
The @racket[prefix] field describes top-level variables,
module-level variables, and quoted syntax-objects accessed by
@racket[code].
The @racket[code] field contains executable code; it is normally a
@racket[form], but a literal value is represented as itself.}
@defstruct+[(prefix zo)
([num-lifts exact-nonnegative-integer?]

View File

@ -220,6 +220,7 @@
(zo-marshal
(compilation-top
10
#hash()
(prefix 0
(list 'dummy)
null

View File

@ -325,11 +325,13 @@
;; Check that compilation in one namespace can
;; be transferred to another namespace
(let ()
(define (check-namespace-transfer compile-wrap)
(let ()
;; transfer a `require`
(define c
(parameterize ([current-namespace (make-base-namespace)])
(compile '(require racket/base))))
(compile-wrap (compile '(require racket/base)))))
(parameterize ([current-namespace (make-base-empty-namespace)])
(test (void) 'eval (eval c))
(test add1 eval 'add1)))
@ -339,7 +341,7 @@
;; namespace is unchanged
(define-values (c get)
(parameterize ([current-namespace (make-base-namespace)])
(define c (compile '(define one 1)))
(define c (compile-wrap (compile '(define one 1))))
(values
c
(eval '(lambda () one)))))
@ -358,15 +360,48 @@
(define one 1)
(define id (quote-syntax one))
one)))
(define c (compile '(m id)))
(define c (compile-wrap (compile '(m id))))
(values
c
(eval '(lambda () one)))))
(parameterize ([current-namespace (make-base-empty-namespace)])
(test 1 'eval (eval c))
(err/rt-test (eval 'one) exn:fail:syntax?)
(test #t identifier? (eval 'id))
(test 1 eval (eval 'id))
(err/rt-test (get) exn:fail:contract:variable?)))
(err/rt-test (get) exn:fail:contract:variable?))))
(check-namespace-transfer values)
(check-namespace-transfer (lambda (c)
(define o (open-output-bytes))
(write c o)
(parameterize ([read-accept-compiled #t])
(read (open-input-bytes (get-output-bytes o)))))))
;; ----------------------------------------
;; Make sure compilation doesn't bind in the current namespace
(parameterize ([current-namespace (make-base-namespace)])
(eval '(define-syntax-rule (m2 c-id r-id)
(begin
(require (rename-in racket/base [+ plus]))
(define (c-id) (compile #'(define plus 1)))
(define (r-id) (eval #'plus)))))
(eval '(m2 def ref))
(test + eval '(ref))
(eval '(def))
(test + eval '(ref))
(eval (eval '(def)))
(test 1 eval '(ref)))
#|
(define-syntax-rule (m3 c-id)
(begin
(define-syntax plus #f)
(define (c-id) (compile #'(define plus plus)))))
(m3 cdef)
(cdef)
|#
;; ----------------------------------------

View File

@ -4234,8 +4234,8 @@
(write-bytes
(zo-marshal
(match m
[(compilation-top max-let-depth prefix code)
(compilation-top max-let-depth prefix
[(compilation-top max-let-depth binding-namess prefix code)
(compilation-top max-let-depth binding-namess prefix
(let ([body (mod-body code)])
(struct-copy mod code [body
(match body

View File

@ -1282,7 +1282,7 @@
(let-syntax ([z (lambda (stx) #`#,(@@foo 3))])
z))
(test (void) eval (expand #'(begin-for-syntax (define @@zoo (@@foo 2)))))
(test (void) eval-syntax (expand #'(begin-for-syntax (define @@zoo (@@foo 2)))))
(define-syntax (@@x stx) #`#, @@zoo)
(test 2 '@@x/@@zoo @@x)
(begin-for-syntax (define @@zoo2 (@@foo 2)))
@ -1290,7 +1290,7 @@
(test 2 '@@x/@@zoo @@x)
(begin-for-syntax (@@foo 1))
(test (void) eval (expand #'(begin-for-syntax (@@foo 1))))
(test (void) eval-syntax (expand #'(begin-for-syntax (@@foo 1))))
(module @@p racket/base
(require (for-syntax racket/base

View File

@ -1706,7 +1706,7 @@ Scheme_Object *scheme_get_shadower(Scheme_Object *sym, Scheme_Comp_Env *env, int
return sym;
}
static Scheme_Hash_Table *get_binding_names_table(Scheme_Env *env)
Scheme_Hash_Table *scheme_get_binding_names_table(Scheme_Env *env)
{
Scheme_Hash_Table *binding_names;
@ -1753,22 +1753,23 @@ static int binding_name_available(Scheme_Hash_Table *binding_names, Scheme_Objec
return 0;
}
static Scheme_Object *select_binding_name(Scheme_Object *sym, Scheme_Env *env, Scheme_Object *id)
static Scheme_Object *select_binding_name(Scheme_Object *sym, Scheme_Env *env,
Scheme_Object *id, Scheme_Object *orig_id)
{
int i;
char onstack[50], *buf;
intptr_t len;
Scheme_Hash_Table *binding_names;
binding_names = get_binding_names_table(env);
binding_names = scheme_get_binding_names_table(env);
/* Use a plain symbol only if the binding has no extra scopes: */
if (SCHEME_SYM_WEIRDP(sym)
|| scheme_stx_equal_module_context(id, ((env->module && env->module->ii_src)
|| scheme_stx_equal_module_context(orig_id, ((env->module && env->module->ii_src)
? env->module->ii_src
: env->stx_context))) {
if (binding_name_available(binding_names, sym, id, scheme_env_phase(env))) {
scheme_hash_set(binding_names, sym, id);
if (binding_name_available(binding_names, sym, orig_id, scheme_env_phase(env))) {
scheme_hash_set(binding_names, sym, orig_id);
return sym;
}
}
@ -1786,7 +1787,7 @@ static Scheme_Object *select_binding_name(Scheme_Object *sym, Scheme_Env *env, S
sym = scheme_intern_exact_parallel_symbol(buf, strlen(buf));
if (binding_name_available(binding_names, sym, id, scheme_env_phase(env))) {
scheme_hash_set(binding_names, sym, id);
scheme_hash_set(binding_names, sym, orig_id);
return sym;
}
@ -1794,26 +1795,42 @@ static Scheme_Object *select_binding_name(Scheme_Object *sym, Scheme_Env *env, S
}
}
Scheme_Object *scheme_global_binding(Scheme_Object *id, Scheme_Env *env)
static int binding_matches_env(Scheme_Object *binding, Scheme_Env *env, Scheme_Object *phase)
{
Scheme_Object *sym, *binding, *phase;
return (SCHEME_VECTORP(binding)
&& SAME_OBJ(SCHEME_VEC_ELS(binding)[0],
(env->module
? env->module->self_modidx
: scheme_false))
&& SAME_OBJ(SCHEME_VEC_ELS(binding)[2], phase));
}
Scheme_Object *scheme_global_binding(Scheme_Object *id, Scheme_Env *env, int for_top_level)
{
Scheme_Object *sym, *binding, *phase, *orig_id = id;
int exact_match;
phase = scheme_env_phase(env);
if (for_top_level) {
/* While compiling, we want to avoid binding in the top-level namespace.
Adding an extra scope avoids that while still letting us have some binding
to generate names for top-level definitions. */
if (!env->tmp_bind_scope) {
sym = scheme_new_scope(SCHEME_STX_MODULE_SCOPE);
env->tmp_bind_scope = sym;
}
id = scheme_stx_add_scope(id, env->tmp_bind_scope, phase);
}
binding = scheme_stx_lookup_stop_at_free_eq(id, phase, &exact_match);
if (!SCHEME_FALSEP(binding)) {
if (exact_match) {
if (SCHEME_VECTORP(binding)
&& SAME_OBJ(SCHEME_VEC_ELS(binding)[0],
(env->module
? env->module->self_modidx
: scheme_false))
&& SAME_OBJ(SCHEME_VEC_ELS(binding)[2], phase)) {
if (binding_matches_env(binding, env, phase)) {
sym = SCHEME_VEC_ELS(binding)[1];
/* Make sure name is in binding_names and with a specific `id`: */
scheme_hash_set(get_binding_names_table(env), sym, id);
scheme_hash_set(scheme_get_binding_names_table(env), sym, orig_id);
return sym;
}
/* Since the binding didn't match, we'll "shadow" the binding
@ -1821,7 +1838,7 @@ Scheme_Object *scheme_global_binding(Scheme_Object *id, Scheme_Env *env)
}
}
sym = select_binding_name(SCHEME_STX_VAL(id), env, id);
sym = select_binding_name(SCHEME_STX_VAL(id), env, id, orig_id);
scheme_add_module_binding(id, phase,
(env->module ? env->module->self_modidx : scheme_false),
@ -1840,8 +1857,24 @@ Scheme_Object *scheme_future_global_binding(Scheme_Object *id, Scheme_Env *env)
/* The identifier id is being referenced before it has a binding. We
want to allow it, anyway, perhaps because it's outside of a module
context or because it's phase-1 code. So, we assume that it's going to
have no extra scopes and get the base name. */
have no extra scopes and get the base name.
Then again, if `id` has a binding after adding the environment's temporary
binding scope, then map the identifier to that temporary binding's name.
That special case allows compiling a `define` to create a binding that
can be referenced in the same compilation. */
{
if (env->tmp_bind_scope) {
Scheme_Object *binding, *phase;
phase = scheme_env_phase(env);
id = scheme_stx_add_scope(id, env->tmp_bind_scope, phase);
binding = scheme_stx_lookup_stop_at_free_eq(id, phase, NULL);
if (binding_matches_env(binding, env, phase))
return SCHEME_VEC_ELS(binding)[1];
}
return SCHEME_STX_VAL(id);
}

View File

@ -822,6 +822,25 @@ void scheme_define_parse(Scheme_Object *form,
scheme_wrong_syntax(NULL, *var, form, "bad variable list");
}
static Scheme_Object *global_binding(Scheme_Object *id, Scheme_Comp_Env *env)
{
Scheme_Object *sym;
sym = scheme_global_binding(id, env->genv, env->flags & SCHEME_TMP_TL_BIND_FRAME);
if (env->binding_namess && !SAME_OBJ(sym, SCHEME_STX_VAL(id))) {
/* Record the new binding */
Scheme_Hash_Tree *binds;
binds = (Scheme_Hash_Tree *)scheme_hash_get(env->binding_namess, scheme_env_phase(env->genv));
if (!binds)
binds = scheme_make_hash_tree(0);
binds = scheme_hash_tree_set(binds, sym, id);
scheme_hash_set(env->binding_namess, scheme_env_phase(env->genv), (Scheme_Object *)binds);
}
return sym;
}
static Scheme_Object *
defn_targets_syntax (Scheme_Object *var, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec)
{
@ -831,7 +850,7 @@ defn_targets_syntax (Scheme_Object *var, Scheme_Comp_Env *env, Scheme_Compile_In
Scheme_Object *name, *pr, *bucket;
name = SCHEME_STX_CAR(var);
name = scheme_global_binding(name, env->genv);
name = global_binding(name, env);
if (rec[drec].resolve_module_ids || !env->genv->module) {
bucket = (Scheme_Object *)scheme_global_bucket(name, env->genv);
@ -3410,9 +3429,7 @@ static void prep_exp_env_compile_rec(Scheme_Compile_Info *rec, int drec)
static Scheme_Object *stx_val(Scheme_Object *name, Scheme_Object *_env)
{
Scheme_Env *env = (Scheme_Env *)_env;
return scheme_global_binding(name, env);
return global_binding(name, (Scheme_Comp_Env *)_env);
}
static Scheme_Object *
@ -3434,7 +3451,7 @@ do_define_syntaxes_syntax(Scheme_Object *form, Scheme_Comp_Env *env,
scheme_prepare_exp_env(env->genv);
scheme_prepare_compile_env(env->genv->exp_env);
names = scheme_named_map_1(NULL, stx_val, names, (Scheme_Object *)env->genv);
names = scheme_named_map_1(NULL, stx_val, names, (Scheme_Object *)env);
exp_env = scheme_new_comp_env(env->genv->exp_env, env->insp, NULL, 0);
@ -3517,9 +3534,11 @@ begin_for_syntax_expand(Scheme_Object *orig_form, Scheme_Comp_Env *in_env, Schem
scheme_prepare_exp_env(in_env->genv);
scheme_prepare_compile_env(in_env->genv->exp_env);
if (rec[drec].comp)
env = scheme_new_comp_env(in_env->genv->exp_env, in_env->insp, NULL, 0);
else
if (rec[drec].comp) {
env = scheme_new_comp_env(in_env->genv->exp_env, in_env->insp, NULL,
(in_env->flags & SCHEME_TMP_TL_BIND_FRAME));
env->bindings = in_env->bindings;
} else
env = scheme_new_expand_env(in_env->genv->exp_env, in_env->insp, NULL, 0);
if (rec[drec].comp)

View File

@ -1,12 +1,12 @@
{
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,10,54,46,50,46,57,48,48,46,49,51,84,0,0,0,0,0,0,0,
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,10,54,46,50,46,57,48,48,46,49,53,84,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,1,0,0,8,
0,18,0,22,0,26,0,31,0,38,0,42,0,47,0,59,0,66,0,69,0,
82,0,89,0,94,0,103,0,109,0,123,0,137,0,140,0,146,0,157,0,159,
0,173,0,180,0,202,0,204,0,218,0,246,0,251,0,255,0,72,1,79,1,
90,1,128,1,135,1,144,1,177,1,210,1,16,2,21,2,102,2,107,2,112,
2,133,2,30,3,51,3,104,3,173,3,242,3,132,4,24,5,35,5,118,5,
0,0,147,7,0,0,3,1,5,105,110,115,112,48,71,35,37,109,105,110,45,
0,0,148,7,0,0,3,1,5,105,110,115,112,48,71,35,37,109,105,110,45,
115,116,120,29,11,11,11,65,97,110,100,66,99,111,110,100,68,100,101,102,105,
110,101,65,108,101,116,66,108,101,116,42,73,108,101,116,42,45,118,97,108,117,
101,115,68,108,101,116,114,101,99,64,111,114,74,112,97,114,97,109,101,116,101,
@ -72,37 +72,37 @@
22,82,248,22,164,4,196,249,22,157,4,80,143,42,39,28,248,22,64,248,22,
158,4,248,22,81,197,250,22,90,2,27,248,22,90,248,22,164,20,199,248,22,
102,198,27,248,22,158,4,248,22,164,20,197,250,22,90,2,27,248,22,90,248,
22,81,197,250,22,91,2,24,248,22,165,20,199,248,22,165,20,202,144,39,20,
121,145,2,1,39,16,1,11,16,0,20,27,15,61,9,2,2,2,2,2,3,
11,11,11,11,9,9,11,11,11,10,39,80,143,39,39,20,121,145,2,1,39,
16,0,16,0,41,42,39,16,0,39,16,0,39,11,11,11,16,11,2,4,2,
5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,16,11,
11,11,11,11,11,11,11,11,11,11,11,16,11,2,4,2,5,2,6,2,7,
2,8,2,9,2,10,2,11,2,12,2,13,2,14,39,50,40,16,0,39,16,
1,2,15,40,11,11,11,16,0,16,0,16,0,39,39,11,12,11,11,16,0,
16,0,16,0,39,39,16,12,16,5,11,20,15,16,2,20,14,144,39,39,40,
80,143,39,39,39,20,121,145,2,1,39,16,1,2,15,16,1,33,36,10,16,
5,2,13,88,148,8,36,40,56,40,9,223,0,33,37,39,20,121,145,2,1,
39,16,1,2,15,16,0,11,16,5,2,14,88,148,8,36,40,56,40,9,223,
0,33,38,39,20,121,145,2,1,39,16,1,2,15,16,0,11,16,5,2,4,
88,148,8,36,40,56,42,9,223,0,33,39,39,20,121,145,2,1,39,16,1,
2,15,16,1,33,40,11,16,5,2,11,88,148,8,36,40,59,42,9,223,0,
33,41,39,20,121,145,2,1,39,16,1,2,15,16,1,33,42,11,16,5,2,
7,88,148,8,36,40,61,40,9,223,0,33,45,39,20,121,145,2,1,39,16,
1,2,15,16,0,11,16,5,2,10,88,148,8,36,40,56,40,9,223,0,33,
47,39,20,121,145,2,1,39,16,1,2,15,16,0,11,16,5,2,8,88,148,
8,36,40,57,40,9,223,0,33,48,39,20,121,145,2,1,39,16,1,2,15,
16,0,11,16,5,2,9,88,148,8,36,40,57,40,9,223,0,33,49,39,20,
121,145,2,1,39,16,1,2,15,16,0,11,16,5,2,12,88,148,8,36,40,
59,40,9,223,0,33,50,39,20,121,145,2,1,39,16,1,2,15,16,0,11,
16,5,2,5,88,148,8,36,40,61,42,9,223,0,33,51,39,20,121,145,2,
1,39,16,1,2,15,16,1,33,52,11,16,5,2,6,88,148,8,36,40,57,
40,9,223,0,33,53,39,20,121,145,2,1,39,16,1,2,15,16,0,11,16,
0,94,2,17,2,18,93,2,17,9,9,39,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 2092);
22,81,197,250,22,91,2,24,248,22,165,20,199,248,22,165,20,202,145,39,9,
20,121,145,2,1,39,16,1,11,16,0,20,27,15,61,9,2,2,2,2,2,
3,11,11,11,11,9,9,11,11,11,10,39,80,143,39,39,20,121,145,2,1,
39,16,0,16,0,41,42,39,16,0,39,16,0,39,11,11,11,16,11,2,4,
2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,16,
11,11,11,11,11,11,11,11,11,11,11,11,16,11,2,4,2,5,2,6,2,
7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,39,50,40,16,0,39,
16,1,2,15,40,11,11,11,16,0,16,0,16,0,39,39,11,12,11,11,16,
0,16,0,16,0,39,39,16,12,16,5,11,20,15,16,2,20,14,144,39,39,
40,80,143,39,39,39,20,121,145,2,1,39,16,1,2,15,16,1,33,36,10,
16,5,2,13,88,148,8,36,40,56,40,9,223,0,33,37,39,20,121,145,2,
1,39,16,1,2,15,16,0,11,16,5,2,14,88,148,8,36,40,56,40,9,
223,0,33,38,39,20,121,145,2,1,39,16,1,2,15,16,0,11,16,5,2,
4,88,148,8,36,40,56,42,9,223,0,33,39,39,20,121,145,2,1,39,16,
1,2,15,16,1,33,40,11,16,5,2,11,88,148,8,36,40,59,42,9,223,
0,33,41,39,20,121,145,2,1,39,16,1,2,15,16,1,33,42,11,16,5,
2,7,88,148,8,36,40,61,40,9,223,0,33,45,39,20,121,145,2,1,39,
16,1,2,15,16,0,11,16,5,2,10,88,148,8,36,40,56,40,9,223,0,
33,47,39,20,121,145,2,1,39,16,1,2,15,16,0,11,16,5,2,8,88,
148,8,36,40,57,40,9,223,0,33,48,39,20,121,145,2,1,39,16,1,2,
15,16,0,11,16,5,2,9,88,148,8,36,40,57,40,9,223,0,33,49,39,
20,121,145,2,1,39,16,1,2,15,16,0,11,16,5,2,12,88,148,8,36,
40,59,40,9,223,0,33,50,39,20,121,145,2,1,39,16,1,2,15,16,0,
11,16,5,2,5,88,148,8,36,40,61,42,9,223,0,33,51,39,20,121,145,
2,1,39,16,1,2,15,16,1,33,52,11,16,5,2,6,88,148,8,36,40,
57,40,9,223,0,33,53,39,20,121,145,2,1,39,16,1,2,15,16,0,11,
16,0,94,2,17,2,18,93,2,17,9,9,39,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 2093);
}
{
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,10,54,46,50,46,57,48,48,46,49,51,84,0,0,0,0,0,0,0,
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,10,54,46,50,46,57,48,48,46,49,53,84,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,1,0,0,8,
0,16,0,29,0,34,0,51,0,63,0,85,0,114,0,158,0,164,0,178,0,
193,0,211,0,223,0,239,0,253,0,19,1,39,1,73,1,90,1,107,1,130,
@ -122,7 +122,7 @@
109,45,167,45,200,45,76,46,235,46,251,46,92,47,109,47,187,49,238,51,254,
51,228,53,160,54,162,54,189,54,205,54,221,54,62,55,129,56,61,57,77,57,
86,57,93,57,159,58,225,59,87,60,133,63,7,64,139,64,84,66,34,67,76,
67,184,67,0,0,131,75,0,0,3,1,5,105,110,115,112,48,69,35,37,117,
67,184,67,0,0,132,75,0,0,3,1,5,105,110,115,112,48,69,35,37,117,
116,105,108,115,74,112,97,116,104,45,115,116,114,105,110,103,63,66,98,115,98,
115,78,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,73,114,101,
114,111,111,116,45,112,97,116,104,1,20,102,105,110,100,45,101,120,101,99,117,
@ -947,109 +947,110 @@
27,250,80,144,45,43,42,248,22,152,16,2,56,11,11,27,248,22,139,4,23,
199,1,27,28,23,194,2,23,194,1,86,94,23,194,1,39,27,248,22,139,4,
23,202,1,249,22,140,6,23,198,1,20,20,95,88,148,8,36,39,51,11,9,
224,3,2,33,190,2,23,195,1,23,196,1,248,80,144,41,8,54,42,193,144,
39,20,121,145,2,1,39,16,1,11,16,0,20,27,15,56,9,2,2,2,2,
29,11,11,11,11,11,11,11,9,9,11,11,11,10,46,80,143,39,39,20,121,
145,2,1,54,16,40,2,3,2,4,2,5,2,6,2,7,2,8,2,9,30,
2,11,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,
107,101,121,11,6,30,2,11,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,11,4,2,12,2,13,2,14,2,
15,2,16,2,17,2,18,30,2,11,1,19,99,97,99,104,101,45,99,111,110,
102,105,103,117,114,97,116,105,111,110,11,1,2,19,2,20,2,21,2,22,2,
23,2,24,2,25,2,26,2,27,2,28,2,29,30,2,11,1,21,101,120,99,
101,112,116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,11,3,2,
30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,40,
16,0,40,42,39,16,0,39,16,19,2,13,2,14,2,12,2,25,2,4,2,
35,2,23,2,24,2,19,2,29,2,33,2,21,2,22,2,31,2,27,2,30,
2,32,2,36,2,28,58,11,11,11,16,17,2,9,2,17,2,15,2,40,2,
16,2,7,2,26,2,39,2,18,2,20,2,38,2,5,2,34,2,8,2,37,
2,3,2,6,16,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,16,17,2,9,2,17,2,15,2,40,2,16,2,7,2,26,2,39,2,
18,2,20,2,38,2,5,2,34,2,8,2,37,2,3,2,6,56,56,40,12,
11,11,16,0,16,0,16,0,39,39,11,12,11,11,16,0,16,0,16,0,39,
39,16,51,20,15,16,2,32,0,88,148,8,36,40,48,11,2,3,222,33,78,
80,144,39,39,40,20,15,16,2,249,22,155,7,7,92,7,92,80,144,39,40,
40,20,15,16,2,88,148,8,36,40,57,41,2,5,223,0,33,83,80,144,39,
41,40,20,15,16,2,88,148,8,36,41,61,41,2,6,223,0,33,85,80,144,
39,42,40,20,15,16,2,20,26,96,2,7,88,148,8,36,42,8,24,8,32,
9,223,0,33,92,88,148,8,36,41,50,55,9,223,0,33,93,88,148,8,36,
40,49,55,9,223,0,33,94,80,144,39,43,40,20,15,16,2,27,248,22,164,
16,248,22,167,8,27,28,249,22,169,9,247,22,180,8,2,43,6,1,1,59,
6,1,1,58,250,22,137,8,6,14,14,40,91,94,126,97,93,42,41,126,97,
40,46,42,41,23,196,2,23,196,1,88,148,8,36,41,51,11,2,8,223,0,
33,98,80,144,39,44,40,20,15,16,2,88,148,39,40,8,38,8,128,6,2,
9,223,0,33,99,80,144,39,45,40,20,15,16,2,32,0,88,148,8,36,41,
50,11,2,12,222,33,100,80,144,39,48,40,20,15,16,2,32,0,88,148,8,
36,42,51,11,2,13,222,33,102,80,144,39,49,40,20,15,16,2,32,0,88,
148,8,36,41,49,11,2,14,222,33,103,80,144,39,50,40,20,15,16,2,88,
148,39,42,53,8,128,128,2,15,223,0,33,105,80,144,39,51,40,20,15,16,
2,88,148,39,44,55,8,128,128,2,17,223,0,33,107,80,144,39,53,40,20,
15,16,2,88,148,39,39,56,55,9,223,0,33,108,80,144,39,8,40,42,20,
15,16,2,88,148,39,39,47,16,4,39,40,8,128,4,39,2,18,223,0,33,
109,80,144,39,54,40,20,15,16,2,88,148,39,39,56,55,9,223,0,33,110,
80,144,39,8,41,42,20,15,16,2,88,148,39,39,47,16,4,39,40,8,128,
8,39,2,20,223,0,33,111,80,144,39,57,40,20,15,16,2,88,148,8,36,
39,8,38,8,128,6,9,223,0,33,112,80,144,39,8,42,42,20,15,16,2,
88,148,8,36,40,50,16,4,39,39,8,128,16,39,2,21,223,0,33,113,80,
144,39,58,40,20,15,16,2,20,28,143,32,0,88,148,39,40,48,11,2,22,
222,33,114,32,0,88,148,39,40,48,11,2,22,222,33,115,80,144,39,59,40,
20,15,16,2,88,148,8,36,40,50,8,240,0,128,0,0,2,23,223,0,33,
116,80,144,39,60,40,20,15,16,2,88,148,39,39,56,55,9,223,0,33,117,
80,144,39,8,43,42,20,15,16,2,88,148,8,36,40,51,16,4,39,40,8,
128,32,39,2,24,223,0,33,118,80,144,39,61,40,20,15,16,2,88,148,39,
40,56,55,2,19,223,0,33,119,80,144,39,56,40,20,15,16,2,88,148,8,
36,41,58,16,4,8,240,0,128,0,0,8,32,8,128,64,39,2,50,223,0,
33,120,80,144,39,8,44,42,20,15,16,2,88,148,8,36,42,52,16,4,39,
39,8,128,64,39,2,25,223,0,33,121,80,144,39,8,23,40,20,15,16,2,
88,148,39,39,56,55,9,223,0,33,122,80,144,39,8,45,42,20,15,16,2,
88,148,8,36,39,57,16,4,8,240,0,128,0,0,8,137,2,8,128,128,39,
2,26,223,0,33,123,80,144,39,8,24,40,20,15,16,2,247,22,140,2,80,
144,39,8,25,40,20,15,16,2,248,22,16,67,115,116,97,109,112,80,144,39,
8,26,40,20,15,16,2,88,148,39,40,49,8,240,0,0,0,4,9,223,0,
33,125,80,144,39,8,46,42,20,15,16,2,88,148,39,41,51,16,4,39,8,
128,80,8,240,0,64,0,0,39,2,29,223,0,33,133,2,80,144,39,8,27,
40,20,15,16,2,32,0,88,148,8,36,40,48,11,2,30,222,33,134,2,80,
144,39,8,29,40,20,15,16,2,88,148,8,36,42,48,8,240,0,0,0,2,
74,109,97,107,101,45,104,97,110,100,108,101,114,223,0,33,136,2,80,144,39,
8,47,42,20,15,16,2,88,148,39,40,47,16,4,8,128,6,8,128,104,8,
240,0,128,0,0,39,2,31,223,0,33,146,2,80,144,39,8,30,40,20,15,
16,2,88,148,39,41,59,16,2,39,8,240,0,128,0,0,2,32,223,0,33,
148,2,80,144,39,8,31,40,20,15,16,2,88,148,8,36,41,61,16,4,39,
8,240,0,64,0,0,39,40,2,50,223,0,33,149,2,80,144,39,8,48,42,
20,15,16,2,88,148,39,47,8,33,16,4,39,39,40,41,67,99,108,111,111,
112,223,0,33,156,2,80,144,39,8,49,42,20,15,16,2,88,148,39,44,8,
25,16,4,39,8,240,0,192,0,0,39,42,2,16,223,0,33,157,2,80,144,
39,52,40,20,15,16,2,88,148,39,42,58,16,4,47,39,43,39,2,33,223,
0,33,162,2,80,144,39,8,32,40,20,15,16,2,32,0,88,148,39,42,53,
11,2,35,222,33,163,2,80,144,39,8,34,40,20,15,16,2,32,0,88,148,
8,36,44,8,27,11,2,36,222,33,168,2,80,144,39,8,35,40,20,15,16,
2,20,28,143,32,0,88,148,8,36,41,55,11,2,37,222,33,171,2,88,148,
8,100,41,52,16,4,39,39,47,39,2,37,223,0,33,173,2,80,144,39,8,
36,40,20,15,16,2,20,28,143,32,0,88,148,8,36,41,55,11,2,34,222,
33,178,2,88,148,8,100,41,52,16,4,39,39,47,39,2,34,223,0,33,179,
2,80,144,39,8,33,40,20,15,16,2,20,28,143,32,0,88,148,39,40,47,
11,2,38,222,33,180,2,32,0,88,148,39,40,47,11,2,38,222,33,181,2,
80,144,39,8,37,40,20,15,16,2,88,148,8,36,40,58,16,4,55,41,39,
43,2,50,223,0,33,182,2,80,144,39,8,50,42,20,15,16,2,88,148,8,
36,40,58,16,4,55,41,39,47,2,50,223,0,33,183,2,80,144,39,8,51,
42,20,15,16,2,88,148,39,39,56,55,9,223,0,33,184,2,80,144,39,8,
52,42,20,15,16,2,88,148,8,36,40,8,23,16,4,55,41,39,8,32,2,
50,223,0,33,185,2,80,144,39,8,53,42,20,15,16,2,20,26,96,2,39,
88,148,39,39,60,16,4,8,32,8,140,2,39,43,9,223,0,33,186,2,88,
148,39,40,61,16,4,8,32,8,140,2,39,47,9,223,0,33,187,2,88,148,
39,41,8,30,16,4,8,48,8,139,2,39,8,48,9,223,0,33,188,2,80,
144,39,8,38,40,20,15,16,2,88,148,8,36,40,60,16,4,8,128,6,39,
39,8,64,2,50,223,0,33,189,2,80,144,39,8,54,42,20,15,16,2,88,
148,8,36,42,56,16,4,55,39,39,8,64,2,40,223,0,33,191,2,80,144,
39,8,39,40,95,29,94,2,10,70,35,37,107,101,114,110,101,108,11,29,94,
2,10,71,35,37,109,105,110,45,115,116,120,11,2,11,9,9,9,39,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 19760);
224,3,2,33,190,2,23,195,1,23,196,1,248,80,144,41,8,54,42,193,145,
39,9,20,121,145,2,1,39,16,1,11,16,0,20,27,15,56,9,2,2,2,
2,29,11,11,11,11,11,11,11,9,9,11,11,11,10,46,80,143,39,39,20,
121,145,2,1,54,16,40,2,3,2,4,2,5,2,6,2,7,2,8,2,9,
30,2,11,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,
45,107,101,121,11,6,30,2,11,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,11,4,2,12,2,13,2,14,
2,15,2,16,2,17,2,18,30,2,11,1,19,99,97,99,104,101,45,99,111,
110,102,105,103,117,114,97,116,105,111,110,11,1,2,19,2,20,2,21,2,22,
2,23,2,24,2,25,2,26,2,27,2,28,2,29,30,2,11,1,21,101,120,
99,101,112,116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,11,3,
2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,
40,16,0,40,42,39,16,0,39,16,19,2,13,2,14,2,12,2,25,2,4,
2,35,2,23,2,24,2,19,2,29,2,33,2,21,2,22,2,31,2,27,2,
30,2,32,2,36,2,28,58,11,11,11,16,17,2,9,2,17,2,15,2,40,
2,16,2,7,2,26,2,39,2,18,2,20,2,38,2,5,2,34,2,8,2,
37,2,3,2,6,16,17,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,16,17,2,9,2,17,2,15,2,40,2,16,2,7,2,26,2,39,
2,18,2,20,2,38,2,5,2,34,2,8,2,37,2,3,2,6,56,56,40,
12,11,11,16,0,16,0,16,0,39,39,11,12,11,11,16,0,16,0,16,0,
39,39,16,51,20,15,16,2,32,0,88,148,8,36,40,48,11,2,3,222,33,
78,80,144,39,39,40,20,15,16,2,249,22,155,7,7,92,7,92,80,144,39,
40,40,20,15,16,2,88,148,8,36,40,57,41,2,5,223,0,33,83,80,144,
39,41,40,20,15,16,2,88,148,8,36,41,61,41,2,6,223,0,33,85,80,
144,39,42,40,20,15,16,2,20,26,96,2,7,88,148,8,36,42,8,24,8,
32,9,223,0,33,92,88,148,8,36,41,50,55,9,223,0,33,93,88,148,8,
36,40,49,55,9,223,0,33,94,80,144,39,43,40,20,15,16,2,27,248,22,
164,16,248,22,167,8,27,28,249,22,169,9,247,22,180,8,2,43,6,1,1,
59,6,1,1,58,250,22,137,8,6,14,14,40,91,94,126,97,93,42,41,126,
97,40,46,42,41,23,196,2,23,196,1,88,148,8,36,41,51,11,2,8,223,
0,33,98,80,144,39,44,40,20,15,16,2,88,148,39,40,8,38,8,128,6,
2,9,223,0,33,99,80,144,39,45,40,20,15,16,2,32,0,88,148,8,36,
41,50,11,2,12,222,33,100,80,144,39,48,40,20,15,16,2,32,0,88,148,
8,36,42,51,11,2,13,222,33,102,80,144,39,49,40,20,15,16,2,32,0,
88,148,8,36,41,49,11,2,14,222,33,103,80,144,39,50,40,20,15,16,2,
88,148,39,42,53,8,128,128,2,15,223,0,33,105,80,144,39,51,40,20,15,
16,2,88,148,39,44,55,8,128,128,2,17,223,0,33,107,80,144,39,53,40,
20,15,16,2,88,148,39,39,56,55,9,223,0,33,108,80,144,39,8,40,42,
20,15,16,2,88,148,39,39,47,16,4,39,40,8,128,4,39,2,18,223,0,
33,109,80,144,39,54,40,20,15,16,2,88,148,39,39,56,55,9,223,0,33,
110,80,144,39,8,41,42,20,15,16,2,88,148,39,39,47,16,4,39,40,8,
128,8,39,2,20,223,0,33,111,80,144,39,57,40,20,15,16,2,88,148,8,
36,39,8,38,8,128,6,9,223,0,33,112,80,144,39,8,42,42,20,15,16,
2,88,148,8,36,40,50,16,4,39,39,8,128,16,39,2,21,223,0,33,113,
80,144,39,58,40,20,15,16,2,20,28,143,32,0,88,148,39,40,48,11,2,
22,222,33,114,32,0,88,148,39,40,48,11,2,22,222,33,115,80,144,39,59,
40,20,15,16,2,88,148,8,36,40,50,8,240,0,128,0,0,2,23,223,0,
33,116,80,144,39,60,40,20,15,16,2,88,148,39,39,56,55,9,223,0,33,
117,80,144,39,8,43,42,20,15,16,2,88,148,8,36,40,51,16,4,39,40,
8,128,32,39,2,24,223,0,33,118,80,144,39,61,40,20,15,16,2,88,148,
39,40,56,55,2,19,223,0,33,119,80,144,39,56,40,20,15,16,2,88,148,
8,36,41,58,16,4,8,240,0,128,0,0,8,32,8,128,64,39,2,50,223,
0,33,120,80,144,39,8,44,42,20,15,16,2,88,148,8,36,42,52,16,4,
39,39,8,128,64,39,2,25,223,0,33,121,80,144,39,8,23,40,20,15,16,
2,88,148,39,39,56,55,9,223,0,33,122,80,144,39,8,45,42,20,15,16,
2,88,148,8,36,39,57,16,4,8,240,0,128,0,0,8,137,2,8,128,128,
39,2,26,223,0,33,123,80,144,39,8,24,40,20,15,16,2,247,22,140,2,
80,144,39,8,25,40,20,15,16,2,248,22,16,67,115,116,97,109,112,80,144,
39,8,26,40,20,15,16,2,88,148,39,40,49,8,240,0,0,0,4,9,223,
0,33,125,80,144,39,8,46,42,20,15,16,2,88,148,39,41,51,16,4,39,
8,128,80,8,240,0,64,0,0,39,2,29,223,0,33,133,2,80,144,39,8,
27,40,20,15,16,2,32,0,88,148,8,36,40,48,11,2,30,222,33,134,2,
80,144,39,8,29,40,20,15,16,2,88,148,8,36,42,48,8,240,0,0,0,
2,74,109,97,107,101,45,104,97,110,100,108,101,114,223,0,33,136,2,80,144,
39,8,47,42,20,15,16,2,88,148,39,40,47,16,4,8,128,6,8,128,104,
8,240,0,128,0,0,39,2,31,223,0,33,146,2,80,144,39,8,30,40,20,
15,16,2,88,148,39,41,59,16,2,39,8,240,0,128,0,0,2,32,223,0,
33,148,2,80,144,39,8,31,40,20,15,16,2,88,148,8,36,41,61,16,4,
39,8,240,0,64,0,0,39,40,2,50,223,0,33,149,2,80,144,39,8,48,
42,20,15,16,2,88,148,39,47,8,33,16,4,39,39,40,41,67,99,108,111,
111,112,223,0,33,156,2,80,144,39,8,49,42,20,15,16,2,88,148,39,44,
8,25,16,4,39,8,240,0,192,0,0,39,42,2,16,223,0,33,157,2,80,
144,39,52,40,20,15,16,2,88,148,39,42,58,16,4,47,39,43,39,2,33,
223,0,33,162,2,80,144,39,8,32,40,20,15,16,2,32,0,88,148,39,42,
53,11,2,35,222,33,163,2,80,144,39,8,34,40,20,15,16,2,32,0,88,
148,8,36,44,8,27,11,2,36,222,33,168,2,80,144,39,8,35,40,20,15,
16,2,20,28,143,32,0,88,148,8,36,41,55,11,2,37,222,33,171,2,88,
148,8,100,41,52,16,4,39,39,47,39,2,37,223,0,33,173,2,80,144,39,
8,36,40,20,15,16,2,20,28,143,32,0,88,148,8,36,41,55,11,2,34,
222,33,178,2,88,148,8,100,41,52,16,4,39,39,47,39,2,34,223,0,33,
179,2,80,144,39,8,33,40,20,15,16,2,20,28,143,32,0,88,148,39,40,
47,11,2,38,222,33,180,2,32,0,88,148,39,40,47,11,2,38,222,33,181,
2,80,144,39,8,37,40,20,15,16,2,88,148,8,36,40,58,16,4,55,41,
39,43,2,50,223,0,33,182,2,80,144,39,8,50,42,20,15,16,2,88,148,
8,36,40,58,16,4,55,41,39,47,2,50,223,0,33,183,2,80,144,39,8,
51,42,20,15,16,2,88,148,39,39,56,55,9,223,0,33,184,2,80,144,39,
8,52,42,20,15,16,2,88,148,8,36,40,8,23,16,4,55,41,39,8,32,
2,50,223,0,33,185,2,80,144,39,8,53,42,20,15,16,2,20,26,96,2,
39,88,148,39,39,60,16,4,8,32,8,140,2,39,43,9,223,0,33,186,2,
88,148,39,40,61,16,4,8,32,8,140,2,39,47,9,223,0,33,187,2,88,
148,39,41,8,30,16,4,8,48,8,139,2,39,8,48,9,223,0,33,188,2,
80,144,39,8,38,40,20,15,16,2,88,148,8,36,40,60,16,4,8,128,6,
39,39,8,64,2,50,223,0,33,189,2,80,144,39,8,54,42,20,15,16,2,
88,148,8,36,42,56,16,4,55,39,39,8,64,2,40,223,0,33,191,2,80,
144,39,8,39,40,95,29,94,2,10,70,35,37,107,101,114,110,101,108,11,29,
94,2,10,71,35,37,109,105,110,45,115,116,120,11,2,11,9,9,9,39,9,
0};
EVAL_ONE_SIZED_STR((char *)expr, 19761);
}
{
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,10,54,46,50,46,57,48,48,46,49,51,84,0,0,0,0,0,0,0,
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,10,54,46,50,46,57,48,48,46,49,53,84,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,1,0,0,8,
0,23,0,48,0,65,0,83,0,105,0,128,0,149,0,171,0,180,0,189,0,
196,0,205,0,212,0,0,0,247,1,0,0,3,1,5,105,110,115,112,48,76,
196,0,205,0,212,0,0,0,248,1,0,0,3,1,5,105,110,115,112,48,76,
35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23,115,116,114,117,99,
116,58,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,78,84,72,
45,112,108,97,99,101,45,99,104,97,110,110,101,108,79,84,72,45,112,108,97,
@ -1059,25 +1060,25 @@
97,99,101,45,99,104,97,110,110,101,108,45,105,110,1,20,84,72,45,112,108,
97,99,101,45,99,104,97,110,110,101,108,45,111,117,116,249,80,143,41,42,23,
196,1,39,249,80,143,41,42,23,196,1,39,249,80,143,41,42,195,39,249,80,
143,41,42,23,196,1,40,249,80,143,41,42,195,40,144,39,20,121,145,2,1,
39,16,1,11,16,0,20,27,15,56,9,2,2,2,2,29,11,11,11,11,11,
11,11,9,9,11,11,11,10,48,80,143,39,39,20,121,145,2,1,39,16,7,
2,3,2,4,2,5,2,6,2,7,2,8,2,9,16,0,40,42,39,16,0,
39,16,2,2,6,2,7,41,11,11,11,16,5,2,4,2,8,2,9,2,5,
2,3,16,5,11,11,11,11,11,16,5,2,4,2,8,2,9,2,5,2,3,
44,44,40,12,11,11,16,0,16,0,16,0,39,39,11,12,11,11,16,0,16,
0,16,0,39,39,16,3,20,15,16,6,253,22,190,10,2,4,11,41,39,11,
248,22,90,249,22,80,22,175,10,88,148,39,40,48,47,9,223,9,33,10,80,
144,39,39,40,80,144,39,40,40,80,144,39,41,40,80,144,39,42,40,80,144,
39,43,40,20,15,16,2,20,28,143,88,148,39,40,48,47,9,223,0,33,11,
88,148,39,40,48,47,9,223,0,33,12,80,144,39,44,40,20,15,16,2,20,
28,143,88,148,39,40,48,47,9,223,0,33,13,88,148,39,40,48,47,9,223,
0,33,14,80,144,39,45,40,93,29,94,67,113,117,111,116,101,70,35,37,107,
101,114,110,101,108,11,9,9,9,39,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 578);
143,41,42,23,196,1,40,249,80,143,41,42,195,40,145,39,9,20,121,145,2,
1,39,16,1,11,16,0,20,27,15,56,9,2,2,2,2,29,11,11,11,11,
11,11,11,9,9,11,11,11,10,48,80,143,39,39,20,121,145,2,1,39,16,
7,2,3,2,4,2,5,2,6,2,7,2,8,2,9,16,0,40,42,39,16,
0,39,16,2,2,6,2,7,41,11,11,11,16,5,2,4,2,8,2,9,2,
5,2,3,16,5,11,11,11,11,11,16,5,2,4,2,8,2,9,2,5,2,
3,44,44,40,12,11,11,16,0,16,0,16,0,39,39,11,12,11,11,16,0,
16,0,16,0,39,39,16,3,20,15,16,6,253,22,190,10,2,4,11,41,39,
11,248,22,90,249,22,80,22,175,10,88,148,39,40,48,47,9,223,9,33,10,
80,144,39,39,40,80,144,39,40,40,80,144,39,41,40,80,144,39,42,40,80,
144,39,43,40,20,15,16,2,20,28,143,88,148,39,40,48,47,9,223,0,33,
11,88,148,39,40,48,47,9,223,0,33,12,80,144,39,44,40,20,15,16,2,
20,28,143,88,148,39,40,48,47,9,223,0,33,13,88,148,39,40,48,47,9,
223,0,33,14,80,144,39,45,40,93,29,94,67,113,117,111,116,101,70,35,37,
107,101,114,110,101,108,11,9,9,9,39,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 579);
}
{
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,10,54,46,50,46,57,48,48,46,49,51,84,0,0,0,0,0,0,0,
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,10,54,46,50,46,57,48,48,46,49,53,84,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,0,1,0,0,8,
0,15,0,26,0,53,0,59,0,73,0,86,0,112,0,129,0,151,0,159,0,
171,0,186,0,202,0,220,0,241,0,253,0,13,1,36,1,60,1,72,1,103,
@ -1088,7 +1089,7 @@
13,165,13,160,14,40,15,115,15,22,16,35,16,188,16,116,17,159,17,241,17,
113,18,174,18,182,18,193,18,227,19,74,20,102,20,115,20,36,21,43,21,203,
21,223,21,67,22,89,22,99,22,113,22,151,22,250,22,254,22,5,23,211,23,
104,32,157,32,181,32,205,32,0,0,253,36,0,0,3,1,5,105,110,115,112,
104,32,157,32,181,32,205,32,0,0,254,36,0,0,3,1,5,105,110,115,112,
48,68,35,37,98,111,111,116,72,100,108,108,45,115,117,102,102,105,120,1,25,
100,101,102,97,117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112,
105,108,101,100,67,113,117,111,116,101,29,94,2,5,70,35,37,112,97,114,97,
@ -1488,65 +1489,65 @@
22,190,4,80,144,40,60,41,248,22,176,5,80,144,40,40,42,248,22,144,15,
80,144,40,48,42,20,18,144,11,80,143,39,59,248,80,144,40,8,27,40,249,
22,31,11,80,144,42,41,40,20,18,144,11,80,143,39,59,248,80,144,40,8,
27,40,249,22,31,11,80,144,42,41,40,144,39,20,121,145,2,1,39,16,1,
11,16,0,20,27,15,56,9,2,2,2,2,29,11,11,11,11,11,11,11,9,
9,11,11,11,10,41,80,143,39,39,20,121,145,2,1,44,16,28,2,3,2,
4,30,2,6,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,
110,45,107,101,121,11,6,30,2,6,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,11,4,30,2,7,74,112,
97,116,104,45,115,116,114,105,110,103,63,42,196,15,2,8,30,2,7,73,114,
101,114,111,111,116,45,112,97,116,104,44,196,16,30,2,7,77,112,97,116,104,
45,97,100,100,45,115,117,102,102,105,120,44,196,12,2,9,2,10,2,11,2,
12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,
30,2,7,1,19,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,
102,105,120,44,196,14,30,2,7,75,102,105,110,100,45,99,111,108,45,102,105,
108,101,49,196,4,30,2,7,78,110,111,114,109,97,108,45,99,97,115,101,45,
112,97,116,104,42,196,11,2,23,2,24,30,2,6,76,114,101,112,97,114,97,
109,101,116,101,114,105,122,101,11,7,16,0,40,42,39,16,0,39,16,16,2,
15,2,16,2,8,2,12,2,17,2,18,2,11,2,4,2,10,2,3,2,20,
2,13,2,14,2,9,2,19,2,22,55,11,11,11,16,3,2,23,2,21,2,
24,16,3,11,11,11,16,3,2,23,2,21,2,24,42,42,40,12,11,11,16,
0,16,0,16,0,39,39,11,12,11,11,16,0,16,0,16,0,39,39,16,24,
20,15,16,2,248,22,180,8,71,115,111,45,115,117,102,102,105,120,80,144,39,
39,40,20,15,16,2,88,148,39,41,8,39,8,189,3,2,4,223,0,33,50,
80,144,39,40,40,20,15,16,2,32,0,88,148,8,36,44,55,11,2,9,222,
33,51,80,144,39,47,40,20,15,16,2,20,28,143,32,0,88,148,8,36,40,
45,11,2,10,222,192,32,0,88,148,8,36,40,45,11,2,10,222,192,80,144,
39,48,40,20,15,16,2,247,22,141,2,80,144,39,44,40,20,15,16,2,8,
128,8,80,144,39,49,40,20,15,16,2,249,22,185,8,8,128,8,11,80,144,
39,50,40,20,15,16,2,88,148,8,36,40,53,8,128,32,2,13,223,0,33,
52,80,144,39,51,40,20,15,16,2,88,148,8,36,41,57,8,128,32,2,14,
223,0,33,53,80,144,39,52,40,20,15,16,2,247,22,76,80,144,39,53,40,
20,15,16,2,248,22,16,76,109,111,100,117,108,101,45,108,111,97,100,105,110,
103,80,144,39,54,40,20,15,16,2,11,80,143,39,55,20,15,16,2,11,80,
143,39,56,20,15,16,2,32,0,88,148,39,41,60,11,2,19,222,33,72,80,
144,39,57,40,20,15,16,2,32,0,88,148,8,36,40,52,11,2,20,222,33,
73,80,144,39,58,40,20,15,16,2,11,80,143,39,59,20,15,16,2,88,149,
8,34,40,48,8,240,4,0,16,0,1,21,112,114,101,112,45,112,108,97,110,
101,116,45,114,101,115,111,108,118,101,114,33,40,224,1,0,33,74,80,144,39,
8,28,42,20,15,16,2,88,148,39,40,53,8,240,0,0,3,0,69,103,101,
116,45,100,105,114,223,0,33,75,80,144,39,8,29,42,20,15,16,2,88,148,
39,40,52,8,240,0,0,64,0,74,112,97,116,104,45,115,115,45,62,114,107,
116,223,0,33,76,80,144,39,8,30,42,20,15,16,2,88,148,8,36,40,48,
8,240,0,0,4,0,9,223,0,33,77,80,144,39,8,31,42,20,15,16,2,
88,148,39,40,48,8,240,0,128,0,0,9,223,0,33,78,80,144,39,8,32,
42,20,15,16,2,27,11,20,19,143,39,90,144,40,10,89,146,40,39,10,20,
26,96,2,22,88,148,8,36,41,57,8,32,9,224,2,1,33,79,88,148,39,
42,52,11,9,223,0,33,80,88,148,39,43,8,32,16,4,8,240,44,240,0,
0,8,240,220,241,0,0,40,39,9,224,2,1,33,96,207,80,144,39,60,40,
20,15,16,2,88,148,39,39,48,16,2,8,134,8,8,176,32,2,23,223,0,
33,97,80,144,39,8,25,40,20,15,16,2,20,28,143,88,148,8,36,39,48,
16,2,43,8,144,32,2,24,223,0,33,98,88,148,8,36,39,48,16,2,43,
8,144,32,2,24,223,0,33,99,80,144,39,8,26,40,96,29,94,2,5,70,
35,37,107,101,114,110,101,108,11,29,94,2,5,71,35,37,109,105,110,45,115,
116,120,11,2,7,2,6,9,9,9,39,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 9714);
27,40,249,22,31,11,80,144,42,41,40,145,39,9,20,121,145,2,1,39,16,
1,11,16,0,20,27,15,56,9,2,2,2,2,29,11,11,11,11,11,11,11,
9,9,11,11,11,10,41,80,143,39,39,20,121,145,2,1,44,16,28,2,3,
2,4,30,2,6,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,
111,110,45,107,101,121,11,6,30,2,6,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,11,4,30,2,7,74,
112,97,116,104,45,115,116,114,105,110,103,63,42,196,15,2,8,30,2,7,73,
114,101,114,111,111,116,45,112,97,116,104,44,196,16,30,2,7,77,112,97,116,
104,45,97,100,100,45,115,117,102,102,105,120,44,196,12,2,9,2,10,2,11,
2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,
22,30,2,7,1,19,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,
102,102,105,120,44,196,14,30,2,7,75,102,105,110,100,45,99,111,108,45,102,
105,108,101,49,196,4,30,2,7,78,110,111,114,109,97,108,45,99,97,115,101,
45,112,97,116,104,42,196,11,2,23,2,24,30,2,6,76,114,101,112,97,114,
97,109,101,116,101,114,105,122,101,11,7,16,0,40,42,39,16,0,39,16,16,
2,15,2,16,2,8,2,12,2,17,2,18,2,11,2,4,2,10,2,3,2,
20,2,13,2,14,2,9,2,19,2,22,55,11,11,11,16,3,2,23,2,21,
2,24,16,3,11,11,11,16,3,2,23,2,21,2,24,42,42,40,12,11,11,
16,0,16,0,16,0,39,39,11,12,11,11,16,0,16,0,16,0,39,39,16,
24,20,15,16,2,248,22,180,8,71,115,111,45,115,117,102,102,105,120,80,144,
39,39,40,20,15,16,2,88,148,39,41,8,39,8,189,3,2,4,223,0,33,
50,80,144,39,40,40,20,15,16,2,32,0,88,148,8,36,44,55,11,2,9,
222,33,51,80,144,39,47,40,20,15,16,2,20,28,143,32,0,88,148,8,36,
40,45,11,2,10,222,192,32,0,88,148,8,36,40,45,11,2,10,222,192,80,
144,39,48,40,20,15,16,2,247,22,141,2,80,144,39,44,40,20,15,16,2,
8,128,8,80,144,39,49,40,20,15,16,2,249,22,185,8,8,128,8,11,80,
144,39,50,40,20,15,16,2,88,148,8,36,40,53,8,128,32,2,13,223,0,
33,52,80,144,39,51,40,20,15,16,2,88,148,8,36,41,57,8,128,32,2,
14,223,0,33,53,80,144,39,52,40,20,15,16,2,247,22,76,80,144,39,53,
40,20,15,16,2,248,22,16,76,109,111,100,117,108,101,45,108,111,97,100,105,
110,103,80,144,39,54,40,20,15,16,2,11,80,143,39,55,20,15,16,2,11,
80,143,39,56,20,15,16,2,32,0,88,148,39,41,60,11,2,19,222,33,72,
80,144,39,57,40,20,15,16,2,32,0,88,148,8,36,40,52,11,2,20,222,
33,73,80,144,39,58,40,20,15,16,2,11,80,143,39,59,20,15,16,2,88,
149,8,34,40,48,8,240,4,0,16,0,1,21,112,114,101,112,45,112,108,97,
110,101,116,45,114,101,115,111,108,118,101,114,33,40,224,1,0,33,74,80,144,
39,8,28,42,20,15,16,2,88,148,39,40,53,8,240,0,0,3,0,69,103,
101,116,45,100,105,114,223,0,33,75,80,144,39,8,29,42,20,15,16,2,88,
148,39,40,52,8,240,0,0,64,0,74,112,97,116,104,45,115,115,45,62,114,
107,116,223,0,33,76,80,144,39,8,30,42,20,15,16,2,88,148,8,36,40,
48,8,240,0,0,4,0,9,223,0,33,77,80,144,39,8,31,42,20,15,16,
2,88,148,39,40,48,8,240,0,128,0,0,9,223,0,33,78,80,144,39,8,
32,42,20,15,16,2,27,11,20,19,143,39,90,144,40,10,89,146,40,39,10,
20,26,96,2,22,88,148,8,36,41,57,8,32,9,224,2,1,33,79,88,148,
39,42,52,11,9,223,0,33,80,88,148,39,43,8,32,16,4,8,240,44,240,
0,0,8,240,220,241,0,0,40,39,9,224,2,1,33,96,207,80,144,39,60,
40,20,15,16,2,88,148,39,39,48,16,2,8,134,8,8,176,32,2,23,223,
0,33,97,80,144,39,8,25,40,20,15,16,2,20,28,143,88,148,8,36,39,
48,16,2,43,8,144,32,2,24,223,0,33,98,88,148,8,36,39,48,16,2,
43,8,144,32,2,24,223,0,33,99,80,144,39,8,26,40,96,29,94,2,5,
70,35,37,107,101,114,110,101,108,11,29,94,2,5,71,35,37,109,105,110,45,
115,116,120,11,2,7,2,6,9,9,9,39,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 9715);
}
{
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,10,54,46,50,46,57,48,48,46,49,51,84,0,0,0,0,0,0,0,
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,10,54,46,50,46,57,48,48,46,49,53,84,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,1,0,0,8,
0,18,0,24,0,38,0,52,0,64,0,84,0,98,0,113,0,126,0,131,0,
135,0,147,0,231,0,238,0,8,1,0,0,198,1,0,0,3,1,5,105,110,
135,0,147,0,231,0,238,0,8,1,0,0,199,1,0,0,3,1,5,105,110,
115,112,48,71,35,37,98,117,105,108,116,105,110,67,113,117,111,116,101,29,94,
2,3,70,35,37,107,101,114,110,101,108,11,29,94,2,3,70,35,37,101,120,
112,111,98,115,11,29,94,2,3,68,35,37,98,111,111,116,11,29,94,2,3,
@ -1559,15 +1560,15 @@
2,1,143,2,15,16,4,2,8,39,39,2,1,143,2,15,16,4,2,9,39,
39,2,1,143,2,15,16,4,2,10,39,39,2,1,16,0,38,15,143,2,14,
2,11,18,143,16,2,143,10,16,3,9,2,11,2,13,143,11,16,3,9,9,
2,13,16,3,9,9,9,144,39,20,121,145,2,1,39,16,1,11,16,0,20,
27,15,56,9,2,2,2,2,29,11,11,11,11,11,11,11,9,9,11,11,11,
33,16,39,80,143,39,39,20,121,145,2,1,39,16,0,16,0,40,42,39,16,
0,39,16,0,39,11,11,11,16,0,16,0,16,0,39,39,40,12,11,11,16,
0,16,0,16,0,39,39,11,12,11,11,16,0,16,0,16,0,39,39,16,0,
104,2,4,2,5,29,94,2,3,71,35,37,102,111,114,101,105,103,110,11,29,
94,2,3,70,35,37,117,110,115,97,102,101,11,29,94,2,3,71,35,37,102,
108,102,120,110,117,109,11,2,6,2,7,2,8,2,9,2,10,29,94,2,3,
69,35,37,112,108,97,99,101,11,29,94,2,3,71,35,37,102,117,116,117,114,
101,115,11,9,9,9,39,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 533);
2,13,16,3,9,9,9,145,39,9,20,121,145,2,1,39,16,1,11,16,0,
20,27,15,56,9,2,2,2,2,29,11,11,11,11,11,11,11,9,9,11,11,
11,33,16,39,80,143,39,39,20,121,145,2,1,39,16,0,16,0,40,42,39,
16,0,39,16,0,39,11,11,11,16,0,16,0,16,0,39,39,40,12,11,11,
16,0,16,0,16,0,39,39,11,12,11,11,16,0,16,0,16,0,39,39,16,
0,104,2,4,2,5,29,94,2,3,71,35,37,102,111,114,101,105,103,110,11,
29,94,2,3,70,35,37,117,110,115,97,102,101,11,29,94,2,3,71,35,37,
102,108,102,120,110,117,109,11,2,6,2,7,2,8,2,9,2,10,29,94,2,
3,69,35,37,112,108,97,99,101,11,29,94,2,3,71,35,37,102,117,116,117,
114,101,115,11,9,9,9,39,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 534);
}

View File

@ -1613,6 +1613,65 @@ void scheme_shadow(Scheme_Env *env, Scheme_Object *n, Scheme_Object *val, int as
scheme_add_binding_copy(id, scheme_rename_transformer_id(val), scheme_env_phase(env));
}
static void install_one_binding_name(Scheme_Hash_Table *bt, Scheme_Object *name, Scheme_Object *id, Scheme_Env *benv)
{
if (SCHEME_SYMBOLP(name) && SCHEME_STX_SYMBOLP(id)) {
if (benv->stx_context)
id = scheme_stx_push_introduce_module_context(id, benv->stx_context);
scheme_hash_set(bt, name, id);
}
}
void scheme_install_binding_names(Scheme_Object *binding_namess, Scheme_Env *env)
/* binding_namess has a per-phase mapping of symbosl to identifier, recorded
when `define` and `define-syntaxes` forms were compiled at the top level;
install the symbol-to-identifier mapping that was recorded during compilation
into the current namespace */
{
Scheme_Env *benv;
Scheme_Object *sym, *id, *table;
Scheme_Hash_Tree *ht;
Scheme_Hash_Table *bt;
intptr_t i, phase;
if (!binding_namess) return;
while (SCHEME_PAIRP(binding_namess)) {
table = SCHEME_CAR(binding_namess);
if (!SCHEME_PAIRP(table))
return;
phase = SCHEME_INT_VAL(SCHEME_CAR(table));
table = SCHEME_CDR(table);
if (phase < 0)
return;
benv = env;
while (phase > 0) {
scheme_prepare_exp_env(benv);
benv = benv->exp_env;
phase--;
}
bt = scheme_get_binding_names_table(benv);
if (SCHEME_HASHTRP(table)) {
ht = (Scheme_Hash_Tree *)table;
i = -1;
while ((i = scheme_hash_tree_next(ht, i)) != -1) {
scheme_hash_tree_index(ht, i, &sym, &id);
install_one_binding_name(bt, sym, id, benv);
}
} else if (SCHEME_VECTORP(table)) {
for (i = SCHEME_VEC_SIZE(table) >> 1; i--; ) {
install_one_binding_name(bt, SCHEME_VEC_ELS(table)[2*i], SCHEME_VEC_ELS(table)[2*i+1], benv);
}
}
binding_namess = SCHEME_CDR(binding_namess);
}
}
/********** Auxilliary tables **********/
Scheme_Object **scheme_make_builtin_references_table(int *_unsafe_start)
@ -1917,7 +1976,7 @@ namespace_set_variable_value(int argc, Scheme_Object *argv[])
id = scheme_datum_to_syntax(argv[0], scheme_false, scheme_false, 0, 0);
scheme_prepare_env_stx_context(env);
id = scheme_stx_add_module_context(id, env->stx_context);
(void)scheme_global_binding(id, env);
(void)scheme_global_binding(id, env, 0);
}
scheme_shadow(env, argv[0], argv[1], 1);
}

View File

@ -2093,11 +2093,16 @@ define_execute_with_dynamic_state(Scheme_Object *vec, int delta, int defmacro,
g = 1;
/* Special handling of 0 values for define-syntaxes:
do nothing. This makes (define-values (a b c) (values))
just create binding. This makes (define-values (a b c) (values))
a kind of declaration form, which is useful is
a, b, or c is introduced by a macro. */
if (dm_env && !g)
if (dm_env && !g) {
for (i = SCHEME_VEC_SIZE(vec) - delta; i--; ) {
b = scheme_global_keyword_bucket(SCHEME_VEC_ELS(vec)[i+delta], dm_env);
scheme_shadow(dm_env, (Scheme_Object *)b->key, scheme_false, 1);
}
return scheme_void;
}
i = SCHEME_VEC_SIZE(vec) - delta;
@ -4015,7 +4020,36 @@ static int get_comp_flags(Scheme_Config *config)
return comp_flags;
}
static Scheme_Object *optimize_resolve_expr(Scheme_Object* o, Comp_Prefix *cp, Scheme_Object *src_insp_desc)
static void create_binding_namess(Scheme_Comp_Env *cenv)
{
Scheme_Hash_Table *binding_namess;
binding_namess= scheme_make_hash_table(SCHEME_hash_ptr);
cenv->binding_namess = binding_namess;
}
static Scheme_Object *binding_namess_as_list(Scheme_Hash_Table *binding_namess)
{
int i;
Scheme_Object *l = scheme_null, **sorted_keys;
if (!binding_namess->count)
return scheme_null;
sorted_keys = scheme_extract_sorted_keys((Scheme_Object *)binding_namess);
for (i = binding_namess->count; i--; ) {
l = scheme_make_pair(scheme_make_pair(sorted_keys[i],
scheme_hash_get(binding_namess, sorted_keys[i])),
l);
}
return l;
}
static Scheme_Object *optimize_resolve_expr(Scheme_Object* o, Comp_Prefix *cp,
Scheme_Object *src_insp_desc,
Scheme_Object *binding_namess)
{
Optimize_Info *oi;
Resolve_Prefix *rp;
@ -4054,6 +4088,7 @@ static Scheme_Object *optimize_resolve_expr(Scheme_Object* o, Comp_Prefix *cp, S
top->max_let_depth = max_let_depth;
top->code = o;
top->prefix = rp;
top->binding_namess = binding_namess;
return (Scheme_Object *)top;
}
@ -4135,7 +4170,9 @@ static void *compile_k(void)
cenv = scheme_new_comp_env(genv, insp, frame_scopes,
SCHEME_TOPLEVEL_FRAME
| SCHEME_KEEP_SCOPES_FRAME);
| SCHEME_KEEP_SCOPES_FRAME
| SCHEME_TMP_TL_BIND_FRAME);
create_binding_namess(cenv);
if (rib) {
cenv->expand_result_adjust = scheme_stx_push_introduce_module_context;
@ -4192,7 +4229,7 @@ static void *compile_k(void)
} else {
/* We want to simply compile `form', but we have to loop in case
an expression is lifted in the process of compiling: */
Scheme_Object *l, *prev_o = NULL;
Scheme_Object *l, *prev_o = NULL, *binding_namess;
int max_let_depth;
while (1) {
@ -4253,11 +4290,14 @@ static void *compile_k(void)
rp = scheme_remap_prefix(rp, ri);
binding_namess = binding_namess_as_list(cenv->binding_namess);
top = MALLOC_ONE_TAGGED(Scheme_Compilation_Top);
top->iso.so.type = scheme_compilation_top_type;
top->max_let_depth = max_let_depth;
top->code = o;
top->prefix = rp;
top->binding_namess = binding_namess;
if (recompile_every_compile) {
int i;
@ -4418,6 +4458,8 @@ static void *eval_k(void)
v = scheme_eval_clone(v);
rp = scheme_prefix_eval_clone(top->prefix);
scheme_install_binding_names(top->binding_namess, env);
save_runstack = scheme_push_prefix(env, rp, NULL, NULL, 0, env->phase, NULL, scheme_false);
if (as_tail) {
@ -4913,7 +4955,8 @@ static Scheme_Object *recompile_top(Scheme_Object *top)
printf("%s\n\n", scheme_print_to_string(code, NULL));
#endif
top = optimize_resolve_expr(code, cp, ((Scheme_Compilation_Top*)top)->prefix->src_insp_desc);
top = optimize_resolve_expr(code, cp, ((Scheme_Compilation_Top*)top)->prefix->src_insp_desc,
((Scheme_Compilation_Top*)top)->binding_namess);
return top;
}
@ -5003,7 +5046,7 @@ scheme_make_lifted_defn(Scheme_Object *sys_wraps, Scheme_Object **_ids, Scheme_O
/* Registers scoped ids: */
for (ids = *_ids; !SCHEME_NULLP(ids); ids = SCHEME_CDR(ids)) {
id = SCHEME_CAR(ids);
(void)scheme_global_binding(id, env->genv);
(void)scheme_global_binding(id, env->genv, 0);
}
l = icons(scheme_datum_to_syntax(define_values_symbol, scheme_false, sys_wraps, 0, 0),

View File

@ -93,6 +93,8 @@ static Scheme_Object *read_module(Scheme_Object *obj);
static Scheme_Object *read_top_level_require(Scheme_Object *obj);
static Scheme_Object *write_top_level_require(Scheme_Object *obj);
static Scheme_Object *ht_to_vector(Scheme_Object *ht, int delay);
void scheme_init_marshal(Scheme_Env *env)
{
scheme_install_type_writer(scheme_application_type, write_application);
@ -296,6 +298,22 @@ static Scheme_Object *read_letrec(Scheme_Object *obj)
return (Scheme_Object *)lr;
}
static Scheme_Object *binding_namess_to_vectors(Scheme_Object *l)
{
Scheme_Object *r = scheme_null;
if (!l) return scheme_null;
while (!SCHEME_NULLP(l)) {
r = cons(cons(SCHEME_CAR(SCHEME_CAR(l)),
ht_to_vector(SCHEME_CDR(SCHEME_CAR(l)), 0)),
r);
l = SCHEME_CDR(l);
}
return r;
}
static Scheme_Object *write_top(Scheme_Object *obj)
{
Scheme_Compilation_Top *top = (Scheme_Compilation_Top *)obj;
@ -307,8 +325,9 @@ static Scheme_Object *write_top(Scheme_Object *obj)
NULL);
return cons(scheme_make_integer(top->max_let_depth),
cons(binding_namess_to_vectors(top->binding_namess),
cons((Scheme_Object *)top->prefix,
scheme_protect_quote(top->code)));
scheme_protect_quote(top->code))));
}
static Scheme_Object *read_top(Scheme_Object *obj)
@ -321,6 +340,9 @@ static Scheme_Object *read_top(Scheme_Object *obj)
top->max_let_depth = SCHEME_INT_VAL(SCHEME_CAR(obj));
obj = SCHEME_CDR(obj);
if (!SCHEME_PAIRP(obj)) return NULL;
top->binding_namess = SCHEME_CAR(obj); /* checking is in scheme_install_binding_names() */
obj = SCHEME_CDR(obj);
if (!SCHEME_PAIRP(obj)) return NULL;
top->prefix = (Resolve_Prefix *)SCHEME_CAR(obj);
top->code = SCHEME_CDR(obj);
if (!SAME_TYPE(SCHEME_TYPE(top->prefix), scheme_resolve_prefix_type))
@ -1253,7 +1275,7 @@ static Scheme_Object *read_resolve_prefix(Scheme_Object *obj)
return (Scheme_Object *)rp;
}
static Scheme_Object *ht_to_vector(Scheme_Object *ht)
static Scheme_Object *ht_to_vector(Scheme_Object *ht, int delay)
/* recurs for values in hash table; we assume that such nesting is shallow */
{
intptr_t i, j, c;
@ -1292,8 +1314,8 @@ static Scheme_Object *ht_to_vector(Scheme_Object *ht)
k = sorted_keys[i];
val = scheme_hash_tree_get(t, k);
if (SCHEME_HASHTRP(val) || SCHEME_HASHTP(val))
val = ht_to_vector(val);
else if (!SAME_OBJ(val, scheme_true))
val = ht_to_vector(val, delay);
else if (delay && !SAME_OBJ(val, scheme_true))
val = make_delayed_syntax(val);
SCHEME_VEC_ELS(vec)[j++] = k;
SCHEME_VEC_ELS(vec)[j++] = val;
@ -1304,8 +1326,8 @@ static Scheme_Object *ht_to_vector(Scheme_Object *ht)
k = sorted_keys[i];
val = scheme_hash_get(t, k);
if (SCHEME_HASHTRP(val) || SCHEME_HASHTP(val))
val = ht_to_vector(val);
else if (!SAME_OBJ(val, scheme_true))
val = ht_to_vector(val, delay);
else if (delay && !SAME_OBJ(val, scheme_true))
val = make_delayed_syntax(val);
SCHEME_VEC_ELS(vec)[j++] = k;
SCHEME_VEC_ELS(vec)[j++] = val;
@ -1501,9 +1523,9 @@ static Scheme_Object *write_module(Scheme_Object *obj)
l = cons((m->phaseless ? scheme_true : scheme_false), l);
l = cons(ht_to_vector(m->other_binding_names), l);
l = cons(ht_to_vector(m->et_binding_names), l);
l = cons(ht_to_vector(m->binding_names), l);
l = cons(ht_to_vector(m->other_binding_names, 1), l);
l = cons(ht_to_vector(m->et_binding_names, 1), l);
l = cons(ht_to_vector(m->binding_names, 1), l);
l = cons(m->me->src_modidx, l);
l = cons(scheme_resolved_module_path_value(m->modsrc), l);

View File

@ -7939,7 +7939,7 @@ static Scheme_Object *add_lifted_defn(Scheme_Object *data, Scheme_Object **_ids,
id = introduce_to_module_context(id, rn);
name = scheme_global_binding(id, env->genv);
name = scheme_global_binding(id, env->genv, 0);
/* Create the bucket, indicating that the name will be defined: */
scheme_add_global_symbol(name, scheme_undefined, env->genv);
@ -8979,7 +8979,7 @@ static Scheme_Object *do_module_begin_at_phase(Scheme_Object *form, Scheme_Comp_
}
/* Generate symbol for this binding: */
name = scheme_global_binding(name, env->genv);
name = scheme_global_binding(name, env->genv, 0);
/* Create the bucket, indicating that the name will be defined: */
scheme_add_global_symbol(name, scheme_undefined, env->genv);
@ -9086,7 +9086,7 @@ static Scheme_Object *do_module_begin_at_phase(Scheme_Object *form, Scheme_Comp_
}
/* Generate symbol for this binding: */
name = scheme_global_binding(name, env->genv);
name = scheme_global_binding(name, env->genv, 0);
if (!SAME_OBJ(SCHEME_STX_VAL(orig_name), name)
|| !scheme_stx_equal_module_context(orig_name, env->genv->module->rn_stx))
@ -11864,7 +11864,7 @@ void add_single_require(Scheme_Module_Exports *me, /* from module */
modname = scheme_module_resolve(modidx, 1);
menv = scheme_module_access(modname, orig_env, 0);
val = scheme_lookup_in_table(menv->toplevel, (char *)exsns[j]);
b = scheme_global_bucket(scheme_global_binding(iname, orig_env), orig_env);
b = scheme_global_bucket(scheme_global_binding(iname, orig_env, 0), orig_env);
scheme_set_global_bucket(((copy_vars == 2)
? "namespace-require/constant"
: "namespace-require/copy"),

View File

@ -24,6 +24,9 @@ static int mark_comp_env_MARK(void *p, struct NewGC *gc) {
gcMARK2(e->use, gc);
gcMARK2(e->lifts, gc);
gcMARK2(e->bindings, gc);
gcMARK2(e->binding_namess, gc);
gcMARK2(e->expand_result_adjust_arg, gc);
@ -50,6 +53,9 @@ static int mark_comp_env_FIXUP(void *p, struct NewGC *gc) {
gcFIXUP2(e->use, gc);
gcFIXUP2(e->lifts, gc);
gcFIXUP2(e->bindings, gc);
gcFIXUP2(e->binding_namess, gc);
gcFIXUP2(e->expand_result_adjust_arg, gc);

View File

@ -2311,6 +2311,7 @@ static int namespace_val_MARK(void *p, struct NewGC *gc) {
gcMARK2(e->access_insp, gc);
gcMARK2(e->stx_context, gc);
gcMARK2(e->tmp_bind_scope, gc);
gcMARK2(e->syntax, gc);
gcMARK2(e->exp_env, gc);
@ -2357,6 +2358,7 @@ static int namespace_val_FIXUP(void *p, struct NewGC *gc) {
gcFIXUP2(e->access_insp, gc);
gcFIXUP2(e->stx_context, gc);
gcFIXUP2(e->tmp_bind_scope, gc);
gcFIXUP2(e->syntax, gc);
gcFIXUP2(e->exp_env, gc);
@ -2450,6 +2452,7 @@ static int compilation_top_val_MARK(void *p, struct NewGC *gc) {
Scheme_Compilation_Top *t = (Scheme_Compilation_Top *)p;
gcMARK2(t->code, gc);
gcMARK2(t->prefix, gc);
gcMARK2(t->binding_namess, gc);
return
gcBYTES_TO_WORDS(sizeof(Scheme_Compilation_Top));
@ -2459,6 +2462,7 @@ static int compilation_top_val_FIXUP(void *p, struct NewGC *gc) {
Scheme_Compilation_Top *t = (Scheme_Compilation_Top *)p;
gcFIXUP2(t->code, gc);
gcFIXUP2(t->prefix, gc);
gcFIXUP2(t->binding_namess, gc);
return
gcBYTES_TO_WORDS(sizeof(Scheme_Compilation_Top));

View File

@ -932,6 +932,7 @@ namespace_val {
gcMARK2(e->access_insp, gc);
gcMARK2(e->stx_context, gc);
gcMARK2(e->tmp_bind_scope, gc);
gcMARK2(e->syntax, gc);
gcMARK2(e->exp_env, gc);
@ -988,6 +989,7 @@ compilation_top_val {
Scheme_Compilation_Top *t = (Scheme_Compilation_Top *)p;
gcMARK2(t->code, gc);
gcMARK2(t->prefix, gc);
gcMARK2(t->binding_namess, gc);
size:
gcBYTES_TO_WORDS(sizeof(Scheme_Compilation_Top));
@ -1279,6 +1281,9 @@ mark_comp_env {
gcMARK2(e->use, gc);
gcMARK2(e->lifts, gc);
gcMARK2(e->bindings, gc);
gcMARK2(e->binding_namess, gc);
gcMARK2(e->expand_result_adjust_arg, gc);

View File

@ -1413,6 +1413,8 @@ typedef struct {
mzshort max_let_depth;
Scheme_Object *code;
struct Resolve_Prefix *prefix; /* NULL => a wrapper for a JITted module in `code' */
Scheme_Object *binding_namess; /* list of <phase> to hash of <symbol> to <id>;
additions to the top-level bindings table */
} Scheme_Compilation_Top;
/* A `let', `let*', or `letrec' form is compiled to the intermediate
@ -2582,6 +2584,9 @@ typedef struct Scheme_Comp_Env
Scheme_Object *lifts;
Scheme_Hash_Table *binding_namess; /* <phase> -> (<symbol> -> <id>); additions to the environment's
bindings table made during a particular compilation */
mzshort rename_var_count; /* number of non-NULL `values' when `renames' was computed */
mzshort rename_rstart; /* leftover rstart from previous round; see env.c */
Scheme_Hash_Table *dup_check; /* table for finding colliding symbols in `values' */
@ -3168,6 +3173,7 @@ void scheme_mark_all_use(Scheme_Comp_Env *frame);
#define SCHEME_POST_BIND_FRAME (1 << 11)
#define SCHEME_NESTED_MODULE_FRAME (1 << 12)
#define SCHEME_KEEP_SCOPES_FRAME (1 << 13)
#define SCHEME_TMP_TL_BIND_FRAME (1 << 14)
#define SCHEME_REC_BINDING_FRAME (SCHEME_TOPLEVEL_FRAME | SCHEME_MODULE_BEGIN_FRAME \
| SCHEME_INTDEF_FRAME | SCHEME_FOR_INTDEF)
@ -3285,6 +3291,8 @@ void scheme_define_parse(Scheme_Object *form,
void scheme_shadow(Scheme_Env *env, Scheme_Object *n, Scheme_Object *val, int as_var);
void scheme_binding_names_from_module(Scheme_Env *menv);
void scheme_install_binding_names(Scheme_Object *binding_namess, Scheme_Env *env);
Scheme_Hash_Table *scheme_get_binding_names_table(Scheme_Env *env);
int scheme_prefix_depth(Resolve_Prefix *rp);
Scheme_Object **scheme_push_prefix(Scheme_Env *genv, Resolve_Prefix *rp,
@ -3421,6 +3429,7 @@ struct Scheme_Env {
Scheme_Object *access_insp; /* for gaining protected access */
Scheme_Object *stx_context; /* encapsulates scopes, shifts, etc. */
Scheme_Object *tmp_bind_scope; /* for compiling top-level definitions */
Scheme_Bucket_Table *syntax;
struct Scheme_Env *exp_env;
@ -3633,7 +3642,7 @@ void scheme_add_global_constant_symbol(Scheme_Object *name, Scheme_Object *v, Sc
} while(0)
Scheme_Object *scheme_global_binding(Scheme_Object *id, Scheme_Env *env);
Scheme_Object *scheme_global_binding(Scheme_Object *id, Scheme_Env *env, int for_top_level);
Scheme_Object *scheme_future_global_binding(Scheme_Object *id, Scheme_Env *env);
Scheme_Object *scheme_sys_wraps(Scheme_Comp_Env *env);

View File

@ -13,12 +13,12 @@
consistently.)
*/
#define MZSCHEME_VERSION "6.2.900.14"
#define MZSCHEME_VERSION "6.2.900.15"
#define MZSCHEME_VERSION_X 6
#define MZSCHEME_VERSION_Y 2
#define MZSCHEME_VERSION_Z 900
#define MZSCHEME_VERSION_W 14
#define MZSCHEME_VERSION_W 15
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)