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
js-port: merge throwing instructions into one case in handler-free methods
Per-suspension-boundary emission step: in methods with no exception
wrapper (~91% of methods), a throwing instruction (method call, field/
array access, NEW, ...) no longer forces its own case + pc=N+1; break;
tail. That break+redispatch existed only so exception unwind could
resume at the right frame pc; with no handler wrapper a thrown error
propagates straight out of the generator and yield* resumes inline via
delegation, so it's pure overhead.
- computeJumpTargets takes forceThrowingTargets; only adds the post-throw
i+1 target when the method has an exception wrapper.
- mergeThrowing (gated !hasTryCatch, kill switch parparvm.js.merge.throwing.off)
extends the safe-strip to throwing ops.
Modest on its own (~0.21MB; case scaffolding is only ~7% of the bundle --
the bulk is per-bytecode statement emission, addressed by the
expression-folding work that follows) but a correct foundational step.
node --check clean; CI JS screenshot suite is the functional gate.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments