]> git.eshelyaron.com Git - emacs.git/commit
Restore traditional lsh behavior on fixnums
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 18 Aug 2018 22:20:46 +0000 (15:20 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 18 Aug 2018 22:22:35 +0000 (15:22 -0700)
commit673b1785db4604efe81b8045a9d8ab68936af719
tree0f78d72a7d4eef42b62bcfbaec2627aa04986c80
parent877cd22f553624b6d7f24141acd134f9cf839259
Restore traditional lsh behavior on fixnums

* doc/lispref/numbers.texi (Bitwise Operations): Document that
the traditional (lsh A B) behavior is for fixnums, and that it
is an error if A and B are both negative and A is a bignum.
See Bug#32463.
* lisp/subr.el (lsh): New function, moved here from src/data.c.
* src/data.c (ash_lsh_impl): Remove, moving body into Fash
since it’s the only caller now.
(Fash): Check for out-of-range counts.  If COUNT is zero,
return first argument instead of going through libgmp.  Omit
lsh code since lsh is now done in Lisp.  Add code for shifting
fixnums right, to avoid a round trip through libgmp.
(Flsh): Remove; moved to lisp/subr.el.
* test/lisp/international/ccl-tests.el (shift):
Test for traditional lsh behavior, instead of assuming
lsh is like ash when bignums are present.
* test/src/data-tests.el (data-tests-logand)
(data-tests-logior, data-tests-logxor, data-tests-ash-lsh):
New tests.
doc/lispref/numbers.texi
lisp/subr.el
src/data.c
test/lisp/international/ccl-tests.el
test/src/data-tests.el