emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r114656: * lisp.h (bool_vector_size): New function.


From: Paul Eggert
Subject: [Emacs-diffs] trunk r114656: * lisp.h (bool_vector_size): New function.
Date: Mon, 14 Oct 2013 07:13:02 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 114656
revision-id: address@hidden
parent: address@hidden
committer: Paul Eggert <address@hidden>
branch nick: trunk
timestamp: Mon 2013-10-14 00:12:49 -0700
message:
  * lisp.h (bool_vector_size): New function.
  
  All uses of XBOOL_VECTOR (x)->size changed to bool_vector_size (x).
  * data.c (bool_vector_spare_mask, bool_vector_binop_driver)
  (Fbool_vector_not, Fbool_vector_count_matches_at):
  Remove uses of 'eassume' that should no longer be needed,
  because they are subsumed by the 'eassume' in bool_vector_size.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/category.h                 category.h-20091113204419-o5vbwnq5f7feedwu-1072
  src/data.c                     data.c-20091113204419-o5vbwnq5f7feedwu-251
  src/fns.c                      fns.c-20091113204419-o5vbwnq5f7feedwu-203
  src/image.c                    image.c-20091113204419-o5vbwnq5f7feedwu-2969
  src/lisp.h                     lisp.h-20091113204419-o5vbwnq5f7feedwu-253
  src/print.c                    print.c-20091113204419-o5vbwnq5f7feedwu-262
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2013-10-13 00:28:30 +0000
+++ b/src/ChangeLog     2013-10-14 07:12:49 +0000
@@ -1,3 +1,12 @@
+2013-10-14  Paul Eggert  <address@hidden>
+
+       * lisp.h (bool_vector_size): New function.
+       All uses of XBOOL_VECTOR (x)->size changed to bool_vector_size (x).
+       * data.c (bool_vector_spare_mask, bool_vector_binop_driver)
+       (Fbool_vector_not, Fbool_vector_count_matches_at):
+       Remove uses of 'eassume' that should no longer be needed,
+       because they are subsumed by the 'eassume' in bool_vector_size.
+
 2013-10-12  Eli Zaretskii  <address@hidden>
 
        * image.c (GIFLIB_MAJOR, GIFLIB_MINOR, GIFLIB_RELEASE): Move back

=== modified file 'src/category.h'
--- a/src/category.h    2013-09-20 15:34:36 +0000
+++ b/src/category.h    2013-10-14 07:12:49 +0000
@@ -63,7 +63,7 @@
 #define XCATEGORY_SET XBOOL_VECTOR
 
 #define CATEGORY_SET_P(x) \
-  (BOOL_VECTOR_P (x) && XBOOL_VECTOR (x)->size == 128)
+  (BOOL_VECTOR_P (x) && bool_vector_size (x) == 128)
 
 /* Return a new empty category set.  */
 #define MAKE_CATEGORY_SET (Fmake_bool_vector (make_number (128), Qnil))

