Root cause: nested cek_call_or_suspend calls on the same VM (from synchronous callbacks like dom-listen firing handler immediately) overwrote pending_cek before the first resume ran. Fix: _vm_suspension_to_dict snapshots pending_cek at capture time and restores it in the resume closure before calling resume_vm. This ensures each suspension's CEK state is preserved regardless of nested overwrite. test_bytecode_repeat.js: 4/4 pass (was 3/4). Source: 6 suspensions ✓ Bytecode: 6 suspensions ✓ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
56 KiB
56 KiB