summaryrefslogtreecommitdiff
path: root/spec/ruby
diff options
context:
space:
mode:
authorAaron Patterson <tenderlove@ruby-lang.org>2026-01-21 11:00:15 -0800
committerGitHub <noreply@github.com>2026-01-21 14:00:15 -0500
commit6d0b47de86eef3a396ff2bf6eea731d2fb778ded (patch)
tree6b0ce6fb78bc3530108a7269156dd1254d7bf5cd /spec/ruby
parentf3a5b0cdb5ecd47d9240ded667a90436c489fea7 (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')
0 files changed, 0 insertions, 0 deletions