From 9b94290f82a99dfdb63ae94defcc8a92f2c0514d Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Mon, 8 Jul 2019 22:48:43 -0400 Subject: [PATCH] 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. --- src/runtime/floenv.scm | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) 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 -- 2.25.1