Merge branch 'master' of github.com:racket/racket
This commit is contained in:
commit
af651ca435
|
@ -1013,7 +1013,7 @@ macro expansion in the current definition context.
|
||||||
In a @tech{syntax transformer} that runs in a non-expression context
|
In a @tech{syntax transformer} that runs in a non-expression context
|
||||||
and forces the expansion of subforms with @racket[local-expand], use
|
and forces the expansion of subforms with @racket[local-expand], use
|
||||||
@racket[syntax-local-identifier-as-binding] on an identifier from the
|
@racket[syntax-local-identifier-as-binding] on an identifier from the
|
||||||
expansion before moving it into a binding position or comparing with
|
expansion before moving it into a binding position or comparing it
|
||||||
with @racket[bound-identifier=?]. Otherwise, the results can be
|
with @racket[bound-identifier=?]. Otherwise, the results can be
|
||||||
inconsistent with the way that @racket[define] works in the same
|
inconsistent with the way that @racket[define] works in the same
|
||||||
definition context.
|
definition context.
|
||||||
|
|
|
@ -6619,6 +6619,28 @@
|
||||||
n)])
|
n)])
|
||||||
(lambda (x) (h x)))))
|
(lambda (x) (h x)))))
|
||||||
|
|
||||||
|
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; Regression test related to single-use variables
|
||||||
|
;; and disabled inlining
|
||||||
|
|
||||||
|
(parameterize ([compile-context-preservation-enabled #t]
|
||||||
|
[current-namespace (make-base-namespace)])
|
||||||
|
(void
|
||||||
|
(compile
|
||||||
|
'(module m racket/base
|
||||||
|
(letrec ([f (lambda () 0)]
|
||||||
|
[g (let ([g2
|
||||||
|
(lambda ()
|
||||||
|
(let ([x (f)])
|
||||||
|
(list (lambda () x) h)))])
|
||||||
|
g2)]
|
||||||
|
[h (letrec ([loop
|
||||||
|
(lambda ()
|
||||||
|
(let ([y (g)])
|
||||||
|
(list y loop)))])
|
||||||
|
loop)])
|
||||||
|
h)))))
|
||||||
|
|
||||||
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(report-errs)
|
(report-errs)
|
||||||
|
|
|
@ -9622,7 +9622,7 @@ Scheme_Object *optimize_expr(Scheme_Object *expr, Optimize_Info *info, int conte
|
||||||
int save_fuel = info->inline_fuel, save_no_types = info->no_types;
|
int save_fuel = info->inline_fuel, save_no_types = info->no_types;
|
||||||
int save_vclock, save_aclock, save_kclock, save_sclock;
|
int save_vclock, save_aclock, save_kclock, save_sclock;
|
||||||
info->size -= 1;
|
info->size -= 1;
|
||||||
info->inline_fuel = 0; /* no more inlining; o->expr was already optimized */
|
info->inline_fuel = -1; /* no more inlining; o->expr was already optimized */
|
||||||
info->no_types = 1; /* cannot used inferred types, in case `val' inferred them */
|
info->no_types = 1; /* cannot used inferred types, in case `val' inferred them */
|
||||||
save_vclock = info->vclock; /* allowed to move => no change to clocks */
|
save_vclock = info->vclock; /* allowed to move => no change to clocks */
|
||||||
save_aclock = info->aclock;
|
save_aclock = info->aclock;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user