Raymond Toy pushed to branch rtoy-15-handle-fpu-exceptions at cmucl / cmucl
Commits: d9763e90 by Raymond Toy at 2016-01-10T15:42:41Z 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.
- - - - -
1 changed file:
- src/code/float-trap.lisp
Changes:
===================================== src/code/float-trap.lisp ===================================== --- 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
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/d9763e9075310cfbbae3f43f0c...