[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 01/03: take_mpz optimization
From: |
Andy Wingo |
Subject: |
[Guile-commits] 01/03: take_mpz optimization |
Date: |
Fri, 7 Jan 2022 16:22:33 -0500 (EST) |
wingo pushed a commit to branch wip-inline-digits
in repository guile.
commit a30fcc6f0112e7917d075edf366af4b969a68b7d
Author: Andy Wingo <wingo@pobox.com>
AuthorDate: Fri Jan 7 20:28:05 2022 +0100
take_mpz optimization
* libguile/integers.c (take_mpz): Avoid making a bignum if the value is
fixable.
---
libguile/integers.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/libguile/integers.c b/libguile/integers.c
index 520cc6dbb..c7a6e17f8 100644
--- a/libguile/integers.c
+++ b/libguile/integers.c
@@ -299,9 +299,13 @@ normalize_bignum (struct scm_bignum *z)
static SCM
take_mpz (mpz_ptr mpz)
{
- struct scm_bignum *res = make_bignum_from_mpz (mpz);
+ SCM ret;
+ if (mpz_fits_slong_p (mpz))
+ ret = long_to_scm (mpz_get_si (mpz));
+ else
+ ret = scm_from_bignum (make_bignum_from_mpz (mpz));
mpz_clear (mpz);
- return normalize_bignum (res);
+ return ret;
}
static int