Skip to content

process: keep the onEachMicrotaskTick nextTick hook armed across preloads - #34121

Open
robobun wants to merge 12 commits into
mainfrom
farm/e8733a35/fix-nexttick-preload-ordering
Open

process: keep the onEachMicrotaskTick nextTick hook armed across preloads#34121
robobun wants to merge 12 commits into
mainfrom
farm/e8733a35/fix-nexttick-preload-ordering

Gate GlobalObject::drainMicrotasks drain() on !isEmpty()

ee301a4
Select commit
Loading
Failed to load commit list.
Claude / Claude Code Review completed Jul 29, 2026 in 29m 27s

Code review found 1 potential issue

Found 1 candidates, confirmed 1. See review comments for details.

Details

Severity Count
🔴 Important 0
🟡 Nit 1
🟣 Pre-existing 0
Severity File:Line Issue
🟡 Nit src/jsc/bindings/ZigGlobalObject.cpp:3238 mustResetContext branch in JSNextTickQueue::drain is now dead after ee301a4

Annotations

Check warning on line 3238 in src/jsc/bindings/ZigGlobalObject.cpp

See this annotation in the file changed.

@claude claude / Claude Code Review

mustResetContext branch in JSNextTickQueue::drain is now dead after ee301a4

Nit: with both hot-path callers now gated on `!isEmpty()`, `mustResetContext` and the `m_asyncContextData[0]` clear at JSNextTickQueue.cpp:90-93 are provably unreachable — the only remaining ungated caller (`Process__dispatchOnBeforeExit`) enters with the persistent hook armed, so any nextTick queued during line 83's `vm.drainMicrotasks()` is drained (and field(0) reset to 0) by a nested pTAR before line 88 is checked. The earlier review this addresses suggested "drop the clear entirely, since w