mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-29 07:04:09 +08:00
% now checks at run time whether both operands are integers (dividend |x| <= 2^53, nonzero integer divisor) when the integer-range analysis cannot prove it, and then uses i64 srem with JS sign-of-zero semantics; fractions, NaN, Infinity, zero divisors and huge dividends keep frem. Proven integers whose divisor may be zero now only check for zero. push() appends inline while len < cap (the runtime append is exactly a dense store at len plus len+1 there) and keeps a cold runtime call that grows storage otherwise. Element writes were already inlined by H04. Built on the H04 commits cherry-picked from perf/h04-array-reads (d88b58a1, a6057a52, 9109cb5a, 657aa3fb). New corpus programs 3150-integer-remainder and 3151-array-push-writes. Marginal vs perf/h04-array-reads, 15 runs: | workload | macOS | Linux (focused) | | numeric-kernels | -18.3% | -10.3% | | functional-pipeline | -8.8% | -4.3% | | template-render | -2.9% | (layout, sweep -0.6%) | | alloc-trees | -2.0% | (layout, sweep +0.3%) | | records-sort | -1.5% | -0.3% | | csv-numbers | -0.3% | +0.1% | geomean marginal: macOS -2.8%, Linux full -0.6%. vs perf/harness (incl. H04): macOS -14.4% (1.222x Node), Linux -16.0% (1.160x Node). Linux .text growth <= 3.6%. Tests: LLVM differential corpus 2008/2008 (Linux, 6 shards, release+dev), sanitized 3140/3150/3151 pass, backend+ir unit tests pass except one load-flaky zig COFF cache test that passes in isolation.