diff options
| author | Max Bernstein <ruby@bernsteinbear.com> | 2025-09-19 08:57:33 -0400 |
|---|---|---|
| committer | Max Bernstein <tekknolagi@gmail.com> | 2025-09-19 12:00:39 -0400 |
| commit | f0702c5aa32aa7092a4bb6c0c3e5863c4411e22d (patch) | |
| tree | 72c59f6d9f65eb3940057d05b4db6ee7836cbd83 | |
| parent | e40cd392e44c38ce93c573b9244f46bba868c09c (diff) | |
ZJIT: Also count fallback sends to ISEQs we can't direct send to
Make sure these parameter types are counted in the fallback def_types.
| -rw-r--r-- | zjit/src/hir.rs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/zjit/src/hir.rs b/zjit/src/hir.rs index 48cbd423b3..1fdef0e404 100644 --- a/zjit/src/hir.rs +++ b/zjit/src/hir.rs @@ -1864,6 +1864,9 @@ impl Function { // TODO(max): Handle other kinds of parameter passing let iseq = unsafe { get_def_iseq_ptr((*cme).def) }; if !can_direct_send(iseq) { + if let Insn::SendWithoutBlock { def_type: insn_def_type, .. } = &mut self.insns[insn_id.0] { + *insn_def_type = Some(MethodType::from(def_type)); + } self.push_insn_id(block, insn_id); continue; } self.push_insn(block, Insn::PatchPoint { invariant: Invariant::MethodRedefined { klass, method: mid, cme }, state }); |
