From 3d390e301e27f229ad506beee4596c3251a7e817 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 5 Aug 2006 18:20:20 +0000 Subject: [PATCH] pre-resolve is-mutated flag was mixed up with post-resolve is-initialized flag svn: r3974 --- collects/tests/mzscheme/optimize.ss | 17 +++++++++++++++++ src/mzscheme/src/env.c | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) 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)