Evidence
The July 14 publication leaves object_churn as the only direct JSC loss: 121.638 ms for zig-js versus 118.874 ms for JSC (2.3%). A fresh current-main ReleaseFast sample still places gc.allocObject / Heap.create / GcCellBacking.allocFn in the direct checkpoint-bounded quick loop.
The loop already allocates up to 17 objects at once when parallel_sync is enabled, because seventeen 61-step iterations can fit around the 1,024-step checkpoint boundary. The direct path uses the same safepoint budget but still performs one Heap.create per object. allocObjectBatch default-initializes every returned payload immediately, so tracing remains safe until the objects are consumed.
Scope
- use the existing checkpoint-bounded object batch in direct and shared modes
- preserve exact step accounting, checksum, fallback, and OOM-prefix behavior
- add focused telemetry proving direct GC contexts consume the batch path
- compare the exact pre-change and candidate runners with matching checksums
- retain only if the direct object-churn result improves; refresh README/report after material published changes