diff options
| author | Paul Eggert | 2013-11-13 18:39:28 -0800 |
|---|---|---|
| committer | Paul Eggert | 2013-11-13 18:39:28 -0800 |
| commit | 2cf00efc1b0db0ddc26fa14239026dd2d12c7d59 (patch) | |
| tree | 1bd3fcc233230eb7e2ffdee78da9433b3915623e /src/ChangeLog | |
| parent | d672ac3c611453c624948ed8cc2ced65cadc3400 (diff) | |
| download | emacs-2cf00efc1b0db0ddc26fa14239026dd2d12c7d59.tar.gz emacs-2cf00efc1b0db0ddc26fa14239026dd2d12c7d59.zip | |
Simplify, port and tune bool vector implementation.
* configure.ac (BITSIZEOF_SIZE_T, SIZEOF_SIZE_T): Remove.
* src/alloc.c (bool_vector_exact_payload_bytes)
(bool_vector_payload_bytes): Remove.
(bool_vector_fill): Return its argument.
* src/alloc.c (bool_vector_fill):
* src/lread.c (read1):
* src/print.c (print_object):
Simplify by using bool_vector_bytes.
* src/alloc.c (make_uninit_bool_vector):
New function, broken out from Fmake_bool_vector.
(Fmake_bool_vector): Use it. Use tail call.
(make_uninit_bool_vector, vector_nbytes): Simplify size calculations.
* src/data.c (BITS_PER_ULL): New constant.
(ULLONG_MAX, count_one_bits_ll): Fall back on long counterparts
if long long versions don't exist.
(shift_right_ull): New function.
(count_one_bits_word): New function, replacing popcount_bits_word
macro. Don't assume that bits_word is no wider than long long.
(count_one_bits_word, count_trailing_zero_bits):
Don't assume that bits_word is no wider than long long.
* src/data.c (bool_vector_binop_driver, bool_vector_not):
* src/fns.c (Fcopy_sequence):
* src/lread.c (read1):
Create an uninitialized destination, to avoid needless work.
(internal_equal): Simplify.
(Ffillarray): Prefer tail call.
* src/data.c (bool_vector_binop_driver): Don't assume bit vectors always
contain at least one word.
(bits_word_to_host_endian): Prefer if to #if. Don't assume
chars are narrower than ints.
* src/data.c (Fbool_vector_count_matches, Fbool_vector_count_matches_at):
* src/fns.c (Fcopy_sequence):
Simplify and tune.
* src/lisp.h (bits_word, BITS_WORD_MAX, BITS_PER_BITS_WORD):
Don't try to port to hosts where bits_word values have holes; the
code wouldn't work there anyway. Verify this assumption, though.
(bool_vector_bytes): New function.
(make_uninit_bool_vector): New decl.
(bool_vector_fill): Now returns Lisp_Object.
Diffstat (limited to 'src/ChangeLog')
| -rw-r--r-- | src/ChangeLog | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 3861449cf5a..290b83a7ecf 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,45 @@ | |||
| 1 | 2013-11-14 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2013-11-14 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 2 | ||
| 3 | Simplify, port and tune bool vector implementation. | ||
| 4 | * alloc.c (bool_vector_exact_payload_bytes) | ||
| 5 | (bool_vector_payload_bytes): Remove. | ||
| 6 | (bool_vector_fill): Return its argument. | ||
| 7 | * alloc.c (bool_vector_fill): | ||
| 8 | * lread.c (read1): | ||
| 9 | * print.c (print_object): | ||
| 10 | Simplify by using bool_vector_bytes. | ||
| 11 | * alloc.c (make_uninit_bool_vector): | ||
| 12 | New function, broken out from Fmake_bool_vector. | ||
| 13 | (Fmake_bool_vector): Use it. Use tail call. | ||
| 14 | (make_uninit_bool_vector, vector_nbytes): Simplify size calculations. | ||
| 15 | * data.c (BITS_PER_ULL): New constant. | ||
| 16 | (ULLONG_MAX, count_one_bits_ll): Fall back on long counterparts | ||
| 17 | if long long versions don't exist. | ||
| 18 | (shift_right_ull): New function. | ||
| 19 | (count_one_bits_word): New function, replacing popcount_bits_word | ||
| 20 | macro. Don't assume that bits_word is no wider than long long. | ||
| 21 | (count_one_bits_word, count_trailing_zero_bits): | ||
| 22 | Don't assume that bits_word is no wider than long long. | ||
| 23 | * data.c (bool_vector_binop_driver, bool_vector_not): | ||
| 24 | * fns.c (Fcopy_sequence): | ||
| 25 | * lread.c (read1): | ||
| 26 | Create an uninitialized destination, to avoid needless work. | ||
| 27 | (internal_equal): Simplify. | ||
| 28 | (Ffillarray): Prefer tail call. | ||
| 29 | * data.c (bool_vector_binop_driver): Don't assume bit vectors always | ||
| 30 | contain at least one word. | ||
| 31 | (bits_word_to_host_endian): Prefer if to #if. Don't assume | ||
| 32 | chars are narrower than ints. | ||
| 33 | * data.c (Fbool_vector_count_matches, Fbool_vector_count_matches_at): | ||
| 34 | * fns.c (Fcopy_sequence): | ||
| 35 | Simplify and tune. | ||
| 36 | * lisp.h (bits_word, BITS_WORD_MAX, BITS_PER_BITS_WORD): | ||
| 37 | Don't try to port to hosts where bits_word values have holes; the | ||
| 38 | code wouldn't work there anyway. Verify this assumption, though. | ||
| 39 | (bool_vector_bytes): New function. | ||
| 40 | (make_uninit_bool_vector): New decl. | ||
| 41 | (bool_vector_fill): Now returns Lisp_Object. | ||
| 42 | |||
| 3 | * xfns.c (xic_create_fontsetname): | 43 | * xfns.c (xic_create_fontsetname): |
| 4 | * xrdb.c (gethomedir): Prefer tail calls. | 44 | * xrdb.c (gethomedir): Prefer tail calls. |
| 5 | 45 | ||