From d9763e9075310cfbbae3f43f0cc7d638a95872ae Mon Sep 17 00:00:00 2001 From: Raymond Toy <toy.raymond@gmail.com> Date: Sun, 10 Jan 2016 15:42:41 -0800 Subject: [PATCH] In WITH-FLOAT-TRAPS-*, remove the unused junk modifying the state. We just want to return the original modes, so remove all the old commented out stuff that was modifying the original modes to some strange state. This makes a lot more sense to me if WITH-FLOAT-TRAPS-* actually restored the modes exactly as they were before running the body. --- src/code/float-trap.lisp | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/code/float-trap.lisp b/src/code/float-trap.lisp index b163cf3ed..63c6e810c 100644 --- a/src/code/float-trap.lisp +++ b/src/code/float-trap.lisp @@ -451,6 +451,10 @@ ;; representing the invalid operation. Otherwise, if we ;; enable the invalid trap later, these sticky bits will cause ;; an exception. + ;; + ;; FIXME: Consider removing these for ppc. Since + ;; we now restore the original modes exactly, I + ;; don't think these are needed anymore. #+ppc (invalid-mask (if (member :invalid traps) (dpb 0 @@ -467,21 +471,8 @@ (logand (,',merge-traps ,orig-modes ,trap-mask) ,exception-mask))) ,@body) - ;; Restore the original traps and exceptions. - (format *debug-io* "Saved fpu mode: #x~4,'0x: ~S~%" - ,orig-modes (decode-floating-point-modes ,orig-modes)) - (format *debug-io* "Current fpu mode: #x~4,'0x: ~S~%" - (floating-point-modes) (get-floating-point-modes)) - #+nil - (setf (floating-point-modes) - (logior (logand ,orig-modes ,(logior traps exceptions)) - (logand ,orig-modes - ,(logand trap-mask exception-mask) - #+ppc - ,invalid-mask - #+mips ,(dpb 0 float-exceptions-byte #xffffffff)))) - (setf (floating-point-modes) ,orig-modes) - )))))))) + ;; Restore the modes exactly as they were. + (setf (floating-point-modes) ,orig-modes))))))))) ;; WITH-FLOAT-TRAPS-MASKED -- Public (with-float-traps masked logand -- GitLab