diff options
| author | Kevin Menard <kevin@nirvdrum.com> | 2026-01-21 14:07:20 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-21 19:07:20 +0000 |
| commit | cfa97af7e1426c76b769495ef4b1689be3b0a685 (patch) | |
| tree | 4f126e62323ea778984edeba3c490006a11248cd /spec/ruby/core/basicobject/basicobject_spec.rb | |
| parent | 6d0b47de86eef3a396ff2bf6eea731d2fb778ded (diff) | |
ZJIT: Introduce `GetLEP` HIR instruction (#15917)
This PR is a follow-up to #15816. There, I introduced the `GuardSuperMethodEntry` HIR instruction and that needed the LEP. The LEP was also used by `GetBlockHandler`. Consequently, the codegen for `invokesuper` ended up loading the LEP twice. By introducing a new HIR instruction, we can load the LEP once and use it in both `GetBlockHandler` and `GuardSuperMethodEntry`.
I also updated `IsBlockGiven`, which conditionally loaded the LEP. To ensure we only use `GetLEP` in the cases we need it, I lifted most of the `IsBlockGiven` handler to HIR. As an added benefit, this addressed a TODO that @tekknolagi had written: when `block_given?` is called outside of a method we can rewrite to a constant `false`.
We could use `GetLEP` in the handling of `Defined`, but that looked a bit more involved and I wanted to keep this PR focused, so I'm suggesting we handle that as future work.
Diffstat (limited to 'spec/ruby/core/basicobject/basicobject_spec.rb')
0 files changed, 0 insertions, 0 deletions
