diff options
| author | Aaron Patterson <tenderlove@ruby-lang.org> | 2026-01-21 11:00:15 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-21 14:00:15 -0500 |
| commit | 6d0b47de86eef3a396ff2bf6eea731d2fb778ded (patch) | |
| tree | 6b0ce6fb78bc3530108a7269156dd1254d7bf5cd /spec/ruby/core/array/map_spec.rb | |
| parent | f3a5b0cdb5ecd47d9240ded667a90436c489fea7 (diff) | |
ZJIT: Add a CFG to the LIR backend (#15879)
We want to use [linear scan register allocation](https://bernsteinbear.com/blog/linear-scan/), but a prerequisite is having a CFG available. Previously LIR only had a linear block of instructions, this PR introduces a CFG to the LIR backend. I've done my best to ensure that the "hot path" machine code we generate is the same (as I was testing I noticed that side exit machine code was being dumped in a different order).
This PR doesn't make any changes to the existing register allocator, it simply introduces a CFG to LIR. The basic blocks in the LIR CFG always start with a label (the first instruction is a label) and the last 0, 1, or 2 instructions will be jump instructions. No other jump instructions should appear mid-block.
Diffstat (limited to 'spec/ruby/core/array/map_spec.rb')
0 files changed, 0 insertions, 0 deletions
