<html lang='en'>
<head>
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
<title>
GitLab
</title>
</meta>
</head>
<style>
  img {
    max-width: 100%;
    height: auto;
  }
  p.details {
    font-style:italic;
    color:#777
  }
  .footer p {
    font-size:small;
    color:#777
  }
  pre.commit-message {
    white-space: pre-wrap;
  }
  .file-stats a {
    text-decoration: none;
  }
  .file-stats .new-file {
    color: #090;
  }
  .file-stats .deleted-file {
    color: #B00;
  }
</style>
<body>
<div class='content'>
<h3>
Raymond Toy pushed to branch master
at <a href="https://gitlab.common-lisp.net/cmucl/cmucl">cmucl / cmucl</a>
</h3>
<h4>
Commits:
</h4>
<ul>
<li>
<strong><a href="https://gitlab.common-lisp.net/cmucl/cmucl/commit/edb5af9baaa3b4ba86e6eb859a12873e708216ec">edb5af9b</a></strong>
<div>
<span>by Raymond Toy</span>
<i>at 2015-12-29T18:24:24Z</i>
</div>
<pre class='commit-message'>WITH-FLOAT-TRAPS-ENABLED was incorrectly setting accrued exceptions.

Fix issue #14.

WITH-FLOAT-TRAPS-ENABLED was leaving the accrued (and current)
exceptions unchanged, but it should have cleared out any values there
that matched the exceptions to be enabled.  Without this, the next x87
operation would signal an exception if an accrued exception matched
an enabled exception.  This was the cause of issue #14.  (Note that
for x87, the accrued exception is the same as current exception.)</pre>
</li>
<li>
<strong><a href="https://gitlab.common-lisp.net/cmucl/cmucl/commit/a610d96c9f689547bea607b8372c0332f3da072c">a610d96c</a></strong>
<div>
<span>by Raymond Toy</span>
<i>at 2015-12-30T02:36:39Z</i>
</div>
<pre class='commit-message'>Merge branch 'rtoy-issue-14' into 'master'

WITH-FLOAT-TRAPS-ENABLED was incorrectly setting accrued exceptions.

Fix issue #14.

WITH-FLOAT-TRAPS-ENABLED was leaving the accrued (and current)
exceptions unchanged, but it should have cleared out any values there
that matched the exceptions to be enabled.  Without this, the next x87
operation would signal an exception if an accrued exception matched
an enabled exception.  This was the cause of issue #14.  (Note that
for x87, the accrued exception is the same as current exception.)

See merge request !5</pre>
</li>
</ul>
<h4>1 changed file:</h4>
<ul>
<li class='file-stats'>
<a href='#diff-0'>
src/code/float-trap.lisp
</a>
</li>
</ul>
<h4>Changes:</h4>
<li id='diff-0'>
<a href='https://gitlab.common-lisp.net/cmucl/cmucl/compare/a65cf4a4c020fa3272ae3507c678b8ab4c1e5a16...a610d96c9f689547bea607b8372c0332f3da072c#diff-0'>
<strong>
src/code/float-trap.lisp
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/src/code/float-trap.lisp
</span><span style="color: #000000;background-color: #ddffdd">+++ b/src/code/float-trap.lisp
</span><span style="color: #aaaaaa">@@ -417,11 +417,14 @@
</span>                   code)))))))
 
 (macrolet
<span style="color: #000000;background-color: #ffdddd">-    ((with-float-traps (name logical-op docstring)
</span><span style="color: #000000;background-color: #ddffdd">+    ((with-float-traps (name merge-traps docstring)
</span>        ;; Define macros to enable or disable floating-point
        ;; exceptions.  Masked exceptions and enabled exceptions only
        ;; differ whether we AND in the bits or OR them, respectively.
<span style="color: #000000;background-color: #ffdddd">-       ;; Logical-op is the operation to use.
</span><span style="color: #000000;background-color: #ddffdd">+       ;; MERGE-TRAPS is the logical operation to merge the traps with
+       ;; the current floating-point mode.  Thus, use  and MERGE-EXCEPTIONS is the
+       ;; logical operation to merge the exceptions (sticky bits) with
+       ;; the current mode.
</span>        (let ((macro-name (symbolicate "WITH-FLOAT-TRAPS-" name)))
         `(progn
            (defmacro ,macro-name (traps &body body)
<span style="color: #aaaaaa">@@ -450,7 +453,8 @@
</span>                   (progn
                          (setf (floating-point-modes)
                                (ldb (byte 32 0)
<span style="color: #000000;background-color: #ffdddd">-                                     (,',logical-op ,orig-modes ,(logand trap-mask exception-mask))))
</span><span style="color: #000000;background-color: #ddffdd">+                                (logand (,',merge-traps ,orig-modes ,trap-mask)
+                                            ,exception-mask)))
</span>                     ,@body)
                     ;; Restore the original traps and exceptions.
                     (setf (floating-point-modes)
</code></pre>

<br>
</li>

</div>
<div class='footer' style='margin-top: 10px;'>
<p>

<br>
<a href="https://gitlab.common-lisp.net/cmucl/cmucl/compare/a65cf4a4c020fa3272ae3507c678b8ab4c1e5a16...a610d96c9f689547bea607b8372c0332f3da072c">View it on GitLab</a>.
<br>
You're receiving this email because of your account on gitlab.common-lisp.net.
If you'd like to receive fewer emails, you can adjust your notification settings.

</p>
</div>
</body>
</html>