diff --git a/pkgs/base/info.rkt b/pkgs/base/info.rkt index 399bf9febb..72b6bdc542 100644 --- a/pkgs/base/info.rkt +++ b/pkgs/base/info.rkt @@ -12,7 +12,7 @@ (define collection 'multi) -(define version "6.1.0.4") +(define version "6.1.0.6") (define deps `("racket-lib" ["racket" #:version ,version])) diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/optimize.rktl b/pkgs/racket-pkgs/racket-test/tests/racket/optimize.rktl index 04c0e63bea..309edab44f 100644 --- a/pkgs/racket-pkgs/racket-test/tests/racket/optimize.rktl +++ b/pkgs/racket-pkgs/racket-test/tests/racket/optimize.rktl @@ -4158,6 +4158,33 @@ (lambda (tasks) (report-answer-all 8))))))) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Check that cross-module inlining decmopiles a function +;; with correct use counts on arguments (specifically: B is used +;; twice, so the argument expression can't be inlined for two uses) + +(module module-with-cross-module-inlining racket/base + (require racket/function) + + (module bad racket + (provide evil-func) + (define (evil-func A B) + (A B) + B)) + + (require (submod "." bad)) + + (define n 0) + + (define (bar) (set! n (add1 n)) (void)) + + (evil-func (curry void) (bar)) + + (provide n)) + +(test 1 dynamic-require ''module-with-cross-module-inlining 'n) + + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/racket/src/racket/src/resolve.c b/racket/src/racket/src/resolve.c index 844a2f3296..6a44c1e000 100644 --- a/racket/src/racket/src/resolve.c +++ b/racket/src/racket/src/resolve.c @@ -3172,13 +3172,15 @@ static int unresolve_stack_push(Unresolve_Info *ui, int n, int r_only) static int *unresolve_stack_pop(Unresolve_Info *ui, int pos, int n) { - int *f; + int *f, i; ui->stack_pos = pos; if (n) { f = (int *)scheme_malloc_atomic(sizeof(int) * n); - memcpy(f, ui->flags + pos, n * sizeof(int)); + for (i = 0; i < n; i++) { + f[i] = ui->flags[pos + (n - i -i)]; + } ui->depth -= n; } else f = NULL; diff --git a/racket/src/racket/src/schvers.h b/racket/src/racket/src/schvers.h index 988a4c9976..32c11b91e1 100644 --- a/racket/src/racket/src/schvers.h +++ b/racket/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "6.1.0.5" +#define MZSCHEME_VERSION "6.1.0.6" #define MZSCHEME_VERSION_X 6 #define MZSCHEME_VERSION_Y 1 #define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 5 +#define MZSCHEME_VERSION_W 6 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)