From: Fabrice Bellard Date: Sat, 31 Oct 2026 11:52:13 +0000 (+0100) Subject: fixed bigint decrementation with JS_LIMB_BITS=64 X-Git-Url: https://git.kaiwu.me/$%7BGITURL%7D$%7Bcid%7D?a=commitdiff_plain;h=ef5c6e356cd4d835d4e815cc969f2a1ec00dd16f;p=quickjs.git fixed bigint decrementation with JS_LIMB_BITS=64 --- diff --git a/quickjs.c b/quickjs.c index d494520..ad607ae 100644 --- a/quickjs.c +++ b/quickjs.c @@ -15088,7 +15088,8 @@ static no_inline __exception int js_unary_arith_slow(JSContext *ctx, { JSBigIntBuf buf2; JSBigInt *p2; - p2 = js_bigint_set_si(&buf2, 2 * (op - OP_dec) - 1); + v = 2 * (op - OP_dec) - 1; + p2 = js_bigint_set_si(&buf2, v); r = js_bigint_add(ctx, p1, p2, 0); } break; diff --git a/tests/test_bigint.js b/tests/test_bigint.js index c734678..c95fab7 100644 --- a/tests/test_bigint.js +++ b/tests/test_bigint.js @@ -112,6 +112,7 @@ function test_bigint2() function test_bigint3() { + var x; assert(Number(0xffffffffffffffffn), 18446744073709552000); assert(Number(-0xffffffffffffffffn), -18446744073709552000); assert(100000000000000000000n == 1e20, true); @@ -139,6 +140,8 @@ function test_bigint3() assert((2n) ** 127n, 170141183460469231731687303715884105728n); assert((-256n) ** 11n, -309485009821345068724781056n); assert((7n) ** 20n, 79792266297612001n); + x = 0x1ffffffffffffffffffffff01n; + assert(--x, 0x1ffffffffffffffffffffff00n); } /* pi computation */