diff --git a/collects/tests/mzscheme/optimize.ss b/collects/tests/mzscheme/optimize.ss index 97021bb871..cd7c4bf94d 100644 --- a/collects/tests/mzscheme/optimize.ss +++ b/collects/tests/mzscheme/optimize.ss @@ -402,6 +402,13 @@ (f y)) '11) +(test-comp '(module m mzscheme + (define (f x) (+ x 1)) + (f 8)) + '(module m mzscheme + (define (f x) (+ x 1)) + 9)) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Check bytecode verification of lifted functions @@ -429,4 +436,14 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Make sure "mutated?" flag isn't confused with "ready" flag: +(module bad-order mzscheme + (define (f) (printf "~a\n" i)) + (f) + (define i 9) + (set! i 10)) +(err/rt-test (dynamic-require 'bad-order #f)) + +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + (report-errs) diff --git a/src/mzscheme/src/env.c b/src/mzscheme/src/env.c index 2751837087..148b8317b6 100644 --- a/src/mzscheme/src/env.c +++ b/src/mzscheme/src/env.c @@ -3220,7 +3220,7 @@ Scheme_Object *scheme_resolve_toplevel(Resolve_Info *info, Scheme_Object *expr) return make_toplevel(skip + SCHEME_TOPLEVEL_DEPTH(expr), /* depth is 0 (normal) or 1 (exp-time) */ SCHEME_TOPLEVEL_POS(expr), 1, - SCHEME_TOPLEVEL_FLAGS(expr) & SCHEME_TOPLEVEL_FLAGS_MASK); + SCHEME_TOPLEVEL_FLAGS(expr) & SCHEME_TOPLEVEL_CONST); } Scheme_Object *scheme_shift_toplevel(Scheme_Object *expr, int delta)