Skip to content

Hand pool-finished transpiler and patch jobs back through their pointer, not a &mut receiver - #37778

Open
robobun wants to merge 6 commits into
mainfrom
farm/682d5526/transpiler-job-dispatch-raw-ptr
Open

Hand pool-finished transpiler and patch jobs back through their pointer, not a &mut receiver#37778
robobun wants to merge 6 commits into
mainfrom
farm/682d5526/transpiler-job-dispatch-raw-ptr

Hand pool-finished jobs back to their owner through the job pointer, …

a5e2eca
Select commit
Loading
Failed to load commit list.
Claude / Claude Code Review completed Aug 12, 2026 in 22m 40s

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/RuntimeTranspilerStore.rs:518-528 Same protector-vs-dealloc pattern remains in run_from_js_thread(&mut self)

Annotations

Check warning on line 528 in src/jsc/RuntimeTranspilerStore.rs

See this annotation in the file changed.

@claude claude / Claude Code Review

Same protector-vs-dealloc pattern remains in run_from_js_thread(&mut self)

`run_from_js_thread(&mut self)` (line 548) has the same protector-vs-dealloc shape this PR fixes in `dispatch_to_main_thread`: it calls `store.put(std::ptr::from_mut::<TranspilerJob>(self))`, and for the heap-spilled slots the new 96-import test creates, `HiveArrayFallback::put` Box-frees the receiver while `&mut self` is still a protected argument. The caller already holds the job as `*mut TranspilerJob` and invokes it via `(*job).run_from_js_thread()`, so the same `unsafe fn(this: *mut Self)`