=== modified file 'src/data.c'
--- a/src/data.c        2013-10-11 06:32:29 +0000
+++ b/src/data.c        2013-10-14 07:12:49 +0000
@@ -2130,7 +2130,7 @@
     {
       int val;
 
-      if (idxval < 0 || idxval >= XBOOL_VECTOR (array)->size)
+      if (idxval < 0 || idxval >= bool_vector_size (array))
        args_out_of_range (array, idx);
 
       val = (unsigned char) XBOOL_VECTOR (array)->data[idxval / 
BOOL_VECTOR_BITS_PER_CHAR];
@@ -2180,7 +2180,7 @@
     {
       int val;
 
-      if (idxval < 0 || idxval >= XBOOL_VECTOR (array)->size)
+      if (idxval < 0 || idxval >= bool_vector_size (array))
        args_out_of_range (array, idx);
 
       val = (unsigned char) XBOOL_VECTOR (array)->data[idxval / 
BOOL_VECTOR_BITS_PER_CHAR];
@@ -2969,7 +2969,6 @@
 static bits_word
 bool_vector_spare_mask (ptrdiff_t nr_bits)
 {
-  eassume (nr_bits > 0);
   return (((bits_word) 1) << (nr_bits % BITS_PER_BITS_WORD)) - 1;
 }
 
@@ -3005,8 +3004,7 @@
   CHECK_BOOL_VECTOR (op1);
   CHECK_BOOL_VECTOR (op2);
 
-  nr_bits = min (XBOOL_VECTOR (op1)->size,
-                 XBOOL_VECTOR (op2)->size);
+  nr_bits = min (bool_vector_size (op1), bool_vector_size (op2));
 
   if (NILP (dest))
     {
@@ -3016,10 +3014,9 @@
   else
     {
       CHECK_BOOL_VECTOR (dest);
-      nr_bits = min (nr_bits, XBOOL_VECTOR (dest)->size);
+      nr_bits = min (nr_bits, bool_vector_size (dest));
     }
 
-  eassume (nr_bits >= 0);
   nr_words = ROUNDUP (nr_bits, BITS_PER_BITS_WORD) / BITS_PER_BITS_WORD;
 
   adata = (bits_word *) XBOOL_VECTOR (dest)->data;
@@ -3172,21 +3169,19 @@
   bits_word mword;
 
   CHECK_BOOL_VECTOR (a);
-  nr_bits = XBOOL_VECTOR (a)->size;
+  nr_bits = bool_vector_size (a);
 
   if (NILP (b))
     b = Fmake_bool_vector (make_number (nr_bits), Qnil);
   else
     {
       CHECK_BOOL_VECTOR (b);
-      nr_bits = min (nr_bits, XBOOL_VECTOR (b)->size);
+      nr_bits = min (nr_bits, bool_vector_size (b));
     }
 
   bdata = (bits_word *) XBOOL_VECTOR (b)->data;
   adata = (bits_word *) XBOOL_VECTOR (a)->data;
 
-  eassume (nr_bits >= 0);
-
   for (i = 0; i < nr_bits / BITS_PER_BITS_WORD; i++)
     bdata[i] = ~adata[i];
 
@@ -3215,13 +3210,11 @@
 
   CHECK_BOOL_VECTOR (a);
 
-  nr_bits = XBOOL_VECTOR (a)->size;
+  nr_bits = bool_vector_size (a);
   count = 0;
   match = NILP (b) ? -1 : 0;
   adata = (bits_word *) XBOOL_VECTOR (a)->data;
 
-  eassume (nr_bits >= 0);
-
   for (i = 0; i < nr_bits / BITS_PER_BITS_WORD; ++i)
     count += popcount_bits_word (adata[i] ^ match);
 
@@ -3256,13 +3249,12 @@
   CHECK_BOOL_VECTOR (a);
   CHECK_NATNUM (i);
 
-  nr_bits = XBOOL_VECTOR (a)->size;
+  nr_bits = bool_vector_size (a);
   if (XFASTINT (i) > nr_bits) /* Allow one past the end for convenience */
     args_out_of_range (a, i);
 
   adata = (bits_word *) XBOOL_VECTOR (a)->data;
 
-  eassume (nr_bits >= 0);
   nr_words = ROUNDUP (nr_bits, BITS_PER_BITS_WORD) / BITS_PER_BITS_WORD;
 
   pos = XFASTINT (i) / BITS_PER_BITS_WORD;

=== modified file 'src/fns.c'
--- a/src/fns.c 2013-10-09 22:39:57 +0000
+++ b/src/fns.c 2013-10-14 07:12:49 +0000
@@ -114,7 +114,7 @@
   else if (CHAR_TABLE_P (sequence))
     XSETFASTINT (val, MAX_CHAR);
   else if (BOOL_VECTOR_P (sequence))
-    XSETFASTINT (val, XBOOL_VECTOR (sequence)->size);
+    XSETFASTINT (val, bool_vector_size (sequence));
   else if (COMPILEDP (sequence))
     XSETFASTINT (val, ASIZE (sequence) & PSEUDOVECTOR_SIZE_MASK);
   else if (CONSP (sequence))
@@ -437,7 +437,7 @@
     {
       Lisp_Object val;
       ptrdiff_t size_in_chars
-       = ((XBOOL_VECTOR (arg)->size + BOOL_VECTOR_BITS_PER_CHAR - 1)
+       = ((bool_vector_size (arg) + BOOL_VECTOR_BITS_PER_CHAR - 1)
           / BOOL_VECTOR_BITS_PER_CHAR);
 
       val = Fmake_bool_vector (Flength (arg), Qnil);
@@ -540,7 +540,7 @@
                if (! ASCII_CHAR_P (c) && ! CHAR_BYTE8_P (c))
                  some_multibyte = 1;
              }
-         else if (BOOL_VECTOR_P (this) && XBOOL_VECTOR (this)->size > 0)
+         else if (BOOL_VECTOR_P (this) && bool_vector_size (this) > 0)
            wrong_type_argument (Qintegerp, Faref (this, make_number (0)));
          else if (CONSP (this))
            for (; CONSP (this); this = XCDR (this))
@@ -2070,11 +2070,11 @@
        /* Boolvectors are compared much like strings.  */
        if (BOOL_VECTOR_P (o1))
          {
-           if (XBOOL_VECTOR (o1)->size != XBOOL_VECTOR (o2)->size)
+           EMACS_INT size = bool_vector_size (o1);
+           if (size != bool_vector_size (o2))
              return 0;
            if (memcmp (XBOOL_VECTOR (o1)->data, XBOOL_VECTOR (o2)->data,
-                       ((XBOOL_VECTOR (o1)->size
-                         + BOOL_VECTOR_BITS_PER_CHAR - 1)
+                       ((size + BOOL_VECTOR_BITS_PER_CHAR - 1)
                         / BOOL_VECTOR_BITS_PER_CHAR)))
              return 0;
            return 1;
@@ -2166,10 +2166,9 @@
     }
   else if (BOOL_VECTOR_P (array))
     {
-      register unsigned char *p = XBOOL_VECTOR (array)->data;
-      size =
-       ((XBOOL_VECTOR (array)->size + BOOL_VECTOR_BITS_PER_CHAR - 1)
-        / BOOL_VECTOR_BITS_PER_CHAR);
+      unsigned char *p = XBOOL_VECTOR (array)->data;
+      size = ((bool_vector_size (array) + BOOL_VECTOR_BITS_PER_CHAR - 1)
+             / BOOL_VECTOR_BITS_PER_CHAR);
 
       if (size)
        {
@@ -4188,11 +4187,12 @@
 static EMACS_UINT
 sxhash_bool_vector (Lisp_Object vec)
 {
-  EMACS_UINT hash = XBOOL_VECTOR (vec)->size;
+  EMACS_INT size = bool_vector_size (vec);
+  EMACS_UINT hash = size;
   int i, n;
 
   n = min (SXHASH_MAX_LEN,
-          ((XBOOL_VECTOR (vec)->size + BOOL_VECTOR_BITS_PER_CHAR - 1)
+          ((size + BOOL_VECTOR_BITS_PER_CHAR - 1)
            / BOOL_VECTOR_BITS_PER_CHAR));
   for (i = 0; i < n; ++i)
     hash = sxhash_combine (hash, XBOOL_VECTOR (vec)->data[i]);

=== modified file 'src/image.c'
--- a/src/image.c       2013-10-12 08:48:31 +0000
+++ b/src/image.c       2013-10-14 07:12:49 +0000
@@ -2456,7 +2456,7 @@
                }
              else if (BOOL_VECTOR_P (elt))
                {
-                 if (XBOOL_VECTOR (elt)->size < width)
+                 if (bool_vector_size (elt) < width)
                    return 0;
                }
              else
@@ -2471,7 +2471,7 @@
        }
       else if (BOOL_VECTOR_P (data))
        {
-         if (XBOOL_VECTOR (data)->size / height < width)
+         if (bool_vector_size (data) / height < width)
            return 0;
        }
       else

=== modified file 'src/lisp.h'
--- a/src/lisp.h        2013-10-11 06:32:29 +0000
+++ b/src/lisp.h        2013-10-14 07:12:49 +0000
@@ -1184,6 +1184,14 @@
     unsigned char data[FLEXIBLE_ARRAY_MEMBER];
   };
 
+INLINE EMACS_INT
+bool_vector_size (Lisp_Object a)
+{
+  EMACS_INT size = XBOOL_VECTOR (a)->size;
+  eassume (0 <= size);
+  return size;
+}
+
 /* Some handy constants for calculating sizes
    and offsets, mostly of vectorlike objects.   */
 

=== modified file 'src/print.c'
--- a/src/print.c       2013-09-03 13:29:38 +0000
+++ b/src/print.c       2013-10-14 07:12:49 +0000
@@ -1704,15 +1704,14 @@
          int len;
          unsigned char c;
          struct gcpro gcpro1;
-         ptrdiff_t size_in_chars
-           = ((XBOOL_VECTOR (obj)->size + BOOL_VECTOR_BITS_PER_CHAR - 1)
-              / BOOL_VECTOR_BITS_PER_CHAR);
-
+         EMACS_INT size = bool_vector_size (obj);
+         ptrdiff_t size_in_chars = ((size + BOOL_VECTOR_BITS_PER_CHAR - 1)
+                                    / BOOL_VECTOR_BITS_PER_CHAR);
          GCPRO1 (obj);
 
          PRINTCHAR ('#');
          PRINTCHAR ('&');
-         len = sprintf (buf, "%"pI"d", XBOOL_VECTOR (obj)->size);
+         len = sprintf (buf, "%"pI"d", size);
          strout (buf, len, len, printcharfun);
          PRINTCHAR ('\"');
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]