]> git.eshelyaron.com Git - emacs.git/commit
Tune base64 decoding
authorPaul Eggert <eggert@Penguin.CS.UCLA.EDU>
Sun, 9 Jun 2019 06:31:28 +0000 (23:31 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 9 Jun 2019 06:32:23 +0000 (23:32 -0700)
commit5abaea334cf4c0e004fca2b8b272e091eb5b5444
tree315f3f1773ffaa11658115c5d9b920713079fd2a
parent1043cd30acffcc0b61da4a80dcf3f8a5ac459267
Tune base64 decoding

This improves performance of base64-decode-region by about 7.5% on
my platform, and gets rid of some macros.
* src/fns.c (IS_ASCII, IS_BASE64, IS_BASE64_IGNORABLE)
(READ_QUADRUPLET_BYTE): Remove.
(base64_value_to_char, base64_char_to_value):
Now an array of two arrays.  All uses changed.
(base64url_value_to_char, base64url_char_to_value):
Remove.  All uses changed to the other array.
(base64_char_to_value): Entries are now of type signed char, not
short, since we can assume C99.  Use C99 initializers; this is
clearer and caters to the (theoretical) possibility of systems
that do not use ASCII or do not have 8-bit bytes.  Allow any index
in the range 0..UCHAR_MAX instead of limiting it to 0..127, so
that uses need not check for in-range indexes.  Also record
padding chars.  All uses changed.
(base64_decode_1): Always store number of chars in *NCHARS_RETURN,
for simplicity.  All callers changed.  Speed up the byte-fetching.
src/fns.c