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:
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