Storing a floating point control word on the stack, then calling
out to C, is not guaranteed to behave when the called function
is likely to be messing around with the stack (purify() in
particular).
... reload the floating point control word before setting the
precision. This differs slightly in semantics from
before: changes caused by the C code will be propagated
to Lisp
(let ((delta (logandc2 (+ amount 3) 3)))
(inst add esp-tn delta)))
(when (policy node (= sb!c::float-accuracy 3))
+ (inst fnstcw (make-ea :word :base esp-tn))
+ (inst wait)
(inst and (make-ea :word :base esp-tn) #xfeff)
(inst fldcw (make-ea :word :base esp-tn))
(inst wait)
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.11.4"
+"0.8.11.5"