Dictionary holes, one-dispatch switches and direct statics
Deleting from a large dictionary leaves a hole instead of shifting every later slot, a switch case on a literal dispatches once, and f.call, class statics, WeakMap methods and private fields skip the general paths.
delete removed a property's slot with Vec::remove and renumbered every slot above it in both indexes, so emptying a 2,100-key dictionary key by key was quadratic. In a map of at least 32 slots the slot now stays as a hole, and holes are compacted in one pass once they are half the slots (944169e5). Every reader that walks slots has to skip them, which meant converting about 300 sites by meaning, and the suites were also run with a hole left by every delete to reach them all. Dict-churn's delete phase takes 15 ms instead of 56 (QuickJS 9). A switch case on an integer or string literal now runs its load, === and branch as one superinstruction (5793b4c8; a 15-case integer switch in 87 ms instead of 133, QuickJS 95), and if (m === 0) does the same with the other branch sense (47c13227).
The rest of the day took general paths out of common calls. f.call(t, ...) enters f as a frame of the same loop rather than through the builtin dispatcher (894a1ba9; a million calls in 30 ms instead of 50, level with QuickJS); class statics and a function's own properties are read and written without the member walk (4d498c5c; two million A.count++ in 44 ms instead of 97); a WeakMap's methods are called directly (3e9df5d9); private field reads and writes skip a brand check the field lookup already answers (e789a836, c97d6247); a Proxy read goes straight to its [[Get]] and a forwarded Reflect.set stores into the slot (66bccdb4, 5d012480); a typed array's default species view skips the constructor reads (9fa097ec); a key added by o[k] = v is hashed once (35f73b1a); and a present element of a plain array is stored directly (8ec943a0). Writing the tests for the class-static lanes found three integrity bugs, fixed in 5f86d140: Object.freeze of a class left its statics writable, a non-extensible class still took new statics, and assigning to a function's own accessor overwrote the getter instead of calling the setter.