diff --git a/racket/src/ChezScheme/mats/cp0.ms b/racket/src/ChezScheme/mats/cp0.ms index 45bfa5e332..ca81492c9a 100644 --- a/racket/src/ChezScheme/mats/cp0.ms +++ b/racket/src/ChezScheme/mats/cp0.ms @@ -3141,10 +3141,12 @@ '(#t #f))) (or (not (enable-cp0)) + (eq? (current-eval) interpret) (procedure-known-single-valued? (lambda (f) (#3%$app/value f)))) (or (not (enable-cp0)) (not (procedure-known-single-valued? (lambda (f) (#2%$app/value f))))) (or (not (enable-cp0)) + (eq? (current-eval) interpret) (procedure-known-single-valued? (case-lambda [(f) (#3%$app/value f)] [(f g) (if (g) @@ -3152,12 +3154,15 @@ (#3%$app/value f))]))) (or (not (enable-cp0)) + (eq? (current-eval) interpret) (procedure-known-single-valued? (lambda () (abort 'x)))) (or (not (enable-cp0)) + (eq? (current-eval) interpret) (procedure-known-single-valued? (lambda (f) (#3%$app/no-return f)))) (or (not (enable-cp0)) (not (procedure-known-single-valued? (lambda (f) (#2%$app/no-return f))))) (or (not (enable-cp0)) + (eq? (current-eval) interpret) (procedure-known-single-valued? (case-lambda [(f) (#3%$app/no-return f)] [(f g) (if (g) diff --git a/racket/src/ChezScheme/s/cprep.ss b/racket/src/ChezScheme/s/cprep.ss index d699e7930b..5c7a6cbff2 100644 --- a/racket/src/ChezScheme/s/cprep.ss +++ b/racket/src/ChezScheme/s/cprep.ss @@ -168,17 +168,17 @@ ;; Note that we're losing explicit `#2%$app`s. (>= (optimize-level) 3) (enable-unsafe-application)) - (lambda (s) s) - (lambda (s) `($primitive 3 ,s)))]) + (lambda (s a) (if s (cons s a) a)) + (lambda (s arg) (cons `($primitive 3 ,(or s '$app)) a)))]) (cond [(preinfo-call-no-return? preinfo) - (cons (prim '$app/no-return) a)] + (prim '$app/no-return a)] [(preinfo-call-single-valued? preinfo) - (cons (prim '$app/value) a)] + (prim '$app/value a)] [(preinfo-call-can-inline? preinfo) - (prim a)] + (prim #f a)] [else - (cons (prim '$app/no-inline) a)])))])))] + (prim '$app/no-inline)])))])))] [,pr (let ([sym (primref-name pr)]) (if sexpr? ($sgetprop sym '*unprefixed* sym)