The shared-realm object_churn row falls back to the generic VM because the existing fixed-shape allocation loop rejects parallel IC mode. Sampling the exact eight-lane row shows Heap.headerForPayload and Heap.create dominating, plus substantial lock waiting. The fallback also makes one shared lane several times slower than one direct context before scaling is considered.
Scope:
- allow the established fixed-shape allocation loop to execute when parallel IC synchronization is active;
- resolve literal shapes through seqlock reads without mutating the isolated-mode prepared-shape cache;
- snapshot displaced elements and properties under their shared locks;
- publish replacements with an exact owner/child barrier and an element-lock presence check;
- preserve generic [[Set]] fallback if a concurrent exotic mutation invalidates the dense store;
- keep escaped frames and unsupported shapes on ordinary bytecode.
Acceptance:
- Preserve exact results and bytecode steps between isolated, synchronized, and fallback execution.
- Add a real multi-Thread regression using one shared compiled chunk and lane-local rings.
- Preserve Object.prototype identity, proxies/accessors/descriptors, restricted receivers, OOM state, barriers, and GC tracing.
- Show repeatable exact-parent wins in shared one-lane and eight-lane object_churn without regressing direct mode.
- Pass focused semantic/GC/no-GIL tests, full units once, and relevant TSan CI.
Initial exact-parent evidence after the implementation:
- shared one lane: 704 ms to 200 ms median (-71.6%), candidate won 7/7 alternating pairs;
- reduced eight lanes: 1.98 s to 0.93 s (-52.9%), candidate won 7/7;
- direct: 254 ms to 222 ms (-12.7%), candidate won 6/7;
- all checksums exact.