Skip to content

JSBigInt: sub-quadratic multiply/divide/toString/fromString, interruption, and a 1 << 30 bit limit - #507

Merged
sosukesuzuki merged 7 commits into
mainfrom
bigint-v8-parity
Aug 25, 2026
Merged

sosukesuzuki merged 7 commits into
mainfrom
bigint-v8-parity

JSBigInt: raise maxLengthBits from 1 << 20 to 1 << 30

4d4e09b
Select commit
Loading
Failed to load commit list.
Claude / Claude Code Review completed Aug 24, 2026 in 30m 43s

Code review found 2 potential issues

Found 2 candidates, confirmed 2. See review comments for details.

Details

Severity Count
🔴 Important 0
🟡 Nit 2
🟣 Pre-existing 0
Severity File:Line Issue
🟡 Nit JSTests/stress/big-int-out-of-memory-tests.js:8-9 Tests now allocating ~128MB BigInts lack $memoryLimited skip
🟡 Nit JSTests/stress/bigint-terminate-exponentiate.js:8-10 Unused x/y setup in bigint-terminate-{exponentiate,parse,tostring}.js

Annotations

Check warning on line 9 in JSTests/stress/big-int-out-of-memory-tests.js

See this annotation in the file changed.

@claude claude / Claude Code Review

Tests now allocating ~128MB BigInts lack $memoryLimited skip

With `maxLengthBits` at `1 << 30`, this test now holds a ~128 MB BigInt live but has no `//@ skip if $memoryLimited` (or `//@ memoryHog!`) directive, so it may OOM spuriously on memory-limited CI configs. Same omission in `bigint-exponential-oom.js` (`2n ** 1073741823n`) and the maxLength-boundary block of `bigint-inc-dec-in-place.js`. Since this PR already adds `//@ memoryHog!` / `//@ skip if $memoryLimited` to the codegen-OOM and `bigint-terminate-*` tests for the same reason, adding the direc

Check warning on line 10 in JSTests/stress/bigint-terminate-exponentiate.js

See this annotation in the file changed.

@claude claude / Claude Code Review

Unused x/y setup in bigint-terminate-{exponentiate,parse,tostring}.js

Copy-paste residue: `x` and `y` are built here but the operation under test (`3n ** 600000000n`) uses neither — same in `bigint-terminate-parse.js:8-9` (both unused) and `bigint-terminate-tostring.js:9` (`y` unused). Each unused value is a ~64 MB allocation eating into the 300 ms watchdog budget; worth trimming.