install gmp memory functions that let libgc know about allocations
authorAndy Wingo <wingo@pobox.com>
Fri, 2 Dec 2011 10:22:46 +0000 (11:22 +0100)
committerAndy Wingo <wingo@pobox.com>
Fri, 2 Dec 2011 10:57:25 +0000 (11:57 +0100)
commitb57bf2724a254cf73e255b3d2bca0a7dcad6674a
tree3cd2f3db68ebc8e81d8cbcb77cbec76abbf0253e
parent738c899e4c1ab9d25cfbcd1010f34e0cce400bca
install gmp memory functions that let libgc know about allocations

* libguile/numbers.c (custom_gmp_malloc, custom_gmp_realloc,
  custom_gmp_free): New static functions used by GMP for allocation.
  These are just wrappers for scm_malloc, scm_realloc, and free.

  (scm_init_numbers): If scm_install_gmp_memory_functions is nonzero,
  use mp_set_memory_functions to configure GMP to use
  custom_gmp_{malloc,realloc,free} for memory allocation.

  (scm_bigprint): Ask gmp for the function used to deallocate the string
  returned by mpz_get_str.

* libguile/numbers.h: Declare scm_install_gmp_memory_functions.

* libguile/guile.c: When running the Guile binary, install the
  gmp_memory_functions.

Based on a patch by Mark H Weaver <mhw@netris.org>.
libguile/guile.c
libguile/numbers.c
libguile/numbers.h