[Python-checkins] cpython: 1) Replace long-winded abort() construct by assert().

stefan.krah python-checkins at python.org
Mon Jun 11 08:58:56 CEST 2012


http://hg.python.org/cpython/rev/8a222aac951b
changeset:   77404:8a222aac951b
user:        Stefan Krah <skrah at bytereef.org>
date:        Mon Jun 11 08:57:17 2012 +0200
summary:
  1) Replace long-winded abort() construct by assert().

2) Remove micro optimization (inline checking for NaN before calling
   mpd_qcheck_nans()) that probably has no benefit in this case.

files:
  Modules/_decimal/libmpdec/mpdecimal.c |  63 +++++++-------
  1 files changed, 30 insertions(+), 33 deletions(-)


diff --git a/Modules/_decimal/libmpdec/mpdecimal.c b/Modules/_decimal/libmpdec/mpdecimal.c
--- a/Modules/_decimal/libmpdec/mpdecimal.c
+++ b/Modules/_decimal/libmpdec/mpdecimal.c
@@ -5713,30 +5713,28 @@
 mpd_qnext_minus(mpd_t *result, const mpd_t *a, const mpd_context_t *ctx,
                 uint32_t *status)
 {
-    mpd_context_t workctx; /* function context */
+    mpd_context_t workctx;
     MPD_NEW_CONST(tiny,MPD_POS,mpd_etiny(ctx)-1,1,1,1,1);
 
     if (mpd_isspecial(a)) {
         if (mpd_qcheck_nan(result, a, ctx, status)) {
             return;
         }
-        if (mpd_isinfinite(a)) {
-            if (mpd_isnegative(a)) {
-                mpd_qcopy(result, a, status);
+
+        assert(mpd_isinfinite(a));
+        if (mpd_isnegative(a)) {
+            mpd_qcopy(result, a, status);
+            return;
+        }
+        else {
+            mpd_clear_flags(result);
+            mpd_qmaxcoeff(result, ctx, status);
+            if (mpd_isnan(result)) {
                 return;
             }
-            else {
-                mpd_clear_flags(result);
-                mpd_qmaxcoeff(result, ctx, status);
-                if (mpd_isnan(result)) {
-                    return;
-                }
-                result->exp = ctx->emax - ctx->prec + 1;
-                return;
-            }
-        }
-        /* debug */
-        abort(); /* GCOV_NOT_REACHED */
+            result->exp = mpd_etop(ctx);
+            return;
+        }
     }
 
     mpd_workcontext(&workctx, ctx);
@@ -5769,21 +5767,21 @@
         if (mpd_qcheck_nan(result, a, ctx, status)) {
             return;
         }
-        if (mpd_isinfinite(a)) {
-            if (mpd_ispositive(a)) {
-                mpd_qcopy(result, a, status);
+
+        assert(mpd_isinfinite(a));
+        if (mpd_ispositive(a)) {
+            mpd_qcopy(result, a, status);
+        }
+        else {
+            mpd_clear_flags(result);
+            mpd_qmaxcoeff(result, ctx, status);
+            if (mpd_isnan(result)) {
+                return;
             }
-            else {
-                mpd_clear_flags(result);
-                mpd_qmaxcoeff(result, ctx, status);
-                if (mpd_isnan(result)) {
-                    return;
-                }
-                mpd_set_flags(result, MPD_NEG);
-                result->exp = mpd_etop(ctx);
-            }
-            return;
-        }
+            mpd_set_flags(result, MPD_NEG);
+            result->exp = mpd_etop(ctx);
+        }
+        return;
     }
 
     mpd_workcontext(&workctx, ctx);
@@ -5814,9 +5812,8 @@
 {
     int c;
 
-    if (mpd_isnan(a) || mpd_isnan(b)) {
-        if (mpd_qcheck_nans(result, a, b, ctx, status))
-            return;
+    if (mpd_qcheck_nans(result, a, b, ctx, status)) {
+        return;
     }
 
     c = _mpd_cmp(a, b);

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list