You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 8d5436e
Browse filesBrowse the repository at this point in the historyBrowse files
BoolDecoder.tree() returned -i for the leaf, which is -0 for DC_PRED and
B_DC_PRED: a heap number, not an int32. Every macroblock with DC
prediction deoptimized decode() (bailout "not int32" at
IMPLIED_BMODE[ymode]); --trace-opt showed it recompiled by Maglev ~140
times per run, never reaching TurboFan. Returning -i | 0 fixes it.
Also: blocks with only a DC coefficient add (dc + 4) >> 3 instead of
running the full inverse DCT (libwebp's TransformDC; the same result),
and the 16x16/8x8 predictions fill rows by loops instead of fill and
copyWithin calls.
1920x1080 q75: 184 -> 100 ms CPU (node --single-threaded), q30 -> 92 ms.
305 decodes (cwebp variants of 39 images: filters, sharpness,
segments, sharp YUV, alpha; libwebp samples) identical to before. A
--trace-deopt scan over the other codecs found no other deopt loops.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BsU2GAqbnFSNaYDBGD1Km2
0 commit comments