Parent: #432 Blocks: #429 Depends on: #431 Follow-up: #438
Extend the first loop-header OSR region into native loop bodies and backedges without losing exact VM semantics.
Acceptance
- Lower loop-carried block arguments with correct parallel edge copies.
- Execute supported numeric loop bodies and backedges natively across multiple iterations.
- Poll owner invalidation and VM safepoints inside generated loops, reconstructing the exact header/body state before any stale operation.
- Preserve exact instruction-step, budget, 1,024-step checkpoint, termination, and bytecode fallback behavior.
- Cover zero/one/many iterations, multiple loop-carried locals, nested control, guard failure, and invalidation races under normal and TSan gates.
Landed checkpoints
c152d97: OSR-only tier arbitration reaches optimizer backedges; AArch64 copies header-to-body SSA arguments, executes and path-accounts one complete numeric body iteration, and recovers updated loop-carried values.e65880c: supported numeric bodies apply body-to-header copies and stay native across multiple iterations; every header polls invalidation and budget/checkpoint distance, side-exiting exact current state before a pending boundary.e9d0dac: edge assignments use deterministic parallel-copy scheduling with reusable cycle scratch; swapped multi-local backedges, exact checkpoint recovery, and non-number guard refusal pass normal and TSan JIT gates.9bf1034: one equal-cost inner branch diamond stays native through both arms, a shared merge/latch, exact per-iteration accounting, and header checkpoint recovery; unsupported shapes still fail closed.6852f5f: an instrumented release marker deterministically races invalidation after completed native work; the next header poll reconstructs exact state under full normal and TSan JIT gates.
All declared first-region acceptance is complete. General unequal/deeper reducible CFGs continue in #438. Closure awaits the exact current main CI run.