]> git.eshelyaron.com Git - emacs.git/commit
Modularize bignums better
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 28 Aug 2018 04:27:50 +0000 (21:27 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 28 Aug 2018 04:45:22 +0000 (21:45 -0700)
commit9abaf5f3581ecb76f30e8a6e7ee0e9633c133d1c
treec39260a6e26845b0a1307be98b38581468925c58
parentbf1b147b55e1328efca6e40181e79dd9a369895d
Modularize bignums better

* src/bignum.c, src/bignum.h: New files.  Only modules that
need to know how bignums are implemented should include
bignum.h.  Currently these are alloc.c, bignum.c (of course),
data.c, emacs.c, emacs-module.c, floatfns.c, fns.c, print.c.
* src/Makefile.in (base_obj): Add bignum.o.
* src/alloc.c (make_bignum_str): Move to bignum.c.
(make_number): Remove; replaced by bignum.c’s make_integer.
All callers changed.
* src/conf_post.h (ARG_NONNULL): New macro.
* src/json.c (json_to_lisp): Use it.
* src/data.c (Fnatnump):
Move NATNUMP’s implementation here from lisp.h.
* src/data.c (Fnumber_to_string):
* src/editfns.c (styled_format):
Move conversion of string to bignum to bignum_to_string, and
call it here.
* src/emacs-module.c (module_make_integer):
* src/floatfns.c (Fabs):
Simplify by using make_int.
* src/emacs.c: Include bignum.h, to expand its inline fns.
* src/floatfns.c (Ffloat): Simplify by using XFLOATINT.
(rounding_driver): Simplify by using double_to_bignum.
(rounddiv_q): Clarify use of temporaries.
* src/lisp.h: Move decls that need to know bignum internals to
bignum.h.  Do not include gmp.h or mini-gmp.h; that is now
bignum.h’s job.
(GMP_NUM_BITS, struct Lisp_Bignum, XBIGNUM, mpz_set_intmax):
Move to bignum.h.
(make_int): New function.
(NATNUMP): Remove; all callers changed to use Fnatnump.
(XFLOATINT): If arg is a bignum, use bignum_to_double, so that
bignum internals are not exposed here.
* src/print.c (print_vectorlike): Use SAFE_ALLOCA to avoid the
need for a record_unwind_protect_ptr.
14 files changed:
src/Makefile.in
src/alloc.c
src/bignum.c [new file with mode: 0644]
src/bignum.h [new file with mode: 0644]
src/conf_post.h
src/data.c
src/editfns.c
src/emacs-module.c
src/emacs.c
src/floatfns.c
src/fns.c
src/json.c
src/lisp.h
src/print.c