fix(es/compiler): Fix ARM64 segfault in nullish coalescing variable hoisting
This fixes a critical segfault issue on ARM64 platforms (AWS Graviton, macOS Apple Silicon) that was introduced in the nullish coalescing merge (#11157).
**Root Cause:**
The `visit_mut_module_items` and `visit_mut_stmts` functions were unconditionally restoring saved variable vectors at the end, even after those vectors had been properly moved and emptied during the nullish coalescing processing loop. This created a use-after-free scenario where:
1. Saved vectors were taken (emptied) at the start
2. New items were added to the instance vectors during processing
3. The instance vectors were properly consumed via `.take()`
4. The saved (empty) vectors were restored, discarding the properly processed state
On ARM64 architectures with stricter memory alignment requirements and different register calling conventions, this pattern exposed memory safety issues that manifested as segmentation faults.
**Solution:**
Move the variable restoration logic into each branch of the conditional, ensuring vectors are only restored in the appropriate control flow path and not after they've been properly consumed during nullish coalescing hoisting.
Fixes #11129
Fixes #11176
Fixes #11177
Fixes #11178
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>