about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorbellard <6490144+bellard@users.noreply.github.com>2023-12-01 17:56:22 +0100
committerbptato <nincsnevem662@gmail.com>2023-12-05 16:26:11 +0100
commit416a222d732f6e02d5404ac5308b51ab3d9ffd82 (patch)
tree7a35d6ead92a8042bf25e9613a9656413f5be1a8
parent2ca9220c1badad6b54240d907472b0fedc590eff (diff)
downloadchawan-416a222d732f6e02d5404ac5308b51ab3d9ffd82.tar.gz
bf_set_ui() fix (github issue #133)
-rw-r--r--lib/quickjs/libbf.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/lib/quickjs/libbf.c b/lib/quickjs/libbf.c
index fe1628e7..c48fdbb5 100644
--- a/lib/quickjs/libbf.c
+++ b/lib/quickjs/libbf.c
@@ -164,6 +164,21 @@ static inline slimb_t sat_add(slimb_t a, slimb_t b)
     return r;
 }
 
+static inline __maybe_unused limb_t shrd(limb_t low, limb_t high, long shift)
+{
+    if (shift != 0)
+        low = (low >> shift) | (high << (LIMB_BITS - shift));
+    return low;
+}
+
+static inline __maybe_unused limb_t shld(limb_t a1, limb_t a0, long shift)
+{
+    if (shift != 0)
+        return (a1 << shift) | (a0 >> (LIMB_BITS - shift));
+    else
+        return a1;
+}
+
 #define malloc(s) malloc_is_forbidden(s)
 #define free(p) free_is_forbidden(p)
 #define realloc(p, s) realloc_is_forbidden(p, s)
@@ -236,7 +251,7 @@ int bf_set_ui(bf_t *r, uint64_t a)
         a1 = a >> 32;
         shift = clz(a1);
         r->tab[0] = a0 << shift;
-        r->tab[1] = (a1 << shift) | (a0 >> (LIMB_BITS - shift));
+        r->tab[1] = shld(a1, a0, shift);
         r->expn = 2 * LIMB_BITS - shift;
     }
 #endif
@@ -5392,21 +5407,6 @@ int bf_acos(bf_t *r, const bf_t *a, limb_t prec, bf_flags_t flags)
 
 #endif /* LIMB_BITS != 64 */
 
-static inline __maybe_unused limb_t shrd(limb_t low, limb_t high, long shift)
-{
-    if (shift != 0)
-        low = (low >> shift) | (high << (LIMB_BITS - shift));
-    return low;
-}
-
-static inline __maybe_unused limb_t shld(limb_t a1, limb_t a0, long shift)
-{
-    if (shift != 0)
-        return (a1 << shift) | (a0 >> (LIMB_BITS - shift));
-    else
-        return a1;
-}
-
 #if LIMB_DIGITS == 19
 
 /* WARNING: hardcoded for b = 1e19. It is assumed that: