From: Chris Hanson Date: Tue, 9 Jul 2019 02:48:43 +0000 (-0400) Subject: Don't choose the flo:+inf.0/flo:-inf.0 implementations at cold load. X-Git-Tag: mit-scheme-pucked-10.1.12~7^2~14 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=9b94290f82a99dfdb63ae94defcc8a92f2c0514d;p=mit-scheme.git Don't choose the flo:+inf.0/flo:-inf.0 implementations at cold load. This is wrong because in our public distributions, the cold load is done on Ubuntu, but the code is supposed to run on any appropriate unix system. The fix is to make the selection when the band is restored, guaranteeing that it's running on the target system. --- diff --git a/src/runtime/floenv.scm b/src/runtime/floenv.scm index 3e8eface6..3fbb396b3 100644 --- a/src/runtime/floenv.scm +++ b/src/runtime/floenv.scm @@ -170,6 +170,7 @@ USA. (let ((fp-env* ((ucode-primitive float-environment 0)))) ((ucode-primitive set-float-environment 1) fp-env) fp-env*))))) + (initialize-flonum-infinities!) unspecific) (define (initialize-package!) @@ -370,24 +371,23 @@ USA. (define flo:+inf.0) (define flo:-inf.0) -;;; ZERO can be eliminated after 9.3 is released. It works around -;;; overly-aggressive constant folding in SF and LIAR. -(let ((zero (lambda () (identity-procedure 0.)))) - (if (flo:have-trap-enable/disable?) - (begin - (set! flo:+inf.0 - (named-lambda (flo:+inf.0) - (flo:with-exceptions-untrapped (flo:exception:divide-by-zero) - (lambda () - (flo:/ +1. (zero)))))) - (set! flo:-inf.0 - (named-lambda (flo:-inf.0) - (flo:with-exceptions-untrapped (flo:exception:divide-by-zero) - (lambda () - (flo:/ -1. (zero)))))) - unspecific) - ;; This works on macOS. YMMV. - (begin - (set! flo:+inf.0 (named-lambda (flo:+inf.0) (flo:/ +1. (zero)))) - (set! flo:-inf.0 (named-lambda (flo:-inf.0) (flo:/ -1. (zero)))) - unspecific))) \ No newline at end of file +(define (initialize-flonum-infinities!) + (let ((zero (lambda () (identity-procedure )))) + (if (flo:have-trap-enable/disable?) + (begin + (set! flo:+inf.0 + (named-lambda (flo:+inf.0) + (flo:with-exceptions-untrapped (flo:exception:divide-by-zero) + (lambda () + (flo:/ +1. 0.))))) + (set! flo:-inf.0 + (named-lambda (flo:-inf.0) + (flo:with-exceptions-untrapped (flo:exception:divide-by-zero) + (lambda () + (flo:/ -1. 0.))))) + unspecific) + ;; This works on macOS. YMMV. + (begin + (set! flo:+inf.0 (named-lambda (flo:+inf.0) (flo:/ +1. 0.))) + (set! flo:-inf.0 (named-lambda (flo:-inf.0) (flo:/ -1. 0.))) + unspecific)))) \ No newline at end of file